From 5ae4eb9b8f2b03baebbb9da1eb2a6bee642c610d Mon Sep 17 00:00:00 2001 From: Vivianne Langdon Date: Mon, 14 Feb 2022 02:56:05 -0800 Subject: [PATCH 01/49] 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 cf3ce303..b826a54e 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 00000000..f7a30f41 --- /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 03/49] 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 f7a30f41..84ccb74f 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 340b306d2e6cc6e6fad36a51f15e4fe8bbe3e3e0 Mon Sep 17 00:00:00 2001 From: Vivianne Langdon Date: Sat, 26 Feb 2022 18:08:07 -0800 Subject: [PATCH 04/49] 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 54ccbe27..b059af6d 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 05/49] 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 f1faf30c..00000000 --- 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 11d7e403..e9333bd1 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 00000000..da1aa721 --- /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 06/49] 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 10032c55..d7ba9ffe 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 07/49] 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 da1aa721..1abbf5d4 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 d7ba9ffe..4944ada6 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 17eb8829..00cc7c02 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 08/49] 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 1abbf5d4..c12d59ea 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 09/49] 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 4944ada6..0ae95044 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 10/49] 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 c12d59ea..b6b41697 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 0ae95044..f6811614 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 00cc7c02..93789ae3 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 13/49] 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 b6b41697..8c77d525 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 zcmaKoPe>F|9LK+J->74Ia7Wu2YZrHP++8IsVq<5avIp5E5{wKz1U0DbB90EYko^JY zw5JGUPTdv?jJgEVDI%tGm+BITcCuhOqEud-Ol^n<>*oP{Al;j@Eoal-oCR2#_-WZ%b;uLMugK-{(!=`~-j|k%-vYy> z%7QhY*=@MZS3KitIWCA&zc(`I$*ItfyUnQO(ez&wTX9Z6_-yr@&e8;xd9E_ih z(Z}-BRM3|#d*S)@?!Uw|l+~P-)hak87->W~IREO+v&XliWA)R)IAk#BVKUT1Gkg@* z!mYg%d&TB{vl(?!f>3KG-wzYk{Gmx2SAVK+)VeyQ4kmxoB<6h@IptrAU1pLoG-UWS zo*7uDe}|C31#Rd;96jiRh7>X|kjELELjfi(;tJ4LP>iEuZH}CiBJU_94YRE*d8B;X z;ktnkt`PKQXxYI`pzHLox~@0strF!-{8!+*2P7``-I#m4sN={2{1=0Yluk`9mhbjl z`h~dEx~(0tedykotjWeaIp=kN(vnxtX`Y{(O7$mRD<_o+#ZjIq-+JZVG#E9F#ZDvP I59B|xf82kgdjJ3c delta 369 zcmX>Qd?%3Yjs^pRg~miSGnPQzr#B}$l-C&V3Yy!ThbGY z3xKo$kiP&(bEM}~rs-XX-vQ*WU|>*A$Vg30kr$E&s#oOz%9~{X1vt1_%z%6cAYUaT zx1?f$9j7ypp917>$jMJm+`ntbGzJDW5gp$3c?M?Y3zJhAtF<$LJTaidm>Jj@7#S2^ioR5MS@p8*<*ip- zugw1c{r?}N2Pn?)QhYKWlQ`!pvH4>DVhW;PCmS$HZ}w%fWn@uOR#w{F$1E?mxmAgu zMds#H-N1N$o39MqEMUENujbAHF+lX>4Ql3$I+I_hO`cq@o}pwXutMO5Ad8@qV4C0@ e!3{t~j6kfzB*g#<1qKEthKUX$n`Jc?GXemcjbGRR diff --git a/bookwyrm/static/css/fonts/icomoon.svg b/bookwyrm/static/css/fonts/icomoon.svg index 7dbbe0dc..c67c8b22 100644 --- a/bookwyrm/static/css/fonts/icomoon.svg +++ b/bookwyrm/static/css/fonts/icomoon.svg @@ -39,6 +39,7 @@ + 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 zcmaJU9_nZ0RBhqb_2X~G7O7tX17r1h zXRfr-ZUE*6^P_bdskCANgF5v<-EFKq8Sg$#JxTp)VQKc16W)Dymc}m{)2_4PVO-+R zDwnDCMaP|gc&7U|H9soWyrty^8)Xc&lRRYk{e$pMKIy8LeaT319zDuOdSnIX#r}#F z-Hz6xkDGfpN8_zHhKRowl!B~%(_UyzZAvTWf3ivh<)K3Bv6v8w(cf>hzDT8ms~i)y z0@>z)F0Lqp917?|2?i=Sgb`F>;RGgtTvau8Lv(b)GLi6}YTmFqFv$rj9ft3Rw(Z+C z-vT?deI?X&KBB4X?dFcfys-Zw^!;r@wzquA|36rP2y=Hw5g6^;pf zwm<#j;IL_l;b6`T1cLA8&2n$gb9J9Ose0;t^+Pt5Epo}guyi1~3Ji(s%e8{Rr{WLv CgOqUq delta 367 zcmbOev?HLNfsuiMft#U$ftkU;KUm+0Ux?iRD6$8L6OwZi3ofsnxQ2m&Q3l9wNlz>; z0MY_L{sJJ)k)BhTrgtHJ2avylfk8PTBQ-HaUPvCOUX=qVZy_F6zyJR;F#dlm&LYk%wn}Win7^2U=vSb6#>o>I#W$~Hv}I&bQdU;l{EA6lZu3J$ zeioUVPjv(1`E9;3aI=6cWVm}ZcMgo6%%f(`s599`Z8D?9p+9LIa$+?LI3=E7JK&c)OUY@%= zB0aGfB=!Z!=YV2?^qk5xpx7S<1{DhsHrZv7myw#7!oZ+r0#suL!tyWvlw<$}fnqs8 zz6uC)aI=_a zCYij%+*F|00ifk=AUxBH^LIghaS6~z9&mNcKo&Fe#mPL3)uBKW7$g`37?^>MXJk-# zDf&|3rTNRMmu)X^z2bUh_W$qy|3DQ$8(uQJ6o<-Ohs!Yje=N=-&Mfv;Y_-?|u>dhe z(QiPL7-39C) zX3%FaW-w>4X0T^q5H=Q6M#hX#K8R)pVi3)0EUIh{#i~FWgw>%mLqo#>2Zsg+2O!DF z0H*$hA5c&LBE|&@3V#-Wg@E#m4iJ2xq2V78GduikU~0gRfjW=?1H)!-ML`xBY2U2$ zcz&C&4BRZ>5WDAa2To6}P&H@NoxDMHG9$xe2eoWP34v9DB7!c01%iEomxMTkWEdEM ViglT!fKdSgOrRj#d|z!TBLME8r#Aoq delta 413 zcmaD6)DkFC?(gQtz{mgu8Z8XmVA^7Gpr-glZIOC|0tal-PM@DL53Il^`2vCg~2+Iq}ugL%k0>yfOd=(Jp z;ASz)$StV=ifsV$!FYikr*lqzGEkkLS^`io3WWFX+A%FRu>xqZ+8!WZ0gO$VWbzVo zQ-NZ4fR?v`@Juhx-v#-_B|zT*Er+UO2C|r$FHGiPtQH1&MT|j!fti5~=xc?SqAwLD z&ta5Qu6o(_^7<>TS7!hJ{{PRw`2Vpui#W5`DzW)u{$dKEUxDfwL7}qwE2AwVi;}Xk z(q=PedAZHHO8hJ`H=pVT#`D{JW#DE3n$Ey*_iFAO7(F>c&74tZ@&vWXlhxHT6zv37 n2;2~45mXXP6PzOm@-HJ0>o7@y!;*o4Y4Srx;mwEDmofqX)LCPK diff --git a/bookwyrm/static/css/vendor/icons.css b/bookwyrm/static/css/vendor/icons.css index 4bc7cca5..6477aee5 100644 --- a/bookwyrm/static/css/vendor/icons.css +++ b/bookwyrm/static/css/vendor/icons.css @@ -149,3 +149,6 @@ .icon-download:before { content: "\ea36"; } +.icon-barcode:before { + content: "\e937"; +} diff --git a/bookwyrm/static/js/bookwyrm.js b/bookwyrm/static/js/bookwyrm.js index f6811614..efd5cfff 100644 --- a/bookwyrm/static/js/bookwyrm.js +++ b/bookwyrm/static/js/bookwyrm.js @@ -687,6 +687,7 @@ let BookWyrm = new (class { }, }, (err) => { 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 9480197f..3f7b01ce 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 14/49] 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 efd5cfff..01c13091 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 15/49] 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 01c13091..39d5f664 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 16/49] 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 8c77d525..c000a1a8 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 39d5f664..a9cc5c6c 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 3f7b01ce..cfbb4e1c 100644 --- a/bookwyrm/templates/search/barcode_modal.html +++ b/bookwyrm/templates/search/barcode_modal.html @@ -8,9 +8,17 @@ {% endblock %} {% block modal-body %} -
+
+
+
+ +
+ +
+
- + +
+ + {{ form.subjects }} + + {% trans "Separate multiple values with commas." %} + + + {% include 'snippets/form_errors.html' with errors_list=form.subjects.errors id="desc_subjects" %} +
From 822868bf8786a0becc68fdb1613684f3598d84cb Mon Sep 17 00:00:00 2001 From: Vivianne Langdon Date: Sat, 12 Mar 2022 04:17:11 -0800 Subject: [PATCH 26/49] fish autocompletions --- bw-dev | 1 + complete_bwdev.fish | 97 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 complete_bwdev.fish diff --git a/bw-dev b/bw-dev index 41971bb8..1cc93026 100755 --- a/bw-dev +++ b/bw-dev @@ -225,6 +225,7 @@ case "$CMD" in *) set +x # No need to echo echo echo "Unrecognised command. Try:" + echo " setup" echo " up [container]" echo " service_ports_web" echo " initdb" diff --git a/complete_bwdev.fish b/complete_bwdev.fish new file mode 100644 index 00000000..9cd8f260 --- /dev/null +++ b/complete_bwdev.fish @@ -0,0 +1,97 @@ +# bw-dev auto-completions for fish-shell. +# copy this to ~./.config/fish/completions/ with the name `bw-dev.fish` +# this will only work if renamed to `bw-dev.fish`. + +set -l commands up \ +service_ports_web \ +initdb \ +resetdb \ +makemigrations \ +migrate \ +bash \ +shell \ +dbshell \ +restart_celery \ +pytest \ +collectstatic \ +makemessages \ +compilemessages \ +update_locales \ +build \ +clean \ +black \ +prettier \ +stylelint \ +formatters \ +compilescss \ +collectstatic_watch \ +populate_streams \ +populate_lists_streams \ +populate_suggestions \ +generate_thumbnails \ +generate_preview_images \ +copy_media_to_s3 \ +set_cors_to_s3 \ +setup \ +admin_code \ +runweb + +function __bw_complete -a cmds cmd desc + complete -f -c bw-dev -n "not __fish_seen_subcommand_from $cmds" -a $cmd -d $desc +end + + +__bw_complete "$commands" "up" "bring one or all service(s) up" +__bw_complete "$commands" "service_ports_web" "run command on the web container with its portsenabled and mapped" +__bw_complete "$commands" "initdb" "initialize database" +__bw_complete "$commands" "resetdb" "!! WARNING !! reset database" +__bw_complete "$commands" "makemigrations" "create new migrations" +__bw_complete "$commands" "migrate" "perform all migrations" +__bw_complete "$commands" "bash" "open up bash within the web container" +__bw_complete "$commands" "shell" "open the Python shell within the web container" +__bw_complete "$commands" "dbshell" "open the database shell within the web container" +__bw_complete "$commands" "restart_celery" "restart the celery container" +__bw_complete "$commands" "pytest" "run unit tests" +__bw_complete "$commands" "collectstatic" "copy changed static files into the installation" +__bw_complete "$commands" "makemessages" "extract all localizable messages from the code" +__bw_complete "$commands" "compilemessages" "compile .po localization files to .mo" +__bw_complete "$commands" "update_locales" "run makemessages and compilemessages for the en_US and additional locales" +__bw_complete "$commands" "build" "build the containers" +__bw_complete "$commands" "clean" "bring the cluster down and remove all containers" +__bw_complete "$commands" "black" "run Python code formatting tool" +__bw_complete "$commands" "prettier" "run JavaScript code formatting tool" +__bw_complete "$commands" "stylelint" "run SCSS linting tool" +__bw_complete "$commands" "formatters" "run multiple formatter tools" +__bw_complete "$commands" "compilescss" "compile the SCSS layouts to CSS" +__bw_complete "$commands" "populate_streams" "populate the main streams" +__bw_complete "$commands" "populate_lists_streams" "populate streams for book lists" +__bw_complete "$commands" "populate_suggestions" "populate book suggestions" +__bw_complete "$commands" "generate_thumbnails" "generate book thumbnails" +__bw_complete "$commands" "generate_preview_images" "generate book preview images" +__bw_complete "$commands" "collectstatic_watch" "watch filesystem and copy changed static files" +__bw_complete "$commands" "copy_media_to_s3" "run the `s3 cp` command to copy media to a bucket on S3" +__bw_complete "$commands" "sync_media_to_s3" "run the `s3 sync` command to sync media with a bucket on S3" +__bw_complete "$commands" "set_cors_to_s3" "push a CORS configuration defined in .json to s3" +__bw_complete "$commands" "setup" "perform first-time setup" +__bw_complete "$commands" "admin_code" "get the admin code" +__bw_complete "$commands" "runweb" "run a command on the web container" + +complete -f -c bw-dev -n "__fish_seen_subcommand_from up"\ + -a "(docker-compose config --service)" + +complete -x -c bw-dev -n "__fish_seen_subcommand_from migrate" + +complete -x -c bw-dev -n "__fish_seen_subcommand_from pytest"\ + -a "bookwyrm/tests/**.py" + +complete -x -c bw-dev -n "__fish_seen_subcommand_from populate_streams"\ + -a "--stream=" -d "pick a single stream to populate" + +complete -x -c bw-dev -n "__fish_seen_subcommand_from populate_streams"\ + -l stream -a "home local books" + +complete -x -c bw-dev -n "__fish_seen_subcommand_from generate_preview_images"\ + -a "--all" -d "Generates images for ALL types: site, users and books. Can use a lot of computing power." + +complete -x -c bw-dev -n "__fish_seen_subcommand_from set_cors_to_s3"\ + -a "**.json" From 4530d4917a7513beea762b4a68b43013ac9b7815 Mon Sep 17 00:00:00 2001 From: Vivianne Langdon Date: Sat, 12 Mar 2022 04:24:22 -0800 Subject: [PATCH 27/49] make more compact with a function --- complete_bwdev.fish | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/complete_bwdev.fish b/complete_bwdev.fish index 9cd8f260..426ab0d4 100644 --- a/complete_bwdev.fish +++ b/complete_bwdev.fish @@ -40,7 +40,6 @@ function __bw_complete -a cmds cmd desc complete -f -c bw-dev -n "not __fish_seen_subcommand_from $cmds" -a $cmd -d $desc end - __bw_complete "$commands" "up" "bring one or all service(s) up" __bw_complete "$commands" "service_ports_web" "run command on the web container with its portsenabled and mapped" __bw_complete "$commands" "initdb" "initialize database" @@ -76,22 +75,16 @@ __bw_complete "$commands" "setup" "perform first-time setup" __bw_complete "$commands" "admin_code" "get the admin code" __bw_complete "$commands" "runweb" "run a command on the web container" -complete -f -c bw-dev -n "__fish_seen_subcommand_from up"\ - -a "(docker-compose config --service)" -complete -x -c bw-dev -n "__fish_seen_subcommand_from migrate" +function __bw_complete_subcommand -a cmd + complete -f -c bw-dev -n "__fish_seen_subcommand_from $cmd" $argv[2..-1] +end -complete -x -c bw-dev -n "__fish_seen_subcommand_from pytest"\ - -a "bookwyrm/tests/**.py" - -complete -x -c bw-dev -n "__fish_seen_subcommand_from populate_streams"\ - -a "--stream=" -d "pick a single stream to populate" - -complete -x -c bw-dev -n "__fish_seen_subcommand_from populate_streams"\ - -l stream -a "home local books" - -complete -x -c bw-dev -n "__fish_seen_subcommand_from generate_preview_images"\ - -a "--all" -d "Generates images for ALL types: site, users and books. Can use a lot of computing power." - -complete -x -c bw-dev -n "__fish_seen_subcommand_from set_cors_to_s3"\ - -a "**.json" +__bw_complete_subcommand "up" -a "(docker-compose config --service)" +__bw_complete_subcommand "migrate" +__bw_complete_subcommand "pytest" -a "bookwyrm/tests/**.py" +__bw_complete_subcommand "populate_streams" -a "--stream=" -d "pick a single stream to populate" +__bw_complete_subcommand "populate_streams" -l stream -a "home local books" +__bw_complete_subcommand "generate_preview_images" -a "--all"\ + -d "Generates images for ALL types: site, users and books. Can use a lot of computing power." +__bw_complete_subcommand "set_cors_to_s3" -a "**.json" From 3358c233ea9b3c2816eded5bfd306e3ad3df2936 Mon Sep 17 00:00:00 2001 From: Vivianne Langdon Date: Sat, 12 Mar 2022 04:38:42 -0800 Subject: [PATCH 28/49] remove no-up autocomplete --- complete_bwdev.fish | 1 - 1 file changed, 1 deletion(-) diff --git a/complete_bwdev.fish b/complete_bwdev.fish index 426ab0d4..c1f28dd5 100644 --- a/complete_bwdev.fish +++ b/complete_bwdev.fish @@ -81,7 +81,6 @@ function __bw_complete_subcommand -a cmd end __bw_complete_subcommand "up" -a "(docker-compose config --service)" -__bw_complete_subcommand "migrate" __bw_complete_subcommand "pytest" -a "bookwyrm/tests/**.py" __bw_complete_subcommand "populate_streams" -a "--stream=" -d "pick a single stream to populate" __bw_complete_subcommand "populate_streams" -l stream -a "home local books" From 306f177d5586263228928f4fcde46446c1b47823 Mon Sep 17 00:00:00 2001 From: Vivianne Langdon Date: Sat, 12 Mar 2022 21:12:25 -0700 Subject: [PATCH 29/49] add SASS_PROCESSOR_ENABLED = True --- bookwyrm/settings.py | 1 + 1 file changed, 1 insertion(+) diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index 7d04a046..6911d232 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -188,6 +188,7 @@ STATICFILES_FINDERS = [ ] SASS_PROCESSOR_INCLUDE_FILE_PATTERN = r"^.+\.[s]{0,1}(?:a|c)ss$" +SASS_PROCESSOR_ENABLED = True # minify css is production but not dev if not DEBUG: From 0c87ee1d4b83b605a2735bf8ddc0cac418386b2b Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 13 Mar 2022 11:36:31 -0700 Subject: [PATCH 30/49] Fixes instructions on admin themes view --- bookwyrm/management/commands/compilethemes.py | 32 ------------------- bookwyrm/templates/settings/themes.html | 2 +- bw-dev | 2 +- 3 files changed, 2 insertions(+), 34 deletions(-) delete mode 100644 bookwyrm/management/commands/compilethemes.py diff --git a/bookwyrm/management/commands/compilethemes.py b/bookwyrm/management/commands/compilethemes.py deleted file mode 100644 index e3fba632..00000000 --- a/bookwyrm/management/commands/compilethemes.py +++ /dev/null @@ -1,32 +0,0 @@ -""" Compile themes """ -import os -from django.contrib.staticfiles.utils import get_files -from django.contrib.staticfiles.storage import StaticFilesStorage -from django.core.files.base import ContentFile -from django.core.management.base import BaseCommand - -import sass -from sass_processor.processor import SassProcessor - -# pylint: disable=line-too-long -class Command(BaseCommand): - """Compile themes""" - - help = "Compile theme scss files" - - # pylint: disable=no-self-use,unused-argument - def handle(self, *args, **options): - """compile themes""" - storage = StaticFilesStorage() - theme_files = list(get_files(storage, location="css/themes")) - theme_files = [t for t in theme_files if t[-5:] == ".scss"] - for filename in theme_files: - path = storage.path(filename) - content = sass.compile( - filename=path, - include_paths=SassProcessor.include_paths, - ) - basename, _ = os.path.splitext(path) - destination_filename = basename + ".css" - print(f"saving f{destination_filename}") - storage.save(destination_filename, ContentFile(content)) diff --git a/bookwyrm/templates/settings/themes.html b/bookwyrm/templates/settings/themes.html index d3dac804..44d0cece 100644 --- a/bookwyrm/templates/settings/themes.html +++ b/bookwyrm/templates/settings/themes.html @@ -29,7 +29,7 @@ {% trans "Copy the theme file into the bookwyrm/static/css/themes directory on your server from the command line." %}
  • - {% trans "Run ./bw-dev compilescss." %} + {% trans "Run ./bw-dev collectstatic." %}
  • {% trans "Add the file name using the form below to make it available in the application interface." %} diff --git a/bw-dev b/bw-dev index 1cc93026..b4b8cc0d 100755 --- a/bw-dev +++ b/bw-dev @@ -154,7 +154,7 @@ case "$CMD" in --config dev-tools/.stylelintrc.js ;; compilescss) - runweb python manage.py compilethemes + runweb python manage.py compilescss runweb python manage.py collectstatic --no-input ;; collectstatic_watch) From 2f124e00d123a0ecdf932b58ee4331125b826873 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 13 Mar 2022 11:57:46 -0700 Subject: [PATCH 31/49] Updates locales --- locale/de_DE/LC_MESSAGES/django.po | 60 +++++++------- locale/en_US/LC_MESSAGES/django.po | 120 +++++++++++++-------------- locale/es_ES/LC_MESSAGES/django.mo | Bin 83719 -> 83719 bytes locale/es_ES/LC_MESSAGES/django.po | 60 +++++++------- locale/fr_FR/LC_MESSAGES/django.po | 60 +++++++------- locale/gl_ES/LC_MESSAGES/django.mo | Bin 89448 -> 89448 bytes locale/gl_ES/LC_MESSAGES/django.po | 60 +++++++------- locale/it_IT/LC_MESSAGES/django.mo | Bin 90758 -> 90758 bytes locale/it_IT/LC_MESSAGES/django.po | 60 +++++++------- locale/lt_LT/LC_MESSAGES/django.mo | Bin 84886 -> 84886 bytes locale/lt_LT/LC_MESSAGES/django.po | 60 +++++++------- locale/no_NO/LC_MESSAGES/django.mo | Bin 79871 -> 79871 bytes locale/no_NO/LC_MESSAGES/django.po | 60 +++++++------- locale/pt_BR/LC_MESSAGES/django.mo | Bin 90058 -> 90058 bytes locale/pt_BR/LC_MESSAGES/django.po | 60 +++++++------- locale/pt_PT/LC_MESSAGES/django.mo | Bin 72909 -> 72909 bytes locale/pt_PT/LC_MESSAGES/django.po | 60 +++++++------- locale/sv_SE/LC_MESSAGES/django.mo | Bin 87935 -> 87935 bytes locale/sv_SE/LC_MESSAGES/django.po | 60 +++++++------- locale/zh_Hans/LC_MESSAGES/django.po | 60 +++++++------- locale/zh_Hant/LC_MESSAGES/django.po | 60 +++++++------- 21 files changed, 417 insertions(+), 423 deletions(-) diff --git a/locale/de_DE/LC_MESSAGES/django.po b/locale/de_DE/LC_MESSAGES/django.po index e458e84b..f7ed0969 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-01 19:48+0000\n" -"PO-Revision-Date: 2022-03-01 20:16\n" +"POT-Creation-Date: 2022-03-08 19:55+0000\n" +"PO-Revision-Date: 2022-03-08 21:16\n" "Last-Translator: Mouse Reeve \n" "Language-Team: German\n" "Language: de\n" @@ -261,73 +261,73 @@ msgstr "Zitate" msgid "Everything else" msgstr "Alles andere" -#: bookwyrm/settings.py:211 +#: bookwyrm/settings.py:207 msgid "Home Timeline" msgstr "Start-Zeitleiste" -#: bookwyrm/settings.py:211 +#: bookwyrm/settings.py:207 msgid "Home" msgstr "Startseite" -#: bookwyrm/settings.py:212 +#: bookwyrm/settings.py:208 msgid "Books Timeline" msgstr "Bücher-Zeitleiste" -#: bookwyrm/settings.py:212 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:208 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:284 +#: bookwyrm/settings.py:280 msgid "English" msgstr "English (Englisch)" -#: bookwyrm/settings.py:285 +#: bookwyrm/settings.py:281 msgid "Deutsch (German)" msgstr "Deutsch" -#: bookwyrm/settings.py:286 +#: bookwyrm/settings.py:282 msgid "Español (Spanish)" msgstr "Español (Spanisch)" -#: bookwyrm/settings.py:287 +#: bookwyrm/settings.py:283 msgid "Galego (Galician)" msgstr "Galego (Galizisch)" -#: bookwyrm/settings.py:288 +#: bookwyrm/settings.py:284 msgid "Italiano (Italian)" msgstr "Italiano (Italienisch)" -#: bookwyrm/settings.py:289 +#: bookwyrm/settings.py:285 msgid "Français (French)" msgstr "Français (Französisch)" -#: bookwyrm/settings.py:290 +#: bookwyrm/settings.py:286 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Litauisch)" -#: bookwyrm/settings.py:291 +#: bookwyrm/settings.py:287 msgid "Norsk (Norwegian)" msgstr "Norsk (Norwegisch)" -#: bookwyrm/settings.py:292 +#: bookwyrm/settings.py:288 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (brasilianisches Portugiesisch)" -#: bookwyrm/settings.py:293 +#: bookwyrm/settings.py:289 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Portugiesisch)" -#: bookwyrm/settings.py:294 +#: bookwyrm/settings.py:290 msgid "Svenska (Swedish)" msgstr "Svenska (Schwedisch)" -#: bookwyrm/settings.py:295 +#: bookwyrm/settings.py:291 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (vereinfachtes Chinesisch)" -#: bookwyrm/settings.py:296 +#: bookwyrm/settings.py:292 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Chinesisch, traditionell)" @@ -356,54 +356,54 @@ msgstr "Etwas ist schief gelaufen! Tut uns leid." msgid "About" msgstr "Über" -#: bookwyrm/templates/about/about.html:19 +#: bookwyrm/templates/about/about.html:20 #: bookwyrm/templates/get_started/layout.html:20 #, python-format msgid "Welcome to %(site_name)s!" msgstr "Willkommen auf %(site_name)s!" -#: bookwyrm/templates/about/about.html:23 +#: bookwyrm/templates/about/about.html:24 #, python-format msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the BookWyrm network, this community is unique." msgstr "%(site_name)s ist Teil von BookWyrm, ein Netzwerk unabhängiger, selbstverwalteter Gemeinschaften für Leser*innen. Obwohl du dich nahtlos mit anderen Benutzer*innen überall im BookWyrm-Netzwerk austauschen kannst, ist diese Gemeinschaft einzigartig." -#: bookwyrm/templates/about/about.html:40 +#: bookwyrm/templates/about/about.html:42 #, python-format msgid "%(title)s is %(site_name)s's most beloved book, with an average rating of %(rating)s out of 5." msgstr "%(title)s ist mit einer durchschnittlichen Bewertung von %(rating)s (von 5) das beliebtestes Buch auf %(site_name)s." -#: bookwyrm/templates/about/about.html:59 +#: bookwyrm/templates/about/about.html:61 #, python-format msgid "More %(site_name)s users want to read %(title)s than any other book." msgstr "Das Buch %(title)s wollen mehr Benutzer*innen von %(site_name)s lesen als jedes andere Buch." -#: bookwyrm/templates/about/about.html:78 +#: bookwyrm/templates/about/about.html:80 #, python-format msgid "%(title)s has the most divisive ratings of any book on %(site_name)s." msgstr "%(title)s hat die unterschiedlichsten Bewertungen aller Bücher auf %(site_name)s." -#: bookwyrm/templates/about/about.html:89 +#: bookwyrm/templates/about/about.html:91 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." msgstr "Verfolge deine Lektüre, sprich über Bücher, schreibe Besprechungen und entdecke, was Du als Nächstes lesen könntest. BookWyrm ist eine Software im menschlichen Maßstab, die immer übersichtlich, werbefrei, persönlich, und gemeinschaftsorientiert sein wird. Wenn du Feature-Anfragen, Fehlerberichte oder große Träume hast, wende dich an und verschaffe dir Gehör." -#: bookwyrm/templates/about/about.html:96 +#: bookwyrm/templates/about/about.html:98 msgid "Meet your admins" msgstr "Lerne deinen Admins kennen" -#: bookwyrm/templates/about/about.html:99 +#: bookwyrm/templates/about/about.html:101 #, python-format msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the code of conduct, and respond when users report spam and bad behavior." msgstr "Die Moderator*innen und Administrator*innen von %(site_name)s halten diese Seite am Laufen. Beachte den Verhaltenskodex und melde, wenn andere Benutzer*innen dagegen verstoßen oder Spam verbreiten." -#: bookwyrm/templates/about/about.html:113 +#: bookwyrm/templates/about/about.html:115 msgid "Moderator" msgstr "Moderator*in" -#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:132 +#: bookwyrm/templates/about/about.html:117 bookwyrm/templates/layout.html:132 msgid "Admin" msgstr "Administration" -#: bookwyrm/templates/about/about.html:131 +#: bookwyrm/templates/about/about.html:133 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/snippets/status/status_options.html:35 #: bookwyrm/templates/snippets/user_options.html:14 diff --git a/locale/en_US/LC_MESSAGES/django.po b/locale/en_US/LC_MESSAGES/django.po index a6941e87..76cfb32b 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-08 19:55+0000\n" +"POT-Creation-Date: 2022-03-13 18:56+0000\n" "PO-Revision-Date: 2021-02-28 17:19-0800\n" "Last-Translator: Mouse Reeve \n" "Language-Team: English \n" @@ -221,7 +221,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 @@ -262,73 +262,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 "" -#: bookwyrm/settings.py:281 +#: bookwyrm/settings.py:282 msgid "Deutsch (German)" msgstr "" -#: bookwyrm/settings.py:282 +#: bookwyrm/settings.py:283 msgid "Español (Spanish)" msgstr "" -#: 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 "" -#: 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 "" @@ -728,14 +728,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 @@ -749,20 +749,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 "" @@ -771,9 +771,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 @@ -874,8 +874,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 @@ -1182,7 +1182,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 "" @@ -1216,7 +1216,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 "" @@ -1292,7 +1292,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 "" @@ -1806,7 +1806,8 @@ msgid "No users found for \"%(query)s\"" msgstr "" #: 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 @@ -1824,9 +1825,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 @@ -2298,7 +2299,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 "" @@ -2468,7 +2469,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 "" @@ -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 "" #: bookwyrm/templates/shelf/edit_shelf_form.html:5 @@ -4216,10 +4218,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" @@ -4343,24 +4341,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 "" @@ -4851,10 +4849,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 "" diff --git a/locale/es_ES/LC_MESSAGES/django.mo b/locale/es_ES/LC_MESSAGES/django.mo index cdb48a306eb2e333416e2cd803bb8ce01c4274c3..43db15d9d564c104654b5a2f27f668fb4ecbd918 100644 GIT binary patch delta 22 dcmZqgV{Pwa-5`93-9o|0(8|zkv(%xtEdW=?2ps?b delta 22 dcmZqgV{Pwa-5`93-AKXE(#qI!v(%xtEdW>D2qORh diff --git a/locale/es_ES/LC_MESSAGES/django.po b/locale/es_ES/LC_MESSAGES/django.po index 51f96904..98d4e124 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-03-01 19:48+0000\n" -"PO-Revision-Date: 2022-03-02 19:39\n" +"POT-Creation-Date: 2022-03-08 19:55+0000\n" +"PO-Revision-Date: 2022-03-08 21:16\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Spanish\n" "Language: es\n" @@ -261,73 +261,73 @@ msgstr "Citas" msgid "Everything else" msgstr "Todo lo demás" -#: bookwyrm/settings.py:211 +#: bookwyrm/settings.py:207 msgid "Home Timeline" msgstr "Línea de tiempo principal" -#: bookwyrm/settings.py:211 +#: bookwyrm/settings.py:207 msgid "Home" msgstr "Inicio" -#: bookwyrm/settings.py:212 +#: bookwyrm/settings.py:208 msgid "Books Timeline" msgstr "Línea temporal de libros" -#: bookwyrm/settings.py:212 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:208 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:284 +#: bookwyrm/settings.py:280 msgid "English" msgstr "English (Inglés)" -#: bookwyrm/settings.py:285 +#: bookwyrm/settings.py:281 msgid "Deutsch (German)" msgstr "Deutsch (Alemán)" -#: bookwyrm/settings.py:286 +#: bookwyrm/settings.py:282 msgid "Español (Spanish)" msgstr "Español" -#: bookwyrm/settings.py:287 +#: bookwyrm/settings.py:283 msgid "Galego (Galician)" msgstr "Galego (Gallego)" -#: bookwyrm/settings.py:288 +#: bookwyrm/settings.py:284 msgid "Italiano (Italian)" msgstr "Italiano" -#: bookwyrm/settings.py:289 +#: bookwyrm/settings.py:285 msgid "Français (French)" msgstr "Français (Francés)" -#: bookwyrm/settings.py:290 +#: bookwyrm/settings.py:286 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Lituano)" -#: bookwyrm/settings.py:291 +#: bookwyrm/settings.py:287 msgid "Norsk (Norwegian)" msgstr "Norsk (Noruego)" -#: bookwyrm/settings.py:292 +#: bookwyrm/settings.py:288 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (Portugués brasileño)" -#: bookwyrm/settings.py:293 +#: bookwyrm/settings.py:289 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Portugués europeo)" -#: bookwyrm/settings.py:294 +#: bookwyrm/settings.py:290 msgid "Svenska (Swedish)" msgstr "Svenska (Sueco)" -#: bookwyrm/settings.py:295 +#: bookwyrm/settings.py:291 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Chino simplificado)" -#: bookwyrm/settings.py:296 +#: bookwyrm/settings.py:292 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Chino tradicional)" @@ -356,54 +356,54 @@ msgstr "¡Algo salió mal! Disculpa." msgid "About" msgstr "Acerca de" -#: bookwyrm/templates/about/about.html:19 +#: bookwyrm/templates/about/about.html:20 #: bookwyrm/templates/get_started/layout.html:20 #, python-format msgid "Welcome to %(site_name)s!" msgstr "¡Bienvenido a %(site_name)s!" -#: bookwyrm/templates/about/about.html:23 +#: bookwyrm/templates/about/about.html:24 #, python-format msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the BookWyrm network, this community is unique." msgstr "%(site_name)s es parte de BookWyrm, una red de comunidades independientes y autogestionadas para lectores. Aunque puedes interactuar sin problemas con los usuarios de cualquier parte de la red BookWyrm, esta comunidad es única." -#: bookwyrm/templates/about/about.html:40 +#: bookwyrm/templates/about/about.html:42 #, python-format msgid "%(title)s is %(site_name)s's most beloved book, with an average rating of %(rating)s out of 5." msgstr "%(title)s es el libro más querido de %(site_name)s, con una valoración promedio de %(rating)s sobre 5." -#: bookwyrm/templates/about/about.html:59 +#: bookwyrm/templates/about/about.html:61 #, python-format msgid "More %(site_name)s users want to read %(title)s than any other book." msgstr "Los usuarios de %(site_name)s quieren leer %(title)s más que cualquier otro libro." -#: bookwyrm/templates/about/about.html:78 +#: bookwyrm/templates/about/about.html:80 #, python-format msgid "%(title)s has the most divisive ratings of any book on %(site_name)s." msgstr "Las valoraciones de %(title)s están más divididas que las de cualquier otro libro en %(site_name)s." -#: bookwyrm/templates/about/about.html:89 +#: bookwyrm/templates/about/about.html:91 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." msgstr "Haz un registro de tu lectura, habla sobre libros, escribe reseñas y descubre qué leer a continuación. BookWyrm es un software de escala humana, siempre sin anuncios, anticorporativo y orientado a la comunidad, diseñado para ser pequeño y personal. Si tienes solicitudes de características, informes de errores o grandes sueños, contacta y hazte oír." -#: bookwyrm/templates/about/about.html:96 +#: bookwyrm/templates/about/about.html:98 msgid "Meet your admins" msgstr "Conoce a tus administradores" -#: bookwyrm/templates/about/about.html:99 +#: bookwyrm/templates/about/about.html:101 #, python-format msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the code of conduct, and respond when users report spam and bad behavior." msgstr "Los moderadores y administradores de %(site_name)s mantienen el sitio en funcionamiento, hacen cumplir el código de conducta y responden cuando los usuarios informan de spam y mal comportamiento." -#: bookwyrm/templates/about/about.html:113 +#: bookwyrm/templates/about/about.html:115 msgid "Moderator" msgstr "Moderador" -#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:132 +#: bookwyrm/templates/about/about.html:117 bookwyrm/templates/layout.html:132 msgid "Admin" msgstr "Administrador" -#: bookwyrm/templates/about/about.html:131 +#: bookwyrm/templates/about/about.html:133 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/snippets/status/status_options.html:35 #: bookwyrm/templates/snippets/user_options.html:14 diff --git a/locale/fr_FR/LC_MESSAGES/django.po b/locale/fr_FR/LC_MESSAGES/django.po index 31ebd43c..6c5d17c4 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-01 19:48+0000\n" -"PO-Revision-Date: 2022-03-02 12:24\n" +"POT-Creation-Date: 2022-03-08 19:55+0000\n" +"PO-Revision-Date: 2022-03-08 21:16\n" "Last-Translator: Mouse Reeve \n" "Language-Team: French\n" "Language: fr\n" @@ -261,73 +261,73 @@ msgstr "Citations" msgid "Everything else" msgstr "Tout le reste" -#: bookwyrm/settings.py:211 +#: bookwyrm/settings.py:207 msgid "Home Timeline" msgstr "Mon fil d’actualité" -#: bookwyrm/settings.py:211 +#: bookwyrm/settings.py:207 msgid "Home" msgstr "Accueil" -#: bookwyrm/settings.py:212 +#: bookwyrm/settings.py:208 msgid "Books Timeline" msgstr "Actualité de mes livres" -#: bookwyrm/settings.py:212 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:208 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:284 +#: bookwyrm/settings.py:280 msgid "English" msgstr "English" -#: bookwyrm/settings.py:285 +#: bookwyrm/settings.py:281 msgid "Deutsch (German)" msgstr "Deutsch" -#: bookwyrm/settings.py:286 +#: bookwyrm/settings.py:282 msgid "Español (Spanish)" msgstr "Español" -#: bookwyrm/settings.py:287 +#: bookwyrm/settings.py:283 msgid "Galego (Galician)" msgstr "Galego (Galicien)" -#: bookwyrm/settings.py:288 +#: bookwyrm/settings.py:284 msgid "Italiano (Italian)" msgstr "Italiano (italien)" -#: bookwyrm/settings.py:289 +#: bookwyrm/settings.py:285 msgid "Français (French)" msgstr "Français" -#: bookwyrm/settings.py:290 +#: bookwyrm/settings.py:286 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Lituanien)" -#: bookwyrm/settings.py:291 +#: bookwyrm/settings.py:287 msgid "Norsk (Norwegian)" msgstr "Norsk (norvégien)" -#: bookwyrm/settings.py:292 +#: bookwyrm/settings.py:288 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (Portugais brésilien)" -#: bookwyrm/settings.py:293 +#: bookwyrm/settings.py:289 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Portugais européen)" -#: bookwyrm/settings.py:294 +#: bookwyrm/settings.py:290 msgid "Svenska (Swedish)" msgstr "Svenska (Suédois)" -#: bookwyrm/settings.py:295 +#: bookwyrm/settings.py:291 msgid "简体中文 (Simplified Chinese)" msgstr "简化字" -#: bookwyrm/settings.py:296 +#: bookwyrm/settings.py:292 msgid "繁體中文 (Traditional Chinese)" msgstr "Infos supplémentaires :" @@ -356,54 +356,54 @@ msgstr "Une erreur s’est produite ; désolé !" msgid "About" msgstr "À propos" -#: bookwyrm/templates/about/about.html:19 +#: bookwyrm/templates/about/about.html:20 #: bookwyrm/templates/get_started/layout.html:20 #, python-format msgid "Welcome to %(site_name)s!" msgstr "Bienvenue sur %(site_name)s !" -#: bookwyrm/templates/about/about.html:23 +#: bookwyrm/templates/about/about.html:24 #, python-format msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the BookWyrm network, this community is unique." msgstr "%(site_name)s fait partie de BookWyrm, un réseau de communautés indépendantes et autogérées, à destination des lecteurs. Bien que vous puissiez interagir apparemment avec les comptes n'importe où dans le réseau BookWyrm, cette communauté est unique." -#: bookwyrm/templates/about/about.html:40 +#: bookwyrm/templates/about/about.html:42 #, python-format msgid "%(title)s is %(site_name)s's most beloved book, with an average rating of %(rating)s out of 5." msgstr "%(title)s est le livre le plus aimé de %(site_name)s, avec une note moyenne de %(rating)s sur 5." -#: bookwyrm/templates/about/about.html:59 +#: bookwyrm/templates/about/about.html:61 #, python-format msgid "More %(site_name)s users want to read %(title)s than any other book." msgstr "Sur %(site_name)s, c’est %(title)s que tout le monde veut lire plus que n’importe quel autre livre." -#: bookwyrm/templates/about/about.html:78 +#: bookwyrm/templates/about/about.html:80 #, python-format msgid "%(title)s has the most divisive ratings of any book on %(site_name)s." msgstr "%(title)s divise les critiques plus que n’importe quel autre livre sur %(site_name)s." -#: bookwyrm/templates/about/about.html:89 +#: bookwyrm/templates/about/about.html:91 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." msgstr "Gardez trace de vos lectures, parlez de livres, écrivez des commentaires et découvrez quoi lire ensuite. BookWyrm est un logiciel à échelle humaine, sans publicité, anti-capitaliste et axé sur la communauté, conçu pour rester petit et personnel. Si vous avez des demandes de fonctionnalités, des rapports de bogue ou des rêves grandioses, rejoignez-nous et faites-vous entendre." -#: bookwyrm/templates/about/about.html:96 +#: bookwyrm/templates/about/about.html:98 msgid "Meet your admins" msgstr "Rencontrez vos admins" -#: bookwyrm/templates/about/about.html:99 +#: bookwyrm/templates/about/about.html:101 #, python-format msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the code of conduct, and respond when users report spam and bad behavior." msgstr "L’administration et la modération de %(site_name)s maintiennent le site opérationnel, font respecter le code de conduite, et répondent lorsque les utilisateurs signalent le spam et les mauvais comportements." -#: bookwyrm/templates/about/about.html:113 +#: bookwyrm/templates/about/about.html:115 msgid "Moderator" msgstr "Modérateur/modératrice" -#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:132 +#: bookwyrm/templates/about/about.html:117 bookwyrm/templates/layout.html:132 msgid "Admin" msgstr "Admin" -#: bookwyrm/templates/about/about.html:131 +#: bookwyrm/templates/about/about.html:133 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/snippets/status/status_options.html:35 #: bookwyrm/templates/snippets/user_options.html:14 diff --git a/locale/gl_ES/LC_MESSAGES/django.mo b/locale/gl_ES/LC_MESSAGES/django.mo index dbe430ba55e58d9a4febfef0b56a7a2c87061b09..691d4246e087603ac0f44e63c0f842b22202e1a0 100644 GIT binary patch delta 22 ecmaE{i}l4W)(zR0*)0@|46O{!HWyv~)(HT0#0nPx delta 22 ecmaE{i}l4W)(zR0*^Lwo%&m+~HWyv~)(HT0pb8ZL diff --git a/locale/gl_ES/LC_MESSAGES/django.po b/locale/gl_ES/LC_MESSAGES/django.po index b76edace..1f45a689 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-01 19:48+0000\n" -"PO-Revision-Date: 2022-03-02 07:34\n" +"POT-Creation-Date: 2022-03-08 19:55+0000\n" +"PO-Revision-Date: 2022-03-08 21:16\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Galician\n" "Language: gl\n" @@ -261,73 +261,73 @@ msgstr "Citas" msgid "Everything else" msgstr "As outras cousas" -#: bookwyrm/settings.py:211 +#: bookwyrm/settings.py:207 msgid "Home Timeline" msgstr "Cronoloxía de Inicio" -#: bookwyrm/settings.py:211 +#: bookwyrm/settings.py:207 msgid "Home" msgstr "Inicio" -#: bookwyrm/settings.py:212 +#: bookwyrm/settings.py:208 msgid "Books Timeline" msgstr "Cronoloxía de libros" -#: bookwyrm/settings.py:212 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:208 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:284 +#: bookwyrm/settings.py:280 msgid "English" msgstr "English (Inglés)" -#: bookwyrm/settings.py:285 +#: bookwyrm/settings.py:281 msgid "Deutsch (German)" msgstr "Alemán (Alemaña)" -#: bookwyrm/settings.py:286 +#: bookwyrm/settings.py:282 msgid "Español (Spanish)" msgstr "Español (España)" -#: bookwyrm/settings.py:287 +#: bookwyrm/settings.py:283 msgid "Galego (Galician)" msgstr "Galego (Galician)" -#: bookwyrm/settings.py:288 +#: bookwyrm/settings.py:284 msgid "Italiano (Italian)" msgstr "Italiano (Italian)" -#: bookwyrm/settings.py:289 +#: bookwyrm/settings.py:285 msgid "Français (French)" msgstr "Francés (Francia)" -#: bookwyrm/settings.py:290 +#: bookwyrm/settings.py:286 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Lithuanian)" -#: bookwyrm/settings.py:291 +#: bookwyrm/settings.py:287 msgid "Norsk (Norwegian)" msgstr "Noruegués (Norwegian)" -#: bookwyrm/settings.py:292 +#: bookwyrm/settings.py:288 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (Portugués brasileiro)" -#: bookwyrm/settings.py:293 +#: bookwyrm/settings.py:289 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Portugués europeo)" -#: bookwyrm/settings.py:294 +#: bookwyrm/settings.py:290 msgid "Svenska (Swedish)" msgstr "Sueco (Swedish)" -#: bookwyrm/settings.py:295 +#: bookwyrm/settings.py:291 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Chinés simplificado)" -#: bookwyrm/settings.py:296 +#: bookwyrm/settings.py:292 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Chinés tradicional)" @@ -356,54 +356,54 @@ msgstr "Algo fallou! Lamentámolo." msgid "About" msgstr "Acerca de" -#: bookwyrm/templates/about/about.html:19 +#: bookwyrm/templates/about/about.html:20 #: bookwyrm/templates/get_started/layout.html:20 #, python-format msgid "Welcome to %(site_name)s!" msgstr "Sexas ben vida a %(site_name)s!" -#: bookwyrm/templates/about/about.html:23 +#: bookwyrm/templates/about/about.html:24 #, python-format msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the BookWyrm network, this community is unique." msgstr "%(site_name)s é parte de BookWyrm, unha rede independente, auto-xestionada por comunidades de persoas lectoras. Aínda que podes interactuar con outras usuarias da rede BookWyrm, esta comunidade é única." -#: bookwyrm/templates/about/about.html:40 +#: bookwyrm/templates/about/about.html:42 #, python-format msgid "%(title)s is %(site_name)s's most beloved book, with an average rating of %(rating)s out of 5." msgstr "%(title)s é o libro máis querido de %(site_name)s, cunha valoración media de %(rating)s sobre 5." -#: bookwyrm/templates/about/about.html:59 +#: bookwyrm/templates/about/about.html:61 #, python-format msgid "More %(site_name)s users want to read %(title)s than any other book." msgstr "%(title)s é o libro que máis queren ler as usuarias de %(site_name)s." -#: bookwyrm/templates/about/about.html:78 +#: bookwyrm/templates/about/about.html:80 #, python-format msgid "%(title)s has the most divisive ratings of any book on %(site_name)s." msgstr "%(title)s é o libro con valoracións máis diverxentes en %(site_name)s." -#: bookwyrm/templates/about/about.html:89 +#: bookwyrm/templates/about/about.html:91 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." msgstr "Rexistra as túas lecturas, conversa acerca dos libros, escribe recensións e descubre próximas lecturas. Sempre sen publicidade, anti-corporacións e orientado á comunidade, BookWyrm é software a escala humana, deseñado para ser pequeno e persoal. Se queres propoñer novas ferramentas, informar de fallos, ou colaborar, contacta con nós e deixa oír a túa voz." -#: bookwyrm/templates/about/about.html:96 +#: bookwyrm/templates/about/about.html:98 msgid "Meet your admins" msgstr "Contacta coa administración" -#: bookwyrm/templates/about/about.html:99 +#: bookwyrm/templates/about/about.html:101 #, python-format msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the code of conduct, and respond when users report spam and bad behavior." msgstr "A moderación e administración de %(site_name)s coidan e xestionan o sitio web, fan cumprir co código de conduta e responden ás denuncias das usuarias sobre spam e mal comportamento." -#: bookwyrm/templates/about/about.html:113 +#: bookwyrm/templates/about/about.html:115 msgid "Moderator" msgstr "Moderación" -#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:132 +#: bookwyrm/templates/about/about.html:117 bookwyrm/templates/layout.html:132 msgid "Admin" msgstr "Admin" -#: bookwyrm/templates/about/about.html:131 +#: bookwyrm/templates/about/about.html:133 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/snippets/status/status_options.html:35 #: bookwyrm/templates/snippets/user_options.html:14 diff --git a/locale/it_IT/LC_MESSAGES/django.mo b/locale/it_IT/LC_MESSAGES/django.mo index cddc0a5404396ed218fbdc22f037e2c5d7c0a1d9..2be0c3ac01a7057cabd8b69e3f99520ca5e585ef 100644 GIT binary patch delta 22 ecmZoW%G!36bwl%Ib_)d~Ln}kG&0UxO^Z@{Am5o diff --git a/locale/it_IT/LC_MESSAGES/django.po b/locale/it_IT/LC_MESSAGES/django.po index 143539d9..24538735 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-01 19:48+0000\n" -"PO-Revision-Date: 2022-03-01 21:14\n" +"POT-Creation-Date: 2022-03-08 19:55+0000\n" +"PO-Revision-Date: 2022-03-08 21:16\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Italian\n" "Language: it\n" @@ -261,73 +261,73 @@ msgstr "Citazioni" msgid "Everything else" msgstr "Tutto il resto" -#: bookwyrm/settings.py:211 +#: bookwyrm/settings.py:207 msgid "Home Timeline" msgstr "La tua timeline" -#: bookwyrm/settings.py:211 +#: bookwyrm/settings.py:207 msgid "Home" msgstr "Home" -#: bookwyrm/settings.py:212 +#: bookwyrm/settings.py:208 msgid "Books Timeline" msgstr "Timeline dei libri" -#: bookwyrm/settings.py:212 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:208 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:284 +#: bookwyrm/settings.py:280 msgid "English" msgstr "English (Inglese)" -#: bookwyrm/settings.py:285 +#: bookwyrm/settings.py:281 msgid "Deutsch (German)" msgstr "Deutsch (Tedesco)" -#: bookwyrm/settings.py:286 +#: bookwyrm/settings.py:282 msgid "Español (Spanish)" msgstr "Español (Spagnolo)" -#: bookwyrm/settings.py:287 +#: bookwyrm/settings.py:283 msgid "Galego (Galician)" msgstr "Galego (Galiziano)" -#: bookwyrm/settings.py:288 +#: bookwyrm/settings.py:284 msgid "Italiano (Italian)" msgstr "Italiano (Italiano)" -#: bookwyrm/settings.py:289 +#: bookwyrm/settings.py:285 msgid "Français (French)" msgstr "Français (Francese)" -#: bookwyrm/settings.py:290 +#: bookwyrm/settings.py:286 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Lituano)" -#: bookwyrm/settings.py:291 +#: bookwyrm/settings.py:287 msgid "Norsk (Norwegian)" msgstr "Norsk (Norvegese)" -#: bookwyrm/settings.py:292 +#: bookwyrm/settings.py:288 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (Portoghese Brasiliano)" -#: bookwyrm/settings.py:293 +#: bookwyrm/settings.py:289 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Portoghese europeo)" -#: bookwyrm/settings.py:294 +#: bookwyrm/settings.py:290 msgid "Svenska (Swedish)" msgstr "Svenska (Svedese)" -#: bookwyrm/settings.py:295 +#: bookwyrm/settings.py:291 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Cinese Semplificato)" -#: bookwyrm/settings.py:296 +#: bookwyrm/settings.py:292 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Cinese Tradizionale)" @@ -356,54 +356,54 @@ msgstr "Qualcosa è andato storto! Ci dispiace." msgid "About" msgstr "Informazioni su" -#: bookwyrm/templates/about/about.html:19 +#: bookwyrm/templates/about/about.html:20 #: bookwyrm/templates/get_started/layout.html:20 #, python-format msgid "Welcome to %(site_name)s!" msgstr "Benvenuto su %(site_name)s!" -#: bookwyrm/templates/about/about.html:23 +#: bookwyrm/templates/about/about.html:24 #, python-format msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the BookWyrm network, this community is unique." msgstr "%(site_name)s fa parte di BookWyrm, una rete di comunità indipendenti e autogestite per i lettori. Mentre puoi interagire apparentemente con gli utenti ovunque nella rete di BookWyrm, questa comunità è unica." -#: bookwyrm/templates/about/about.html:40 +#: bookwyrm/templates/about/about.html:42 #, python-format msgid "%(title)s is %(site_name)s's most beloved book, with an average rating of %(rating)s out of 5." msgstr "%(title)s è il libro più amato di %(site_name)s, con un punteggio medio di %(rating)s su 5." -#: bookwyrm/templates/about/about.html:59 +#: bookwyrm/templates/about/about.html:61 #, python-format msgid "More %(site_name)s users want to read %(title)s than any other book." msgstr "Più %(site_name)s utenti vogliono leggere %(title)s rispetto a qualsiasi altro libro." -#: bookwyrm/templates/about/about.html:78 +#: bookwyrm/templates/about/about.html:80 #, python-format msgid "%(title)s has the most divisive ratings of any book on %(site_name)s." msgstr "%(title)s ha le valutazioni più divisive di ogni libro su %(site_name)s." -#: bookwyrm/templates/about/about.html:89 +#: bookwyrm/templates/about/about.html:91 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." msgstr "Traccia la tue letture, parla di libri, scrivi recensioni, e scopri cosa leggere dopo. BookWyrm, sempre libero, anti-corporate, orientato alla comunità, è un software a misura d'uomo, progettato per rimanere piccolo e personale. Se hai richieste di funzionalità, segnalazioni di bug o grandi sogni, contatta e fai sentire la tua voce." -#: bookwyrm/templates/about/about.html:96 +#: bookwyrm/templates/about/about.html:98 msgid "Meet your admins" msgstr "Incontra gli amministratori" -#: bookwyrm/templates/about/about.html:99 +#: bookwyrm/templates/about/about.html:101 #, python-format msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the code of conduct, and respond when users report spam and bad behavior." msgstr "I moderatori e gli amministratori di %(site_name)s mantengono il sito attivo e funzionante, applicano il codice di condotta, e rispondono quando gli utenti segnalano spam o comportamenti non adeguati." -#: bookwyrm/templates/about/about.html:113 +#: bookwyrm/templates/about/about.html:115 msgid "Moderator" msgstr "Moderatori" -#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:132 +#: bookwyrm/templates/about/about.html:117 bookwyrm/templates/layout.html:132 msgid "Admin" msgstr "Admin" -#: bookwyrm/templates/about/about.html:131 +#: bookwyrm/templates/about/about.html:133 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/snippets/status/status_options.html:35 #: bookwyrm/templates/snippets/user_options.html:14 diff --git a/locale/lt_LT/LC_MESSAGES/django.mo b/locale/lt_LT/LC_MESSAGES/django.mo index d05ea5af184fd779c03aaa8e5ecc5f100443d7eb..b4885e93b693c8909b1476f861f3aaecba0a2b0a 100644 GIT binary patch delta 19 bcmbO>opsuD)(sj5Su7Nc3^(f>%<2LFNj3*j delta 19 bcmbO>opsuD)(sj5Sqv473^wZ=%<2LFNbv_r diff --git a/locale/lt_LT/LC_MESSAGES/django.po b/locale/lt_LT/LC_MESSAGES/django.po index ca506d58..b272ecf0 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-01 19:48+0000\n" -"PO-Revision-Date: 2022-03-01 20:15\n" +"POT-Creation-Date: 2022-03-08 19:55+0000\n" +"PO-Revision-Date: 2022-03-08 21:15\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Lithuanian\n" "Language: lt\n" @@ -261,73 +261,73 @@ msgstr "Citatos" msgid "Everything else" msgstr "Visa kita" -#: bookwyrm/settings.py:211 +#: bookwyrm/settings.py:207 msgid "Home Timeline" msgstr "Pagrindinė siena" -#: bookwyrm/settings.py:211 +#: bookwyrm/settings.py:207 msgid "Home" msgstr "Pagrindinis" -#: bookwyrm/settings.py:212 +#: bookwyrm/settings.py:208 msgid "Books Timeline" msgstr "Knygų siena" -#: bookwyrm/settings.py:212 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:208 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:284 +#: bookwyrm/settings.py:280 msgid "English" msgstr "English (Anglų)" -#: bookwyrm/settings.py:285 +#: bookwyrm/settings.py:281 msgid "Deutsch (German)" msgstr "Deutsch (Vokiečių)" -#: bookwyrm/settings.py:286 +#: bookwyrm/settings.py:282 msgid "Español (Spanish)" msgstr "Español (Ispanų)" -#: bookwyrm/settings.py:287 +#: bookwyrm/settings.py:283 msgid "Galego (Galician)" msgstr "Galego (galisų)" -#: bookwyrm/settings.py:288 +#: bookwyrm/settings.py:284 msgid "Italiano (Italian)" msgstr "Italų (Italian)" -#: bookwyrm/settings.py:289 +#: bookwyrm/settings.py:285 msgid "Français (French)" msgstr "Français (Prancūzų)" -#: bookwyrm/settings.py:290 +#: bookwyrm/settings.py:286 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių" -#: bookwyrm/settings.py:291 +#: bookwyrm/settings.py:287 msgid "Norsk (Norwegian)" msgstr "Norvegų (Norwegian)" -#: bookwyrm/settings.py:292 +#: bookwyrm/settings.py:288 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português brasileiro (Brazilijos portugalų)" -#: bookwyrm/settings.py:293 +#: bookwyrm/settings.py:289 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Europos portugalų)" -#: bookwyrm/settings.py:294 +#: bookwyrm/settings.py:290 msgid "Svenska (Swedish)" msgstr "Svenska (Švedų)" -#: bookwyrm/settings.py:295 +#: bookwyrm/settings.py:291 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Supaprastinta kinų)" -#: bookwyrm/settings.py:296 +#: bookwyrm/settings.py:292 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Tradicinė kinų)" @@ -356,54 +356,54 @@ msgstr "Kažkas nepavyko. Atsiprašome." msgid "About" msgstr "Apie" -#: bookwyrm/templates/about/about.html:19 +#: bookwyrm/templates/about/about.html:20 #: bookwyrm/templates/get_started/layout.html:20 #, python-format msgid "Welcome to %(site_name)s!" msgstr "Sveiki atvykę į %(site_name)s!" -#: bookwyrm/templates/about/about.html:23 +#: bookwyrm/templates/about/about.html:24 #, python-format msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the BookWyrm network, this community is unique." msgstr "%(site_name)s yra BookWyrmdalis, tinklo nepriklausomų skaitytojų bendruomenių. Jūs galite bendrauti su nariais iš šio BookWyrm tinklo, tačiau ši bendruomenė yra unikali." -#: bookwyrm/templates/about/about.html:40 +#: bookwyrm/templates/about/about.html:42 #, python-format msgid "%(title)s is %(site_name)s's most beloved book, with an average rating of %(rating)s out of 5." msgstr "%(title)s yra %(site_name)s's mėgstamiausia knyga, kurios vidutinis įvertinimas yra %(rating)s iš 5." -#: bookwyrm/templates/about/about.html:59 +#: bookwyrm/templates/about/about.html:61 #, python-format msgid "More %(site_name)s users want to read %(title)s than any other book." msgstr "Daugiau %(site_name)s narių nori perskaityti %(title)s negu bet kurią kitą knygą." -#: bookwyrm/templates/about/about.html:78 +#: bookwyrm/templates/about/about.html:80 #, python-format msgid "%(title)s has the most divisive ratings of any book on %(site_name)s." msgstr "%(title)s labiausiai kontroversiškai reitinguota %(site_name)s." -#: bookwyrm/templates/about/about.html:89 +#: bookwyrm/templates/about/about.html:91 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." msgstr "Sekite savo skaitymus, kalbėkite apie knygas, rašykite atsiliepimus ir atraskite, ką dar perskaityti. „BookWyrm“ – tai programinė įranga, kurioje nėra reklamų, biurokratijos. Tai bendruomenei orientuota, nedidelė ir asmeninė įranga, kurią lengva plėsti. Jei norite papildomų funkcijų, įgyvendinti savo svajones ar tiesiog pranešti apie klaidą, susisiekite ir jus išgirsime." -#: bookwyrm/templates/about/about.html:96 +#: bookwyrm/templates/about/about.html:98 msgid "Meet your admins" msgstr "Šio serverio administratoriai" -#: bookwyrm/templates/about/about.html:99 +#: bookwyrm/templates/about/about.html:101 #, python-format msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the code of conduct, and respond when users report spam and bad behavior." msgstr "Svetainės %(site_name)s moderatoriai ir administratoriai nuolat atnaujina puslapį, laikosi elgsenos susitarimo ir atsako, kai naudotojai praneša apie brukalą ir blogą elgesį." -#: bookwyrm/templates/about/about.html:113 +#: bookwyrm/templates/about/about.html:115 msgid "Moderator" msgstr "Moderatorius" -#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:132 +#: bookwyrm/templates/about/about.html:117 bookwyrm/templates/layout.html:132 msgid "Admin" msgstr "Administravimas" -#: bookwyrm/templates/about/about.html:131 +#: bookwyrm/templates/about/about.html:133 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/snippets/status/status_options.html:35 #: bookwyrm/templates/snippets/user_options.html:14 diff --git a/locale/no_NO/LC_MESSAGES/django.mo b/locale/no_NO/LC_MESSAGES/django.mo index 97e81d11d44590e10e50b3cefb248244ad231eb4..dbfe5ea07ba28095af217223c694380ae67f9888 100644 GIT binary patch delta 22 ecmezWp5_00mJJ#Q*)0@|46O{!HtQd}PzC^c*9po1 delta 22 ecmezWp5_00mJJ#Q*$owp46F=IH|rm~PzC^cbP2%# diff --git a/locale/no_NO/LC_MESSAGES/django.po b/locale/no_NO/LC_MESSAGES/django.po index 473c4a71..a7626b28 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-01 19:48+0000\n" -"PO-Revision-Date: 2022-03-01 20:15\n" +"POT-Creation-Date: 2022-03-08 19:55+0000\n" +"PO-Revision-Date: 2022-03-08 21:16\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Norwegian\n" "Language: no\n" @@ -261,73 +261,73 @@ msgstr "Sitater" msgid "Everything else" msgstr "Andre ting" -#: bookwyrm/settings.py:211 +#: bookwyrm/settings.py:207 msgid "Home Timeline" msgstr "Lokal tidslinje" -#: bookwyrm/settings.py:211 +#: bookwyrm/settings.py:207 msgid "Home" msgstr "Hjem" -#: bookwyrm/settings.py:212 +#: bookwyrm/settings.py:208 msgid "Books Timeline" msgstr "Boktidslinja" -#: bookwyrm/settings.py:212 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:208 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:284 +#: bookwyrm/settings.py:280 msgid "English" msgstr "English (Engelsk)" -#: bookwyrm/settings.py:285 +#: bookwyrm/settings.py:281 msgid "Deutsch (German)" msgstr "Deutsch (Tysk)" -#: bookwyrm/settings.py:286 +#: bookwyrm/settings.py:282 msgid "Español (Spanish)" msgstr "Español (Spansk)" -#: bookwyrm/settings.py:287 +#: bookwyrm/settings.py:283 msgid "Galego (Galician)" msgstr "Galego (Gallisk)" -#: bookwyrm/settings.py:288 +#: bookwyrm/settings.py:284 msgid "Italiano (Italian)" msgstr "Italiano (Italiensk)" -#: bookwyrm/settings.py:289 +#: bookwyrm/settings.py:285 msgid "Français (French)" msgstr "Français (Fransk)" -#: bookwyrm/settings.py:290 +#: bookwyrm/settings.py:286 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Litauisk)" -#: bookwyrm/settings.py:291 +#: bookwyrm/settings.py:287 msgid "Norsk (Norwegian)" msgstr "Norsk (Norsk)" -#: bookwyrm/settings.py:292 +#: bookwyrm/settings.py:288 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português - Brasil (Brasiliansk portugisisk)" -#: bookwyrm/settings.py:293 +#: bookwyrm/settings.py:289 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Europeisk Portugisisk)" -#: bookwyrm/settings.py:294 +#: bookwyrm/settings.py:290 msgid "Svenska (Swedish)" msgstr "Svenska (Svensk)" -#: bookwyrm/settings.py:295 +#: bookwyrm/settings.py:291 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Forenklet kinesisk)" -#: bookwyrm/settings.py:296 +#: bookwyrm/settings.py:292 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Tradisjonelt kinesisk)" @@ -356,54 +356,54 @@ msgstr "Beklager, noe gikk galt! Leit, det der." msgid "About" msgstr "Om" -#: bookwyrm/templates/about/about.html:19 +#: bookwyrm/templates/about/about.html:20 #: bookwyrm/templates/get_started/layout.html:20 #, python-format msgid "Welcome to %(site_name)s!" msgstr "Velkommen til %(site_name)s!" -#: bookwyrm/templates/about/about.html:23 +#: bookwyrm/templates/about/about.html:24 #, python-format msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the BookWyrm network, this community is unique." msgstr "%(site_name)s er en del av BookWyrm, et nettverk av selvstendige, selvstyrte samfunn for lesere. Du kan kommunisere sømløst med brukere hvor som helst i BookWyrm nettverket, men hvert samfunn er unikt." -#: bookwyrm/templates/about/about.html:40 +#: bookwyrm/templates/about/about.html:42 #, python-format msgid "%(title)s is %(site_name)s's most beloved book, with an average rating of %(rating)s out of 5." msgstr "%(title)s er %(site_name)s sin favorittbok, med en gjennomsnittlig vurdering på %(rating)s av 5." -#: bookwyrm/templates/about/about.html:59 +#: bookwyrm/templates/about/about.html:61 #, python-format msgid "More %(site_name)s users want to read %(title)s than any other book." msgstr "Flere av %(site_name)s sine medlemmer ønsker å lese %(title)s enn noen annen bok." -#: bookwyrm/templates/about/about.html:78 +#: bookwyrm/templates/about/about.html:80 #, python-format msgid "%(title)s has the most divisive ratings of any book on %(site_name)s." msgstr "%(title)s er den boka på %(site_name)s med de mest polariserte vurderingene." -#: bookwyrm/templates/about/about.html:89 +#: bookwyrm/templates/about/about.html:91 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." msgstr "Journalfør lesingen din, snakk om bøker, skriv anmeldelser, og oppdag din neste bok. BookWyrm er reklamefri, ukommers og fellesskapsorientert, programvare for mennesker, designet for å forbli liten og nær. Hvis du har ønsker, feilrapporter eller store vyer, ta kontakt og bli hørt." -#: bookwyrm/templates/about/about.html:96 +#: bookwyrm/templates/about/about.html:98 msgid "Meet your admins" msgstr "Møt administratorene" -#: bookwyrm/templates/about/about.html:99 +#: bookwyrm/templates/about/about.html:101 #, python-format msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the code of conduct, and respond when users report spam and bad behavior." msgstr "%(site_name)s sine moderatorer og administratorer holder nettsida oppe og tilgjengelig, håndhever adferdskoden, og svarer på brukernes rapporterer om spam og dårlig atferd." -#: bookwyrm/templates/about/about.html:113 +#: bookwyrm/templates/about/about.html:115 msgid "Moderator" msgstr "Moderator" -#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:132 +#: bookwyrm/templates/about/about.html:117 bookwyrm/templates/layout.html:132 msgid "Admin" msgstr "Admin" -#: bookwyrm/templates/about/about.html:131 +#: bookwyrm/templates/about/about.html:133 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/snippets/status/status_options.html:35 #: bookwyrm/templates/snippets/user_options.html:14 diff --git a/locale/pt_BR/LC_MESSAGES/django.mo b/locale/pt_BR/LC_MESSAGES/django.mo index ef4929f88c44dedad938ff601db128dccc37a28d..064c6caebac3129eca39164512621959f106f161 100644 GIT binary patch delta 22 ecmX@LpY_y!)(y><*)0@|46O{!Hg{ci=m7w77zttk delta 22 ecmX@LpY_y!)(y><*$owpjIE3eH+Nlj=m7w6zX@3Y diff --git a/locale/pt_BR/LC_MESSAGES/django.po b/locale/pt_BR/LC_MESSAGES/django.po index c2432bbb..60b192c6 100644 --- a/locale/pt_BR/LC_MESSAGES/django.po +++ b/locale/pt_BR/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-01 19:48+0000\n" -"PO-Revision-Date: 2022-03-01 23:21\n" +"POT-Creation-Date: 2022-03-08 19:55+0000\n" +"PO-Revision-Date: 2022-03-08 21:16\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Portuguese, Brazilian\n" "Language: pt\n" @@ -261,73 +261,73 @@ msgstr "Citações" msgid "Everything else" msgstr "Todo o resto" -#: bookwyrm/settings.py:211 +#: bookwyrm/settings.py:207 msgid "Home Timeline" msgstr "Linha do tempo" -#: bookwyrm/settings.py:211 +#: bookwyrm/settings.py:207 msgid "Home" msgstr "Página inicial" -#: bookwyrm/settings.py:212 +#: bookwyrm/settings.py:208 msgid "Books Timeline" msgstr "Linha do tempo dos livros" -#: bookwyrm/settings.py:212 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:208 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:284 +#: bookwyrm/settings.py:280 msgid "English" msgstr "English (Inglês)" -#: bookwyrm/settings.py:285 +#: bookwyrm/settings.py:281 msgid "Deutsch (German)" msgstr "Deutsch (Alemão)" -#: bookwyrm/settings.py:286 +#: bookwyrm/settings.py:282 msgid "Español (Spanish)" msgstr "Español (Espanhol)" -#: bookwyrm/settings.py:287 +#: bookwyrm/settings.py:283 msgid "Galego (Galician)" msgstr "Galego (Galego)" -#: bookwyrm/settings.py:288 +#: bookwyrm/settings.py:284 msgid "Italiano (Italian)" msgstr "Italiano (Italiano)" -#: bookwyrm/settings.py:289 +#: bookwyrm/settings.py:285 msgid "Français (French)" msgstr "Français (Francês)" -#: bookwyrm/settings.py:290 +#: bookwyrm/settings.py:286 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Lituano)" -#: bookwyrm/settings.py:291 +#: bookwyrm/settings.py:287 msgid "Norsk (Norwegian)" msgstr "Norsk (Norueguês)" -#: bookwyrm/settings.py:292 +#: bookwyrm/settings.py:288 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (Português do Brasil)" -#: bookwyrm/settings.py:293 +#: bookwyrm/settings.py:289 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Português Europeu)" -#: bookwyrm/settings.py:294 +#: bookwyrm/settings.py:290 msgid "Svenska (Swedish)" msgstr "Svenska (Sueco)" -#: bookwyrm/settings.py:295 +#: bookwyrm/settings.py:291 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Chinês simplificado)" -#: bookwyrm/settings.py:296 +#: bookwyrm/settings.py:292 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Chinês tradicional)" @@ -356,54 +356,54 @@ msgstr "Algo deu errado! Foi mal." msgid "About" msgstr "Sobre" -#: bookwyrm/templates/about/about.html:19 +#: bookwyrm/templates/about/about.html:20 #: bookwyrm/templates/get_started/layout.html:20 #, python-format msgid "Welcome to %(site_name)s!" msgstr "Bem-vindol(a) a %(site_name)s!" -#: bookwyrm/templates/about/about.html:23 +#: bookwyrm/templates/about/about.html:24 #, python-format msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the BookWyrm network, this community is unique." msgstr "%(site_name)s é parte da BookWyrm, uma rede independente e autogestionada para leitores. Apesar de você poder interagir diretamente com usuários de toda a rede BookWyrm, esta comunidade é única." -#: bookwyrm/templates/about/about.html:40 +#: bookwyrm/templates/about/about.html:42 #, python-format msgid "%(title)s is %(site_name)s's most beloved book, with an average rating of %(rating)s out of 5." msgstr "%(title)s é o livro favorito da instância %(site_name)s, com uma avaliação média de %(rating)s em 5." -#: bookwyrm/templates/about/about.html:59 +#: bookwyrm/templates/about/about.html:61 #, python-format msgid "More %(site_name)s users want to read %(title)s than any other book." msgstr "O livro mais desejado de toda a instância %(site_name)s é %(title)s." -#: bookwyrm/templates/about/about.html:78 +#: bookwyrm/templates/about/about.html:80 #, python-format msgid "%(title)s has the most divisive ratings of any book on %(site_name)s." msgstr "%(title)s tem a avaliação mais polêmica de toda a instância %(site_name)s." -#: bookwyrm/templates/about/about.html:89 +#: bookwyrm/templates/about/about.html:91 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." msgstr "Registre o andamento de suas leituras, fale sobre livros, escreva resenhas e ache o que ler em seguida. Sempre sem propagandas, anticorporativa e voltada à comunidade, a BookWyrm é um software em escala humana desenvolvido para permanecer pequeno e pessoal. Se você tem sugestões de funções, avisos sobre bugs ou grandes sonhos para o projeto, fale conosco e faça sua voz ser ouvida." -#: bookwyrm/templates/about/about.html:96 +#: bookwyrm/templates/about/about.html:98 msgid "Meet your admins" msgstr "Conheça a administração" -#: bookwyrm/templates/about/about.html:99 +#: bookwyrm/templates/about/about.html:101 #, python-format msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the code of conduct, and respond when users report spam and bad behavior." msgstr "Moderadores/as e administradores/as de %(site_name)s mantêm o site funcionando, aplicam o código de conduta e respondem quando usuários denunciam spam e mau comportamento." -#: bookwyrm/templates/about/about.html:113 +#: bookwyrm/templates/about/about.html:115 msgid "Moderator" msgstr "Moderador/a" -#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:132 +#: bookwyrm/templates/about/about.html:117 bookwyrm/templates/layout.html:132 msgid "Admin" msgstr "Admin" -#: bookwyrm/templates/about/about.html:131 +#: bookwyrm/templates/about/about.html:133 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/snippets/status/status_options.html:35 #: bookwyrm/templates/snippets/user_options.html:14 diff --git a/locale/pt_PT/LC_MESSAGES/django.mo b/locale/pt_PT/LC_MESSAGES/django.mo index 9c144cf8a16437303931924bed48443e9f8fb759..85e167660be76978d3eae5b1408af98292516f36 100644 GIT binary patch delta 22 ecmX@RljZDAmJRM}*ew){46O{!Hv6rqF8}~)+X%M+ delta 22 ecmX@RljZDAmJRM}*bNno46F=IH~X!rF8}~)cnGcl diff --git a/locale/pt_PT/LC_MESSAGES/django.po b/locale/pt_PT/LC_MESSAGES/django.po index ff508e11..32acf05c 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-01 19:48+0000\n" -"PO-Revision-Date: 2022-03-01 20:15\n" +"POT-Creation-Date: 2022-03-08 19:55+0000\n" +"PO-Revision-Date: 2022-03-08 21:16\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Portuguese\n" "Language: pt\n" @@ -261,73 +261,73 @@ msgstr "Citações" msgid "Everything else" msgstr "Tudo o resto" -#: bookwyrm/settings.py:211 +#: bookwyrm/settings.py:207 msgid "Home Timeline" msgstr "Cronograma Inicial" -#: bookwyrm/settings.py:211 +#: bookwyrm/settings.py:207 msgid "Home" msgstr "Início" -#: bookwyrm/settings.py:212 +#: bookwyrm/settings.py:208 msgid "Books Timeline" msgstr "Cronograma de Livros" -#: bookwyrm/settings.py:212 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:208 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:284 +#: bookwyrm/settings.py:280 msgid "English" msgstr "Inglês" -#: bookwyrm/settings.py:285 +#: bookwyrm/settings.py:281 msgid "Deutsch (German)" msgstr "Deutsch (Alemão)" -#: bookwyrm/settings.py:286 +#: bookwyrm/settings.py:282 msgid "Español (Spanish)" msgstr "Español (Espanhol)" -#: bookwyrm/settings.py:287 +#: bookwyrm/settings.py:283 msgid "Galego (Galician)" msgstr "Galego (Galician)" -#: bookwyrm/settings.py:288 +#: bookwyrm/settings.py:284 msgid "Italiano (Italian)" msgstr "Italiano (Italiano)" -#: bookwyrm/settings.py:289 +#: bookwyrm/settings.py:285 msgid "Français (French)" msgstr "Français (Francês)" -#: bookwyrm/settings.py:290 +#: bookwyrm/settings.py:286 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (lituano)" -#: bookwyrm/settings.py:291 +#: bookwyrm/settings.py:287 msgid "Norsk (Norwegian)" msgstr "Norsk (Norueguês)" -#: bookwyrm/settings.py:292 +#: bookwyrm/settings.py:288 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (Português brasileiro)" -#: bookwyrm/settings.py:293 +#: bookwyrm/settings.py:289 msgid "Português Europeu (European Portuguese)" msgstr "Português (Português Europeu)" -#: bookwyrm/settings.py:294 +#: bookwyrm/settings.py:290 msgid "Svenska (Swedish)" msgstr "" -#: bookwyrm/settings.py:295 +#: bookwyrm/settings.py:291 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Chinês simplificado)" -#: bookwyrm/settings.py:296 +#: bookwyrm/settings.py:292 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Chinês tradicional)" @@ -356,54 +356,54 @@ msgstr "Ocorreu um erro! Pedimos desculpa por isto." msgid "About" msgstr "Sobre" -#: bookwyrm/templates/about/about.html:19 +#: bookwyrm/templates/about/about.html:20 #: bookwyrm/templates/get_started/layout.html:20 #, python-format msgid "Welcome to %(site_name)s!" msgstr "Bem-vindo(a) ao %(site_name)s!" -#: bookwyrm/templates/about/about.html:23 +#: bookwyrm/templates/about/about.html:24 #, python-format msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the BookWyrm network, this community is unique." msgstr "%(site_name)s faz parte do BookWyrm, uma rede de comunidades independentes, focada nos leitores. Enquanto podes interagir continuamente com utilizadores por todo o lado na Rede Boomwyrm, esta comunidade é única." -#: bookwyrm/templates/about/about.html:40 +#: bookwyrm/templates/about/about.html:42 #, python-format msgid "%(title)s is %(site_name)s's most beloved book, with an average rating of %(rating)s out of 5." msgstr "" -#: bookwyrm/templates/about/about.html:59 +#: bookwyrm/templates/about/about.html:61 #, python-format msgid "More %(site_name)s users want to read %(title)s than any other book." msgstr "" -#: bookwyrm/templates/about/about.html:78 +#: bookwyrm/templates/about/about.html:80 #, python-format msgid "%(title)s has the most divisive ratings of any book on %(site_name)s." msgstr "" -#: bookwyrm/templates/about/about.html:89 +#: bookwyrm/templates/about/about.html:91 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." msgstr "" -#: bookwyrm/templates/about/about.html:96 +#: bookwyrm/templates/about/about.html:98 msgid "Meet your admins" msgstr "Conheça os nossos administradores" -#: bookwyrm/templates/about/about.html:99 +#: bookwyrm/templates/about/about.html:101 #, python-format msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the code of conduct, and respond when users report spam and bad behavior." msgstr "" -#: bookwyrm/templates/about/about.html:113 +#: bookwyrm/templates/about/about.html:115 msgid "Moderator" msgstr "Moderador" -#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:132 +#: bookwyrm/templates/about/about.html:117 bookwyrm/templates/layout.html:132 msgid "Admin" msgstr "Admin" -#: bookwyrm/templates/about/about.html:131 +#: bookwyrm/templates/about/about.html:133 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/snippets/status/status_options.html:35 #: bookwyrm/templates/snippets/user_options.html:14 diff --git a/locale/sv_SE/LC_MESSAGES/django.mo b/locale/sv_SE/LC_MESSAGES/django.mo index 4f1348791d606f2cc21d5ef40c9a0d0916f359d7..eb44d9bf9529fbb561ab36fe4271c235c2e19ff6 100644 GIT binary patch delta 21 dcmeyrj`jaK)(za}*en!`46O_|3!cmC1OR8N2%`W1 delta 21 dcmeyrj`jaK)(za}*h~}*Osq^c3!cmC1OR832%`W1 diff --git a/locale/sv_SE/LC_MESSAGES/django.po b/locale/sv_SE/LC_MESSAGES/django.po index f98510e3..303495c6 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-01 19:48+0000\n" -"PO-Revision-Date: 2022-03-04 04:45\n" +"POT-Creation-Date: 2022-03-08 19:55+0000\n" +"PO-Revision-Date: 2022-03-08 21:15\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Swedish\n" "Language: sv\n" @@ -261,73 +261,73 @@ msgstr "Citationer" msgid "Everything else" msgstr "Allt annat" -#: bookwyrm/settings.py:211 +#: bookwyrm/settings.py:207 msgid "Home Timeline" msgstr "Tidslinje för Hem" -#: bookwyrm/settings.py:211 +#: bookwyrm/settings.py:207 msgid "Home" msgstr "Hem" -#: bookwyrm/settings.py:212 +#: bookwyrm/settings.py:208 msgid "Books Timeline" msgstr "Tidslinjer för böcker" -#: bookwyrm/settings.py:212 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:208 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:284 +#: bookwyrm/settings.py:280 msgid "English" msgstr "Engelska" -#: bookwyrm/settings.py:285 +#: bookwyrm/settings.py:281 msgid "Deutsch (German)" msgstr "Tyska (Tysk)" -#: bookwyrm/settings.py:286 +#: bookwyrm/settings.py:282 msgid "Español (Spanish)" msgstr "Spanska (Spansk)" -#: bookwyrm/settings.py:287 +#: bookwyrm/settings.py:283 msgid "Galego (Galician)" msgstr "Galego (Gallisk)" -#: bookwyrm/settings.py:288 +#: bookwyrm/settings.py:284 msgid "Italiano (Italian)" msgstr "Italienska (Italiensk)" -#: bookwyrm/settings.py:289 +#: bookwyrm/settings.py:285 msgid "Français (French)" msgstr "Franska (Fransk)" -#: bookwyrm/settings.py:290 +#: bookwyrm/settings.py:286 msgid "Lietuvių (Lithuanian)" msgstr "Litauiska (Litauisk)" -#: bookwyrm/settings.py:291 +#: bookwyrm/settings.py:287 msgid "Norsk (Norwegian)" msgstr "Norska (Norska)" -#: bookwyrm/settings.py:292 +#: bookwyrm/settings.py:288 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português d Brasil (Brasiliansk Portugisiska)" -#: bookwyrm/settings.py:293 +#: bookwyrm/settings.py:289 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Europeisk Portugisiska)" -#: bookwyrm/settings.py:294 +#: bookwyrm/settings.py:290 msgid "Svenska (Swedish)" msgstr "Svenska (Svenska)" -#: bookwyrm/settings.py:295 +#: bookwyrm/settings.py:291 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Förenklad Kinesiska)" -#: bookwyrm/settings.py:296 +#: bookwyrm/settings.py:292 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Traditionell Kinesiska)" @@ -356,54 +356,54 @@ msgstr "Något gick fel! Förlåt för det." msgid "About" msgstr "Om" -#: bookwyrm/templates/about/about.html:19 +#: bookwyrm/templates/about/about.html:20 #: bookwyrm/templates/get_started/layout.html:20 #, python-format msgid "Welcome to %(site_name)s!" msgstr "Välkommen till %(site_name)s!" -#: bookwyrm/templates/about/about.html:23 +#: bookwyrm/templates/about/about.html:24 #, python-format msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the BookWyrm network, this community is unique." msgstr "%(site_name)s är en del av BookWyrm, ett nätverk av oberoende, självstyrda gemenskaper för läsare. Medan du kan interagera sömlöst med användare var som helst i BookWyrm-nätverketså är den här gemenskapen unik." -#: bookwyrm/templates/about/about.html:40 +#: bookwyrm/templates/about/about.html:42 #, python-format msgid "%(title)s is %(site_name)s's most beloved book, with an average rating of %(rating)s out of 5." msgstr "%(title)s är %(site_name)s's mest omtyckta bok med ett genomsnittligt betyg på %(rating)s utav 5." -#: bookwyrm/templates/about/about.html:59 +#: bookwyrm/templates/about/about.html:61 #, python-format msgid "More %(site_name)s users want to read %(title)s than any other book." msgstr "Flera %(site_name)s användare vill läsa %(title)s än någon annan bok." -#: bookwyrm/templates/about/about.html:78 +#: bookwyrm/templates/about/about.html:80 #, python-format msgid "%(title)s has the most divisive ratings of any book on %(site_name)s." msgstr "%(title)s har de mest splittrade betygen av alla böcker på %(site_name)s." -#: bookwyrm/templates/about/about.html:89 +#: bookwyrm/templates/about/about.html:91 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." msgstr "Följ din läsning, prata om böcker, skriv recensioner och upptäck vad som ska läsas härnäst. BookWyrm är alltid annonsfri, företagsfientlig och gemenskapsorienterad, och är en mänsklig programvara som är utformad för att förbli liten och personlig. Om du har förfrågningar om funktioner, felrapporter eller storslagna drömmar, ta kontakt och gör dig själv hörd." -#: bookwyrm/templates/about/about.html:96 +#: bookwyrm/templates/about/about.html:98 msgid "Meet your admins" msgstr "Träffa dina administratörer" -#: bookwyrm/templates/about/about.html:99 +#: bookwyrm/templates/about/about.html:101 #, python-format msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the code of conduct, and respond when users report spam and bad behavior." msgstr "%(site_name)s's moderatorer och administratörer håller hemsidan uppe och fungerande, upprätthåller uppförandekoden och svarar när användarna rapporterar skräppost och dåligt uppförande." -#: bookwyrm/templates/about/about.html:113 +#: bookwyrm/templates/about/about.html:115 msgid "Moderator" msgstr "Moderator" -#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:132 +#: bookwyrm/templates/about/about.html:117 bookwyrm/templates/layout.html:132 msgid "Admin" msgstr "Administratör" -#: bookwyrm/templates/about/about.html:131 +#: bookwyrm/templates/about/about.html:133 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/snippets/status/status_options.html:35 #: bookwyrm/templates/snippets/user_options.html:14 diff --git a/locale/zh_Hans/LC_MESSAGES/django.po b/locale/zh_Hans/LC_MESSAGES/django.po index ec1edda7..4acf1dce 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-01 19:48+0000\n" -"PO-Revision-Date: 2022-03-04 15:46\n" +"POT-Creation-Date: 2022-03-08 19:55+0000\n" +"PO-Revision-Date: 2022-03-08 21:16\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Chinese Simplified\n" "Language: zh\n" @@ -261,73 +261,73 @@ msgstr "引用" msgid "Everything else" msgstr "所有其它内容" -#: bookwyrm/settings.py:211 +#: bookwyrm/settings.py:207 msgid "Home Timeline" msgstr "主页时间线" -#: bookwyrm/settings.py:211 +#: bookwyrm/settings.py:207 msgid "Home" msgstr "主页" -#: bookwyrm/settings.py:212 +#: bookwyrm/settings.py:208 msgid "Books Timeline" msgstr "书目时间线" -#: bookwyrm/settings.py:212 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:208 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "书目" -#: bookwyrm/settings.py:284 +#: bookwyrm/settings.py:280 msgid "English" msgstr "English(英语)" -#: bookwyrm/settings.py:285 +#: bookwyrm/settings.py:281 msgid "Deutsch (German)" msgstr "Deutsch(德语)" -#: bookwyrm/settings.py:286 +#: bookwyrm/settings.py:282 msgid "Español (Spanish)" msgstr "Español(西班牙语)" -#: bookwyrm/settings.py:287 +#: bookwyrm/settings.py:283 msgid "Galego (Galician)" msgstr "Galego(加利西亚语)" -#: bookwyrm/settings.py:288 +#: bookwyrm/settings.py:284 msgid "Italiano (Italian)" msgstr "Italiano(意大利语)" -#: bookwyrm/settings.py:289 +#: bookwyrm/settings.py:285 msgid "Français (French)" msgstr "Français(法语)" -#: bookwyrm/settings.py:290 +#: bookwyrm/settings.py:286 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių(立陶宛语)" -#: bookwyrm/settings.py:291 +#: bookwyrm/settings.py:287 msgid "Norsk (Norwegian)" msgstr "Norsk(挪威语)" -#: bookwyrm/settings.py:292 +#: bookwyrm/settings.py:288 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil(巴西葡萄牙语)" -#: bookwyrm/settings.py:293 +#: bookwyrm/settings.py:289 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu(欧洲葡萄牙语)" -#: bookwyrm/settings.py:294 +#: bookwyrm/settings.py:290 msgid "Svenska (Swedish)" msgstr "Svenska(瑞典语)" -#: bookwyrm/settings.py:295 +#: bookwyrm/settings.py:291 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文" -#: bookwyrm/settings.py:296 +#: bookwyrm/settings.py:292 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文(繁体中文)" @@ -356,54 +356,54 @@ msgstr "某些东西出错了!对不起啦。" msgid "About" msgstr "关于" -#: bookwyrm/templates/about/about.html:19 +#: bookwyrm/templates/about/about.html:20 #: bookwyrm/templates/get_started/layout.html:20 #, python-format msgid "Welcome to %(site_name)s!" msgstr "欢迎来到 %(site_name)s!" -#: bookwyrm/templates/about/about.html:23 +#: bookwyrm/templates/about/about.html:24 #, python-format msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the BookWyrm network, this community is unique." msgstr "%(site_name)s 是 BookWyrm 的一部分,这是一个为读者建立的独立、自我导向的社区网络。 虽然您可以在 BookWyrm 网络中与任何地方的用户无缝互动,但这个社区是独一无二的。" -#: bookwyrm/templates/about/about.html:40 +#: bookwyrm/templates/about/about.html:42 #, python-format msgid "%(title)s is %(site_name)s's most beloved book, with an average rating of %(rating)s out of 5." msgstr "%(title)s 是 %(site_name)s 最受欢迎的书,平均得分为 %(rating)s(满分五分)。" -#: bookwyrm/templates/about/about.html:59 +#: bookwyrm/templates/about/about.html:61 #, python-format msgid "More %(site_name)s users want to read %(title)s than any other book." msgstr "%(site_name)s 上的最用户想读的书籍是 %(title)s。" -#: bookwyrm/templates/about/about.html:78 +#: bookwyrm/templates/about/about.html:80 #, python-format msgid "%(title)s has the most divisive ratings of any book on %(site_name)s." msgstr "在 %(site_name)s 上,对 %(title)s 这本书的评分争议较大。" -#: bookwyrm/templates/about/about.html:89 +#: bookwyrm/templates/about/about.html:91 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." msgstr "记录您的阅读、谈论书籍、撰写评论、发现下一本书。 BookWyrm 永远是无广告、反公司化和面向社区的为人设计的软件,其目的是保持小规模和个人性。 如果您有特性请求、错误报告或大梦想, 联系我们,为自己发声。" -#: bookwyrm/templates/about/about.html:96 +#: bookwyrm/templates/about/about.html:98 msgid "Meet your admins" msgstr "遇见您的管理员" -#: bookwyrm/templates/about/about.html:99 +#: bookwyrm/templates/about/about.html:101 #, python-format msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the code of conduct, and respond when users report spam and bad behavior." msgstr "%(site_name)s 的仲裁员和管理员负责维持站点运行, 执行行为守则,并在用户报告垃圾邮件和不良行为时做出回应。" -#: bookwyrm/templates/about/about.html:113 +#: bookwyrm/templates/about/about.html:115 msgid "Moderator" msgstr "仲裁员" -#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:132 +#: bookwyrm/templates/about/about.html:117 bookwyrm/templates/layout.html:132 msgid "Admin" msgstr "管理员" -#: bookwyrm/templates/about/about.html:131 +#: bookwyrm/templates/about/about.html:133 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/snippets/status/status_options.html:35 #: bookwyrm/templates/snippets/user_options.html:14 diff --git a/locale/zh_Hant/LC_MESSAGES/django.po b/locale/zh_Hant/LC_MESSAGES/django.po index 4222d263..a410c4fe 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-01 19:48+0000\n" -"PO-Revision-Date: 2022-03-01 20:15\n" +"POT-Creation-Date: 2022-03-08 19:55+0000\n" +"PO-Revision-Date: 2022-03-08 21:16\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Chinese Traditional\n" "Language: zh\n" @@ -261,73 +261,73 @@ msgstr "" msgid "Everything else" msgstr "" -#: bookwyrm/settings.py:211 +#: bookwyrm/settings.py:207 msgid "Home Timeline" msgstr "主頁時間線" -#: bookwyrm/settings.py:211 +#: bookwyrm/settings.py:207 msgid "Home" msgstr "主頁" -#: bookwyrm/settings.py:212 +#: bookwyrm/settings.py:208 msgid "Books Timeline" msgstr "" -#: bookwyrm/settings.py:212 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:208 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "書目" -#: bookwyrm/settings.py:284 +#: bookwyrm/settings.py:280 msgid "English" msgstr "English(英語)" -#: bookwyrm/settings.py:285 +#: bookwyrm/settings.py:281 msgid "Deutsch (German)" msgstr "Deutsch(德語)" -#: bookwyrm/settings.py:286 +#: bookwyrm/settings.py:282 msgid "Español (Spanish)" msgstr "Español(西班牙語)" -#: bookwyrm/settings.py:287 +#: bookwyrm/settings.py:283 msgid "Galego (Galician)" msgstr "" -#: bookwyrm/settings.py:288 +#: bookwyrm/settings.py:284 msgid "Italiano (Italian)" msgstr "" -#: bookwyrm/settings.py:289 +#: bookwyrm/settings.py:285 msgid "Français (French)" msgstr "Français(法語)" -#: bookwyrm/settings.py:290 +#: bookwyrm/settings.py:286 msgid "Lietuvių (Lithuanian)" msgstr "" -#: bookwyrm/settings.py:291 +#: bookwyrm/settings.py:287 msgid "Norsk (Norwegian)" msgstr "" -#: bookwyrm/settings.py:292 +#: bookwyrm/settings.py:288 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "" -#: bookwyrm/settings.py:293 +#: bookwyrm/settings.py:289 msgid "Português Europeu (European Portuguese)" msgstr "" -#: bookwyrm/settings.py:294 +#: bookwyrm/settings.py:290 msgid "Svenska (Swedish)" msgstr "" -#: bookwyrm/settings.py:295 +#: bookwyrm/settings.py:291 msgid "简体中文 (Simplified Chinese)" msgstr "簡體中文" -#: bookwyrm/settings.py:296 +#: bookwyrm/settings.py:292 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文" @@ -356,54 +356,54 @@ msgstr "某些東西出錯了!抱歉。" msgid "About" msgstr "" -#: bookwyrm/templates/about/about.html:19 +#: bookwyrm/templates/about/about.html:20 #: bookwyrm/templates/get_started/layout.html:20 #, python-format msgid "Welcome to %(site_name)s!" msgstr "歡迎來到 %(site_name)s!" -#: bookwyrm/templates/about/about.html:23 +#: bookwyrm/templates/about/about.html:24 #, python-format msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the BookWyrm network, this community is unique." msgstr "" -#: bookwyrm/templates/about/about.html:40 +#: bookwyrm/templates/about/about.html:42 #, python-format msgid "%(title)s is %(site_name)s's most beloved book, with an average rating of %(rating)s out of 5." msgstr "" -#: bookwyrm/templates/about/about.html:59 +#: bookwyrm/templates/about/about.html:61 #, python-format msgid "More %(site_name)s users want to read %(title)s than any other book." msgstr "" -#: bookwyrm/templates/about/about.html:78 +#: bookwyrm/templates/about/about.html:80 #, python-format msgid "%(title)s has the most divisive ratings of any book on %(site_name)s." msgstr "" -#: bookwyrm/templates/about/about.html:89 +#: bookwyrm/templates/about/about.html:91 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." msgstr "" -#: bookwyrm/templates/about/about.html:96 +#: bookwyrm/templates/about/about.html:98 msgid "Meet your admins" msgstr "" -#: bookwyrm/templates/about/about.html:99 +#: bookwyrm/templates/about/about.html:101 #, python-format msgid "%(site_name)s's moderators and administrators keep the site up and running, enforce the code of conduct, and respond when users report spam and bad behavior." msgstr "" -#: bookwyrm/templates/about/about.html:113 +#: bookwyrm/templates/about/about.html:115 msgid "Moderator" msgstr "" -#: bookwyrm/templates/about/about.html:115 bookwyrm/templates/layout.html:132 +#: bookwyrm/templates/about/about.html:117 bookwyrm/templates/layout.html:132 msgid "Admin" msgstr "管理員" -#: bookwyrm/templates/about/about.html:131 +#: bookwyrm/templates/about/about.html:133 #: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/snippets/status/status_options.html:35 #: bookwyrm/templates/snippets/user_options.html:14 From 739b394ccc63522f4aca72953bbc01826eaa3ee3 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 13 Mar 2022 12:31:21 -0700 Subject: [PATCH 32/49] Catch error when trying to update book --- bookwyrm/views/books/books.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/bookwyrm/views/books/books.py b/bookwyrm/views/books/books.py index ad7ee943..3556a0dc 100644 --- a/bookwyrm/views/books/books.py +++ b/bookwyrm/views/books/books.py @@ -12,7 +12,7 @@ from django.views.decorators.http import require_POST from bookwyrm import forms, models from bookwyrm.activitypub import ActivitypubResponse -from bookwyrm.connectors import connector_manager +from bookwyrm.connectors import connector_manager, ConnectorException from bookwyrm.connectors.abstract_connector import get_image from bookwyrm.settings import PAGE_LENGTH from bookwyrm.views.helpers import is_api_request @@ -191,6 +191,10 @@ def update_book_from_remote(request, book_id, connector_identifier): ) book = get_object_or_404(models.Book.objects.select_subclasses(), id=book_id) - connector.update_book_from_remote(book) + try: + connector.update_book_from_remote(book) + except ConnectorException: + # the remote source isn't available or doesn't know this book + pass return redirect("book", book.id) From c7efa2340505ae22f5f0d225eedb3716e2545eb9 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 13 Mar 2022 12:38:29 -0700 Subject: [PATCH 33/49] Display error message for remote failure --- bookwyrm/templates/book/book.html | 9 +++++++++ bookwyrm/views/books/books.py | 5 +++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/bookwyrm/templates/book/book.html b/bookwyrm/templates/book/book.html index 0e2fd5d3..fa098281 100644 --- a/bookwyrm/templates/book/book.html +++ b/bookwyrm/templates/book/book.html @@ -12,6 +12,15 @@ {% endblock %} {% block content %} +{% if update_error %} +
    + + + {% trans "Unable to connect to remote source." %} + +
    +{% endif %} + {% with user_authenticated=request.user.is_authenticated can_edit_book=perms.bookwyrm.edit_book %}
    diff --git a/bookwyrm/views/books/books.py b/bookwyrm/views/books/books.py index 3556a0dc..a010c300 100644 --- a/bookwyrm/views/books/books.py +++ b/bookwyrm/views/books/books.py @@ -22,7 +22,7 @@ from bookwyrm.views.helpers import is_api_request class Book(View): """a book! this is the stuff""" - def get(self, request, book_id, user_statuses=False): + def get(self, request, book_id, user_statuses=False, update_error=False): """info about a book""" if is_api_request(request): book = get_object_or_404( @@ -80,6 +80,7 @@ class Book(View): else None, "rating": reviews.aggregate(Avg("rating"))["rating__avg"], "lists": lists, + "update_error": update_error, } if request.user.is_authenticated: @@ -195,6 +196,6 @@ def update_book_from_remote(request, book_id, connector_identifier): connector.update_book_from_remote(book) except ConnectorException: # the remote source isn't available or doesn't know this book - pass + return Book().get(request, book_id, update_error=True) return redirect("book", book.id) From 3885ae789b7c75da35f83e1a68242b015d135b12 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 13 Mar 2022 13:11:24 -0700 Subject: [PATCH 34/49] Manually add theme path rather than options --- bookwyrm/forms.py | 7 ++++++- bookwyrm/templates/settings/themes.html | 22 ++-------------------- bookwyrm/views/admin/themes.py | 5 ----- 3 files changed, 8 insertions(+), 26 deletions(-) diff --git a/bookwyrm/forms.py b/bookwyrm/forms.py index f152ed4e..7cfbe628 100644 --- a/bookwyrm/forms.py +++ b/bookwyrm/forms.py @@ -468,7 +468,12 @@ class ThemeForm(CustomForm): fields = ["name", "path"] widgets = { "name": forms.TextInput(attrs={"aria-describedby": "desc_name"}), - "path": forms.Select(attrs={"aria-describedby": "desc_path"}), + "path": forms.TextInput( + attrs={ + "aria-describedby": "desc_path", + "placeholder": "css/themes/theme-name.scss", + } + ), } diff --git a/bookwyrm/templates/settings/themes.html b/bookwyrm/templates/settings/themes.html index 44d0cece..3d4d83de 100644 --- a/bookwyrm/templates/settings/themes.html +++ b/bookwyrm/templates/settings/themes.html @@ -56,12 +56,7 @@ class="box" enctype="multipart/form-data" > - {% if not choices %} -
    - {% trans "No available theme files detected" %} -
    - {% endif %} -
    +
    {% csrf_token %}
    @@ -79,20 +74,7 @@ {% trans "Theme filename" %}
    -
    - -
    + {{ theme_form.path }} {% include 'snippets/form_errors.html' with errors_list=theme_form.path.errors id="desc_path" %}
    diff --git a/bookwyrm/views/admin/themes.py b/bookwyrm/views/admin/themes.py index 12b449af..ae9a748d 100644 --- a/bookwyrm/views/admin/themes.py +++ b/bookwyrm/views/admin/themes.py @@ -1,7 +1,5 @@ """ 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.shortcuts import get_object_or_404, redirect from django.template.response import TemplateResponse from django.utils.decorators import method_decorator @@ -41,11 +39,8 @@ class Themes(View): 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 37beb5a8f4e3cf085beb8173b80b4c77104e3a51 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 13 Mar 2022 13:19:02 -0700 Subject: [PATCH 35/49] Tick javascript cache buster --- bookwyrm/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index 6911d232..1199ba3a 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 = "c7154efb" +JS_CACHE = "bc93172a" # email EMAIL_BACKEND = env("EMAIL_BACKEND", "django.core.mail.backends.smtp.EmailBackend") From c08459cf5defb21ce74a56e02eb1f2743edc2e6b Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 13 Mar 2022 13:19:40 -0700 Subject: [PATCH 36/49] Tick version number --- bookwyrm/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index 1199ba3a..5ab3c7a1 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.2" +VERSION = "0.3.3" RELEASE_API = env( "RELEASE_API", From e4f94780ebdf79bb94617a843a8103b52cf3a47c Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 14 Mar 2022 09:06:29 -0700 Subject: [PATCH 37/49] Uses translated fields in admin user info --- bookwyrm/templates/settings/users/user_info.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bookwyrm/templates/settings/users/user_info.html b/bookwyrm/templates/settings/users/user_info.html index c60ae285..a5447931 100644 --- a/bookwyrm/templates/settings/users/user_info.html +++ b/bookwyrm/templates/settings/users/user_info.html @@ -71,14 +71,14 @@
    {{ user.last_active_date }}
    {% trans "Manually approved followers:" %}
    -
    {{ user.manually_approves_followers }}
    +
    {{ user.manually_approves_followers|yesno }}
    {% trans "Discoverable:" %}
    -
    {{ user.discoverable }}
    +
    {{ user.discoverable|yesno }}
    {% if not user.is_active %}
    {% trans "Deactivation reason:" %}
    -
    {{ user.deactivation_reason }}
    +
    {{ user.get_deactivation_reason_display }}
    {% endif %} {% if not user.is_active and user.deactivation_reason == "pending" %} @@ -104,7 +104,7 @@
    {{ server.application_version }}
    {% trans "Status:" %}
    -
    {{ server.status }}
    +
    {{ server.get_status_display }}
    {% if server.notes %}
    {% trans "Notes" %}
    From bf68b70fba0c8b45ae7fd29350dee708969c606c Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 14 Mar 2022 09:10:48 -0700 Subject: [PATCH 38/49] Use breadcrumbs in use admin view --- bookwyrm/templates/settings/users/user.html | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/bookwyrm/templates/settings/users/user.html b/bookwyrm/templates/settings/users/user.html index 676502e6..c18ba829 100644 --- a/bookwyrm/templates/settings/users/user.html +++ b/bookwyrm/templates/settings/users/user.html @@ -1,10 +1,23 @@ {% extends 'settings/layout.html' %} {% load i18n %} +{% load utilities %} {% block title %}{{ user.username }}{% endblock %} {% block header %} {{ user.username }} -{% trans "Back to users" %} +{% endblock %} + +{% block breadcrumbs %} + {% endblock %} {% block panel %} From 488d702473a90c07a449ce5d2c4afae6a434bb31 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 14 Mar 2022 09:27:18 -0700 Subject: [PATCH 39/49] Separate admin user list into tabbed lists --- .../templates/settings/users/user_admin.html | 101 +++++++++++------- bookwyrm/urls.py | 5 + bookwyrm/views/admin/user_admin.py | 5 +- 3 files changed, 71 insertions(+), 40 deletions(-) diff --git a/bookwyrm/templates/settings/users/user_admin.html b/bookwyrm/templates/settings/users/user_admin.html index 874ce818..e3de7793 100644 --- a/bookwyrm/templates/settings/users/user_admin.html +++ b/bookwyrm/templates/settings/users/user_admin.html @@ -1,5 +1,7 @@ {% extends 'settings/layout.html' %} {% load i18n %} +{% load utilities %} + {% block title %}{% trans "Users" %}{% endblock %} {% block header %} @@ -15,46 +17,67 @@ {% include 'settings/users/user_admin_filters.html' %} - - - {% url 'settings-users' as url %} - - - - - - - {% for user in users %} - - - - - - + {% for user in users %} + + + + + + {% if status != "local" %} + + {% endif %} + + {% endfor %} +
    - {% trans "Username" as text %} - {% include 'snippets/table-sort-header.html' with field="username" sort=sort text=text %} - - {% trans "Date Added" as text %} - {% include 'snippets/table-sort-header.html' with field="created_date" sort=sort text=text %} - - {% trans "Last Active" as text %} - {% include 'snippets/table-sort-header.html' with field="last_active_date" sort=sort text=text %} - - {% trans "Status" as text %} - {% include 'snippets/table-sort-header.html' with field="is_active" sort=sort text=text %} - - {% trans "Remote instance" as text %} - {% include 'snippets/table-sort-header.html' with field="federated_server__server_name" sort=sort text=text %} -
    {{ user.username }}{{ user.created_date }}{{ user.last_active_date }}{% if user.is_active %}{% trans "Active" %}{% else %}{% trans "Inactive" %}{% endif %} - {% if user.federated_server %} - {{ user.federated_server.server_name }} - {% elif not user.local %} - {% trans "Not set" %} +
    +
    + +
    +
    + +
    + + + {% url 'settings-users' as url %} + + + + + {% if status != "local" %} + {% endif %} - - - {% endfor %} -
    + {% trans "Username" as text %} + {% include 'snippets/table-sort-header.html' with field="username" sort=sort text=text %} + + {% trans "Date Added" as text %} + {% include 'snippets/table-sort-header.html' with field="created_date" sort=sort text=text %} + + {% trans "Last Active" as text %} + {% include 'snippets/table-sort-header.html' with field="last_active_date" sort=sort text=text %} + + {% trans "Status" as text %} + {% include 'snippets/table-sort-header.html' with field="is_active" sort=sort text=text %} + + {% trans "Remote instance" as text %} + {% include 'snippets/table-sort-header.html' with field="federated_server__server_name" sort=sort text=text %} +
    +
    {{ user|username }}{{ user.created_date }}{{ user.last_active_date }}{% if user.is_active %}{% trans "Active" %}{% else %}{% trans "Inactive" %}{% endif %} + {% if user.federated_server %} + {{ user.federated_server.server_name }} + {% else %} + {% trans "Not set" %} + {% endif %} +
    +
    {% include 'snippets/pagination.html' with page=users path=request.path %} {% endblock %} diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index b9c348a4..4d7f503f 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -125,6 +125,11 @@ urlpatterns = [ re_path( r"^settings/users/?$", views.UserAdminList.as_view(), name="settings-users" ), + re_path( + r"^settings/users/(?P(local|federated))\/?$", + views.UserAdminList.as_view(), + name="settings-users", + ), re_path( r"^settings/users/(?P\d+)/?$", views.UserAdmin.as_view(), diff --git a/bookwyrm/views/admin/user_admin.py b/bookwyrm/views/admin/user_admin.py index aa847959..df716d2c 100644 --- a/bookwyrm/views/admin/user_admin.py +++ b/bookwyrm/views/admin/user_admin.py @@ -19,7 +19,7 @@ from bookwyrm.settings import PAGE_LENGTH class UserAdminList(View): """admin view of users on this server""" - def get(self, request): + def get(self, request, status="local"): """list of users""" filters = {} server = request.GET.get("server") @@ -37,6 +37,8 @@ class UserAdminList(View): if email: filters["email__endswith"] = email + filters["local"] = status == "local" + users = models.User.objects.filter(**filters) sort = request.GET.get("sort", "-created_date") @@ -56,6 +58,7 @@ class UserAdminList(View): "users": paginated.get_page(request.GET.get("page")), "sort": sort, "server": server, + "status": status, } return TemplateResponse(request, "settings/users/user_admin.html", data) From f42e86343494beee61260c9429cf3b7621f0d8fc Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 14 Mar 2022 09:38:03 -0700 Subject: [PATCH 40/49] Updates user admin filters --- .../settings/reports/report_filters.html | 7 +++++++ bookwyrm/templates/settings/reports/reports.html | 2 +- .../templates/settings/users/email_filter.html | 16 ++++++++++++++++ .../settings/users/user_admin_filters.html | 7 ++++++- 4 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 bookwyrm/templates/settings/reports/report_filters.html create mode 100644 bookwyrm/templates/settings/users/email_filter.html diff --git a/bookwyrm/templates/settings/reports/report_filters.html b/bookwyrm/templates/settings/reports/report_filters.html new file mode 100644 index 00000000..48a3b7c8 --- /dev/null +++ b/bookwyrm/templates/settings/reports/report_filters.html @@ -0,0 +1,7 @@ +{% extends 'snippets/filters_panel/filters_panel.html' %} + +{% block filter_fields %} +{% include 'settings/users/username_filter.html' %} +{% include 'directory/community_filter.html' %} +{% include 'settings/users/server_filter.html' %} +{% endblock %} diff --git a/bookwyrm/templates/settings/reports/reports.html b/bookwyrm/templates/settings/reports/reports.html index c72fd03d..99cca1a7 100644 --- a/bookwyrm/templates/settings/reports/reports.html +++ b/bookwyrm/templates/settings/reports/reports.html @@ -30,7 +30,7 @@
    -{% 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 00000000..5d49d615 --- /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 48a3b7c8..c5ab2dab 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 41/49] 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 100daa03..95271795 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 00000000..7d946d14 --- /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 d95aa725..38a7fe35 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 42/49] 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 00000000..dac2007b --- /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 43/49] 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 dac2007b..a6f70433 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 00000000..6b2984b3 --- /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 00000000..ca59426d --- /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 00000000..64b85d0b --- /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 00000000..74a3417a --- /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 00000000..d609f15d --- /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 ff35a948..8af8fb81 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 00000000..15b27c0a --- /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 00000000..61b92ee8 --- /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 00000000..de229bc2 --- /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 00000000..647db3bf --- /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 00000000..0800166b --- /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 44/49] 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 a6f70433..07575293 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 45/49] 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 f7ed0969..31e44a7b 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 76cfb32b..c5d3ad3f 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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 z 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 OKKoyyIR954>i-{pfg{`i delta 21094 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 DOhGAq diff --git a/locale/es_ES/LC_MESSAGES/django.po b/locale/es_ES/LC_MESSAGES/django.po index 98d4e124..b68cde70 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-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 20:49\n" "Last-Translator: Mouse Reeve \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 6c5d17c4..4e3d049b 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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 delta 23057 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\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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 G6!U+qLv;%P delta 22885 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\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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 delta 21291 zcmZwPWpq`?!iVu4ECE7*1Pu_95C|3sf#4b-xVyW%JEs&V6nA%b3$DSPLa|c3xRs(U z6nUTjnaN%K@b0xHzwte`_c;l@_tMOSvt}oB-SJH@)8V=v-*GbHl>o;HP3SliN+{QH zve$N;aLj=@u`#B`(U=M6V-?(kQJAof;}pk=m_X2xTf93Ns@e2;_&NL#a$XM5iQQ{#~g}#l=3@0Fib=F}v{BHBJH8JhVp$6CpgK#Lah|VI^N*%!T zc-f|3VN=ra`H`IaJ1vP6z@C@{SE>NFU{;JpAAF1%@B?Q)(Wi#@lW>gf_pelM|V^l}2 zF+O&|tk?s6aVBc()}S}Wpz6nBVmyu7(#xo=d|>n6x@_bNs)Ixw&5cu{I?9YGFt@b? zs>AB2jv8VpcEF@K88w0V=!F|GAMQlW_$jKt*XW5Zr;}MiFVqcvP#tGLFU*OWaehpU zg{);zGpd4W*97xoN7N1HpdRNlsHfm7YNh-*5Zc;o7^wRki}wL-fv8JbO5W<^qOn#mm0i)In3-Zs>L4x#q;yv@IXTI$D`5)~J5F+4Nx4 z07u*Obkx9Hi-_n@ZNyZ#4K;(4s0No&XW%|+@BT(L{D!(gvVNw%Kc*s`4V7OE)xIL? z)3iS7spyWrI0hNG%b7<+pK2Sh9iBqXAWwhOQ4!QkqfuK`9km55P=}};>Jaurt-vPh zZdAJ?sI5JNdT(4t4eSFZ*Yh8LfXVQ)2BA96i<)sM)QqCheKt^stO;u6`eSMwg4&9y zs1;m}YPT6Ru>IB(s0m(Fn)^F9iKyZuTkzKU)#^3SH1I>!3qTDpm(4GRx?wbGV70L@ zc0;YyDpdUqsIA+NTFJBM(hP4A$%qe7OXUnQBTkH(u^(#bGNAUZ1ZuBq+H^bA00yFN zGz!&jhIIkz#w$=0h(WcF9mM*p;#D#<(%Yy3JU}hkOZ3B!)+B??k_VucFbnFb$Yayh zQSBR{`fZJB-x+n|;i!p>M@@X=VAek^k?mvz;yKhvU!gksf?BGCL(CqhK{d>c>Nr0( zzzP_Gi%~N>hFXamm=2$z>c<;u29^eORsvi^R52Vil+c>(0iE4$bj049H2hiPeRh(;KXcn0)AEp1NJK#HQ4xGbK) zDyaItKbZ0WRQ*uY))Yc5c{S7xTcB3B8!CS&s@^0_L0`@aBC5CpwUkG#=TQx>qh|UT zb)#3PrT>Z=nC}Sl{ofx$NtZ-zU3=672BEg(N7Q}BSZAV3H&{+Y6}O>oun#qmv#7&z z6*c2~s2RLO)%%9k(dS3=7&b%oHw;yO0%{B9pk}-l)&3A_3oiZ0`fFrQ$xwq=sPre) zo_)j3m~^E1C37D(BJDZK46GIEhFwuJ8-hA3Kci0jWGsfuQ7d*AHL>>?jNeAF{#%Fy zjpl;`e?@gL;wLkpF{m3%M{U6})X3Lj0LG%W;4Z4&6Le3+raz%>{2ev(RAbDFWWz$F z3%Q7BradqZ4n1n8$FF-B%GSpV=L=E&9Ccyg`gpW}Z z^BU(KfXneGq9qMOEp<86($>K+?2TTy1T*1URL3W+4^eyRG2XlfLQpd+Zmog3acj(i zqfi4_gL(D*?U}(80NxNlUaY=@K-W4lUwMG_pN`TK6L&?Eoq)9WEjvrB55IW7|N21zA zp=MkQ)nO}J-U+qz{ZZ|vpa!(ardQguD~5oMc2alaiO*8X zYRmRuHav^nYY>V2$rRayNQ2p;k4KNnf|2cI3{qHi7lw>@>K>T3SX=avPy@PxdMa+9>VHROHUlHSk@iEjWrA=p|IU8>l^hX48LRTGEbd zfjPzLPz_3NvwuqL{f%;xt(bu<_?&=EF&JnEFsz|^=C{qY>C-zTUKuh*yn`Y$x? zUD=7~MiHnNP84bYHLwvjL^arkTIyI-y67B%o7491*m?DJoZjD%z~z(m*#L$NJ-;RMuEFw>@2p$^|> z)S*0#>hPjXze7C*@z$CFq(coj3^k!*sP@roS%1Bm8rq6oP)qy+YHw#)m!KMKKrcLq zneZfL!$+u<@m^5u~f^;DF(9%!ebeHO8PXrrBxw%Yj;% zyr{EN3L~*1w%7ANoQOvH2(#l`)D1K2GE3JP%aY!K8qg=3uCUu|-FQ^T=dlW2L#;^g z9<%p(tV2-cr!X8-?PdMz5-Cqa&cizR8Vh4tPLO6Y6a#TGYU#Jw^g-0&yo(yZBh8<-&e>E(3z`UEQVHoK(*c`8+-UpEf&Er!XTavDiy3sBy zfQPUhzQdXUZ>X)hk8LnjtjQmUn%Ia~)?cT41{r#R?8Js_>J8L$9dXpGNFz)^ zdLyd-L1a?SJ)DgTj`3X{3mi9R-~=uwo#O<5MZxnp-Gi_BC;2GGu+!$_Ikk(@&Qu7; zAvhoXFzq>WD05*6()Dp7&OrKhg3p^he2Q5}r@vsHh7y>XbXDwtt#KKiK~1pRFZ|sI zr(ha%O}c1CxDwNn(d&}=uJL11cyou`f zGj2oQ%jRh~jx4^*xk@A{1@*3&f>x+A&F=oWQ*bcAb1T1mY9Lh7O!}Q;j`TC^ zi1BWkQ{4qM@Y&c2k7Eety~Q(+b#V~Rz&hx2n`Ot!TOl}j#+9K zYG5ldAznd!q4*tr@h7p zs$oyei-S;GvKCX~3Df|7L%r!k58RQ>DH?%VDOU+1 z{zRftBW{ISvLUD~7>%m96qDgP)Qonc>YYO!#%rjV-9nwA@0bZwJuw4}K&@a&RDV^F zeq2snTcIOrMtxBgN7?+Ts2eOq?fr7p8QF&ccpmHFOKgl$Pt8g!#8sqYFcCI>X8LV~ zx=(j^n*AS6L?a%Lp18!O*I;7O2T(IUi52lC*2IwKW~=(4%12>loP!$ZZdCh=*56Tw z{UK@sA212`cRXL1CGy22qytbZki+H|M0Fg6>bSLaFlx)DVIXcm4dlGdzmLmF|BIT~ z;+N*dwHnnf7Ty2;_dAiKWZXxM>=kNhzoVY>fLCTF#ZWgWk2<7{Y`P<=-B8pFC)x7F z)=ky}sCws6_3pf4|F!h5$tZ*g{xq-H;@FyWC)A-jhnm4_)RO*3*m)G4eI*uO%I43zpf6TTn|Li@M=GRL9RzH~MDN$^SBkEeq-e zRm55qwSp~B{R~IlXAx@YccPxIi!LIqh`dD2sQMeT6>U&A?19Q3i5l@7n_i4jq_?A1 z=5O@I?>6oI)(kuqW+OiUb+*c*-h?$VIl4L!(UJ^6y+B5zI-HNHxE#H3FY0+didvET zs2RRMwM+8ObQp*!NQYa?U`o=pZMrS`k?x1Sdj5Yl5oZCa;bxnTML*J)ZTbo7WB0R7 z`@J_yo((mSA{dDcQHObw&7X(rXAf$i=TR&507JRI^A{1VK)Mg+uw+9GBoeiE(Wt#^ zk6MA@$jF@qsCJuCD{=sJ*iPE=Yp5GPvwlUrX;XeQ^>d>q_jd{sQN@y|J*thVuo8G&hWDry32QHS>ss-F|6fu8$^_1EFLLWX8? z+g5yz%725J@n=kj$v&AS%!XR>GMEOdpz60qtwa~p77jqobS!EmR-^jcfg0ecPprQx z-XlXJe1n?dKd3G6{%pRI1))Y&D0UQm;4`Bqdvdr0M&jNY6YgD z>a9YxJ8Hdyn&>Cged5RSFn|9~LPR(8N6j=C4`3wL#CKR8%f&YxjzisOC29}%pgKN_ zI@MQkHNHX(U}gdj_sVQRt<+(hg-_A7hKMVnhkLKHCo&cDp#~C#dMxXqX4D#st3K+C z>_=_INz_0t+x$nUGxZl{Kp#&J_u0ycB}tb>P2fjQ{`>2kL}rnp6*!D~ft*Gi#v7Bu zbP?vleW;N>K^?AtQ3Lc&Vg{TM)lmrQ3>3patciMjdtr7QfZB>BsFmG^>i2?+h)(Mt zm3B%5Kp64$niE?;E(DrH)r!IA5k+*n#{xfTxY-t(v?t4JJjaSKy`QowRP7~TXYw-6(3NCGMH< zEGFOOS>oqi{!nSd{9VChly zN?|BAK)oqlsDW)n_xJx@M6?%2P)m6gwdA)^dzr%53@kJ1u?w>nMzt%88c2QA4LYOx znPXjoy5Sns9Qs-fCPeX89>bsP|229V8K6ty+gQA^*>+7~nP{&7YU z(F~WPI*vhoPM^h4e2Y38{+Uh3p{PSz%%UBg7d!DVpgU#<@^9Q0< zZd?%0zZ&ea6=G2XIgNU!-$8vgyhnBP8TDMp3pOvD6qti_TGYywK~10$s^0;a7k@yl z@D|h-#-b*EHrQqM{+2Cxj7=$cV=Gk8Vg}R#)p1|cOsAm^+X~c5974S@FJK;giyClH zh===cz&Y?B>FTKWMzXBtsjB26qP-h|+M~6o8J$MGINqT;OrOnsZdXL*k3>D+YfGNI{k}6%|N$dRno^$?NVkpTU!Y0kapE4qNQGknn^6`h4BmO(A`9J_!PCIUu-&I z4iD!N?}zlLEqjsEY?YJC!~N&DM5q;LifY#uwUymaThIr&pUW9eM0+~X7R*NtU=?bQ zwxK@HkD?ya+o-*Mf*RO&)D8S{n;T|C<%ghFt}tqV9Z*X@6xIK3bpQ81$B5{0xrCST zp-t}&^Ke>`K8sqJuso*Y;-~@FM73*<`LUPHUx_*^F{nd#2{n=Xs2A8<)ENrQ%OTeD zA3;P*RRr}|ltIm?JL>a#0II=s)Jm*Gt-v7+$LpvWdWD;_kO_4dOQ2pnt*ir4hjucm z-*xEHNKX*ar`1DL1CM;hbg2Bir~y_*J^yu4kJS*=z}BN?dH}UW=TR$m9Ru+(YQ;Pw zJe;2}H4ecA5j_8DkS@Pz7>t@(ZcK#bP#sl4Jtd7X8h=E+piW~6e2S5nt$+u=o^j}~ z5=KROxc}*90_u>zLA^OW3!0}XuprNWO){F0kpnlNmhu{Esb1i4OjO9scr@xz?LZCm zA!_DdY`J$~52rop;;6@NIcm%PLbXd$#7w9NYDFr#Y({<5A!&zwus=4&=ctP1i<%qN zK@G4CYGnqZwrmXM#6_qrIgM@cCTiHFn7gcb z^R>cS`u@Lzh;Hmz&iqQ%3^jup7=)`)TX5Q@ucL1K3H64IU*4ospdMR)48ttg8f&2@ zxE;4PsH`2)$*jmi+76H<^r zoxtIDe-`YvZ7FhQ=m*ye%3hKGgz$#=5tHqlCcY{@>wk-aizNOaq#@|4PGGy7`ZoQT z^mIZ8LfrK)?FJKKsFNFYtu(kl5fjBXiCZw0klyyyjQ9=WE_WN&za$yoN$7ECOQW55 z!d9+AzTQ;2^x2?mkiq>kke}hy*-HIEw#|CdoJIFPJ}t*Rw*E!({YekB^^~2#Wk<=U zs{8X;nGbD+j{1}V7CMEn8|n&;ujh~JFrf?`4zr_GUO~ciD(AvXG)PJOZ`&}Q zRrMN^KZ0N=!AdSF)g_XSu${b>6eJ_)O{UA6IG>iz zH{va+qw5|v!K0MvbNnL4UF&UplXakNQ-lh=iT_StYbpBy`P$&Pezz?n$ZST1Vg!9~ zEGMmxN?jiafu!{<=O4;>r8{c~m&r>{cuIZ{;Q?iOb8f~vScNc@perBsekK1jhN?Ys zxtxqdN|=N*ik#t8YEIDgFJT3hv{Z__l+}&KR|&JpZ;dAiu>^g#|47~}Y)D5X$&0%hk=D1R z$>jB>&R?WokxoTeOkNUOvA5NYZuT>Uj|rm)i)rLf;|#=m+KLxQuOsb2nXdVy6B23@ z{v>Z4WpP(c(y2*|rmPn6wzjM+dCzQ|Pj+WDVG_a4-!xxKg$P1l8ppkud`Mp*?Tr)h zPt+AoJnjmiqrs$$;90^jTW2PD8*N;5%aYFYpLCOW+z`m zhZD#=OVD+ahPviqFxInml-Gj1O17T9ezB*GCivK@5! z&p^~m7SeMlyK3{t5T8N)leYd{@`H%CLw;>^3KHK>yUWCDs{^jA#M6@h3+?u}h%_cr z8UMelfXzHiosPtx(^$VJ{6+l)1aH!xNav>f8u6;Qf^>dtgu$q5GLEGD8*LU5hLb)= z{{No;@e~dtjHBQJ1^KD;p7bH&QN(q5kv>IOMw;KSoDJml#{XW)ZK4ZxrrNS%^jV7V zGwFroA0nhnJv1x3jiKt@wSD$;Lo40$JToo--nc$;(`;yEa5O?)o#Ik*!) z+D==NPDao*k-kph7k7%mQ!j*|t3NK%=l@TH7%KL~0~B<(9R-uupRky`UgR|+j3Yjl zhI@!F!tYp-px=)FdmW~ot_oJg7Z5hs^n3IpxSpwmYbl-RT85o$d@$*m3Zy*=<7qJ3 zmhB?m#?B-gd1pw^R|obgY&}TXR_f&-{77D5>gnol`f<5`TUEw13VyO3Cb9Ojl~rDY zcyp{n!_)uCSJ`3m?%_xB(-X2OlWWL->RmEf?wYfixStS7{p2<;u8v#o@BS~AJ#6PYNJkT& z_WxC;>;<77Wdo?Q0xOW7#*HTs9uu0Amx3^faE#EO^0=!b<=5j9xP)@o12T`>o1eA5 zqp%N!b8T8}Vn}aRgsYgrsY+X2b12hwgZin6FC$(WBe4S(CBLcdt0!&t*!q9#^IumF zTe!=1c!>(xZJx@*2p>o%rTmF9xN;C?kgkFJF~jLf2(@i)5-&%nMcF?%)!vY#<4c_u zw%#w=|J7thQ=u~6wFT>l|3ID>;RSik>7)knTEuS?*ENZdkN7>pT;i1}*OiYjfqGx@ zB;k>*UzNOHiKj+A_PXZBMFx;j#CC9>f~AC)gzi-KBIwFVozB#GPWn9QYlPh7>GH$< z1V74W*!puwkEX1Hty9SMulgNq9oGg5zuF49DcE5PRB0m(7TB^<_=d9CgjIy4l>Kh& z9;Ixy0&ULNn?&LkTV9C#7KHP*YykR@=5o3JXD}wtcY6x{rK2Bh!|T>RZG|e7Pa!NL zoTFYp!g+$OahQ=XlQ!pUJ5yqQMnNlrFKs{BHlA^xf8)t4YHPP5?n{OAq_fh|TwA#- z>0_iT+Inq>FC@N^^5n!z5Ol?(eQol7BmD*U64nuPWumN_jhCnVL)`w4vYE%R6cx)6 zUJ>s}rA{<@PkIz)!4iZXlpP@5hw`z6k;J{p&x?&w*Cz50*?yJYMtU3R7~(~#H;=Sy zA{p7qs87ac>`b~7<|N&epz8n?bN#2I*Q85QRt;Yg@=|9dVd=Y3>8n_K*S&AxfL6V`ck14u==9%u^-Nfy zcaMHOroUl&Ec3s=YH0~W$-7CCsU_`#6`66Rh#7@mMJ>$!C9z~}YcsVvvhu-~q X9-BKo=4IYQUFm61_n7N1KR5e7W@QCP diff --git a/locale/lt_LT/LC_MESSAGES/django.po b/locale/lt_LT/LC_MESSAGES/django.po index b272ecf0..b74de2d2 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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 A3;+NC delta 21308 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\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 zcmYk^1#}h1!-wI$2|<%Uf&@Yc0YcCa+>2{**W&IFyueZ@?gV!&ZpEcI#flgB1I3}m ziJ>1g69{m=2RPa-1rd4RuQ&ERH)c7rw#z7}?lyn&bC)5U=4Q$8ntnO&ljJ z8Dp9{PF`G&>ga!%3VpwGoQxQX`S2Sog*~w*{)`%+Z!^b9kNGhv*2NHPgAq6gtKxi{ z|44dV$MIoUDJTeS;W%3`26f{-Ootz^E{3*roG9#$%AbL{ZwqRG$1wvw!Eg+0WmYO0 z(~vG})88R;b7C7*n=3Gl;;;WTkM2C;Bb6`nXpG2vx3vG zJL#j=LTw$V8|f8T2UE3koEF##UFtX|iLf0`?)Hwub~)ovBfO8=!!jKlhd!L1$mE=h z7>$KGI!+L_#Xi^%bK+CfghCmm23mvvMBpwghu3f*Ms#NX)#2REW>4Rs_Pk&h$0>l- zFdGiX8o17;KccoGOIOF?tUA@Lbul^V#uy*FVM6SK0XPH`;CNK|w63hbGUnQhrKlOL z#sJ)dDnEg0=sf!3HPqJJ#9;JeeG_A9^v6u7`nfR?7C{}#vKWYUQ01*$BC62Y+6UE; z@&j-zs=-;943}HCq3%11fp`wH;4M_c2{`~-*&y_`k4Z@PK~3-nR6RG2NFE~dP)l+e z)zL-N%>P6!@iWvwUZV!+>0vtdM>UidwK9>Y4zpVGVp7t@QTJEH7;J>}>pEkI=(*pG zda*o1Eor=-<_v`364KQ$0-s|+4C-YLX(d#{%TbTx j+gTQGhp3V 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 TZ`X-DUfq)JYEa0lbiV%sW{8sQ diff --git a/locale/pt_BR/LC_MESSAGES/django.po b/locale/pt_BR/LC_MESSAGES/django.po index 60b192c6..4b5ce586 100644 --- a/locale/pt_BR/LC_MESSAGES/django.po +++ b/locale/pt_BR/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 20:49\n" "Last-Translator: Mouse Reeve \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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%0Dq2@1mZ-C!>e^7f(ji>-QDv5LUM32DaQ1 za})1|di`eO0^EFtG56a57C-a(gB$@d$#5iKZ$*;p7@oQ2vdDqu8ilp$Gr0Xc@CiyT@ zYtlO#pHI9TZL3h$GV7W{c{;YRZ6 zmcU&aZXxk7?n|#tHQSjV?j}A4%aQ)E@qs##T)pf)Q*2zZs?@c?+tigJuD69V?Y?R! zXZ^Kz3#j;w;B}mjM~Lx# zMR^+e@3|*8>eTlmbtT@0*mTlM;zO_$>T>0#@Q8GTKtUQdC*Q}^IlmB_MC>-@X{4g$ z`NVbpqK&Q=lmke$NDXa=yuI#gC;x3`^MST~2gsQ-uz3qoL%zgEu+?dptdwSYBef+LUX4ii& zghYUZyNQc;v;DnDGO;kNteF8!f4ZjG=%(1QcLo?xL23AwHJB5g`EV-o#?L%d0ksb zLp3SeE?Dn>KU?_AHgdPL{~1f&Dbir-lDKgI@n1>bQvS}iUrPNu+x|JRxugcPU5Ihi z?ZUy>m^N*RAEKNeb+z-z%ju?4R|vsyTuk{-1-SmBadyh($k#}obUH4*UYIgOXWA~* zY7gZCq<+Nypgh^u{lT4+Df83E$z(^FNnTep!ab5Zi z*2uOUg8nA%avIp1VrcM#&F8{9l>KS=Gx=!JCek+2B+}=rsqOF1S>Y}z}2l8-0<3-M#*kCC5Z>jv9< zRNP0su0*^{n)pTCCCdKXTbcUo#6M{N8<3h%*odF6RbW1-;^imYG!a=*tU!C88KJoFFN1)MMpnSS%VZp{Qy!i+s==Hv)gv> zaW?Vk#8!TBuLrTK+*_Jh0(I}n4=4Rb{1oasXZmwF?a5sK;^xlWaDZ4Z)Rh`9QeW4$ zsYu;n;$^WC$&=LF-IAZFwEdBMHhZta-ARd*AJb0PPxu(?(_dfxg7Ts=tG%I+ZKQ@B zNlj=}%+|f-eGPQwr$u8T!>E}-i&>OoY>RffjcYdPq&vqCSnBlayBp4=ZC%nL(q{WO zrO7X)zC7NuG2NP<^f$5em{S3+h5CZ)KqdzbV@MNd5a_Nl{~667sfqW;5u~)_i%?aT ze0{~pXW*W>$e&rA3Zzk_2x56ix{^`OOWXg*UnZ|>h4qcT;JVsETW%Od!_%l^tm_rY zi*(+$seyxN)8BTUo4l@+SdA1->Peg3)UU!;rrH@zxdL?$h^@D=;uxuczNX?M4NBs6 z+p)XN7x|^!=tJ;t)YZ{?m^SIS?>q((PlH2A>umi~@=3&tV|~1XJxHIgq|0&st^zi2 zoSSOWS#eSrEoxCtMqPEvpKOOGD37&wSH(}Hg4As%Eu^jwshX|tOuh+8*Hnxl=}&4+ zZC`cim&@h!rou(=J}HRc8KNz0BX<+~pSHvnkoU56oyeyopNf>1KIV}Y5&MqRmZU3) z*a<8^dP2L43UbXNzYI6)41A!`I0jyUUlXiC|3v*V^8Lv-CAFiEwK@ZJ2=CuEykbsSGIv zm8(e`sJlX$UjoiJtfj_ZT!m>p5#MEZQqBa@!;N*hScy#ts)Fy*7f|HVkk-z9T8 zx&JOGr=8vRRHmY`7B>_pUye9`8{@v_6U#^Xnbeg?E9zd7*A+{CE%`#G=*+>Z+&6;Q zbbPL#CrN+D`M8SN-qdg$`De6v`$epbok?}u(|ELlxc^>H;g+-s#W$og+?$Vb2GTTA z31UyUp&RiLqncnBC!9pNw{5$La#hM> zX|F32PQ*}RIY^ty*Q4z=tVz=Km~tOd8rnA3pXnpW_?bFq2NmB^PC>dx{w|$Fk=K<4 zClV`6OjjfF-`Kp$S;&tjrt3ZVLiWCal-p50NXlyK)#fDmn>ub!RpR=d|hmXX_4P66q1~7Am&+@|v^}Nf(X>c*G_>I6m9EZ;$XQi8LQ@BEq*\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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 delta 22509 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 NeU)lU=~qMB{U2`ObeRAE diff --git a/locale/sv_SE/LC_MESSAGES/django.po b/locale/sv_SE/LC_MESSAGES/django.po index 303495c6..691eb7cc 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 4acf1dce..b4b67c95 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 a410c4fe..7e25b4b9 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 46/49] 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 38a7fe35..d886d12f 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 47/49] 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 7d946d14..99887389 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 d886d12f..fc15d26a 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 49/49] 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 91d9b8f0..72df1371 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"} ),