diff --git a/assets/css/gifting/shortcode-checkout.css b/assets/css/gifting/shortcode-checkout.css index 2c7a866..ee0751b 100644 --- a/assets/css/gifting/shortcode-checkout.css +++ b/assets/css/gifting/shortcode-checkout.css @@ -28,3 +28,36 @@ border-color: var(--wc-red, #cc1818); color: var(--wc-red, #cc1818); } + +.wcsg_add_recipient_fields_container label { + display: inline-block; + margin-bottom: 20px; +} + +.wcsg_add_recipient_fields_container .wcsg_add_recipient_fields .woocommerce_subscriptions_gifting_recipient_email { + padding: 0; + margin-bottom: 20px; +} + +.wcsg_add_recipient_fields_container .wcsg_add_recipient_fields.hidden { + display: none; +} + +.wcsg_add_recipient_fields_container .recipient_email:focus { + outline-offset: -2px; +} + +#woocommerce_subscriptions_gifting_field { + display: flex; + flex-wrap: wrap; + align-items: center; + max-width: 100%; +} + +#woocommerce_subscriptions_gifting_field div { + display: inline-flex; + align-items: center; + max-width: 100%; + word-break: break-all; + word-wrap: break-word; +} diff --git a/assets/js/gifting/wcs-gifting.js b/assets/js/gifting/wcs-gifting.js index 85c2e12..65f5d86 100644 --- a/assets/js/gifting/wcs-gifting.js +++ b/assets/js/gifting/wcs-gifting.js @@ -156,8 +156,8 @@ jQuery( document ).ready( function ( $ ) { '.woocommerce-cart-form :input[type="submit"][name="update_cart"]' ); - if ( $updateCartButton.length ) { - $updateCartButton.prop( 'disabled', ! allValid ); + if ( $updateCartButton.length && ! allValid ) { + $updateCartButton.prop( 'disabled', true ); } return allValid; diff --git a/build/gifting-blocks-checkout-rtl.css b/build/gifting-blocks-checkout-rtl.css deleted file mode 100644 index 92b2d95..0000000 --- a/build/gifting-blocks-checkout-rtl.css +++ /dev/null @@ -1 +0,0 @@ -.wcsg_add_recipient_fields_container label{display:inline-block;margin-bottom:20px}.wcsg_add_recipient_fields_container .wcsg_add_recipient_fields .woocommerce_subscriptions_gifting_recipient_email{margin-bottom:20px;padding:0}.wcsg_add_recipient_fields_container .recipient_email:focus{outline-offset:-2px}.wcsg-gifting-to-container-editing{display:flex;gap:5px;margin-top:12px}.wcsg-gifting-to-container-editing .wc-block-components-text-input{flex-grow:1;margin-top:0}.wcsg-gifting-to-container-editing .wp-element-button.gifting-update-button:not(.is-link){min-height:unset;padding:0 var(--xs,20px)}.wcsg-gifting-to-container-editing .components-base-control__field{margin-bottom:0}.wcsg-gifting-to-container-editing .has-error .components-text-control__input{color:var(--wc-red,#cc1818)}.wcsg-gifting-to-container-view{display:flex;gap:5px}.wcsg-gifting-to-container-view .components-button.is-link{color:var(--wp--preset--color--contrast);font-size:medium}.wcsg-block-recipient-container .components-checkbox-control__label{font-size:medium}.wc-block-cart .wc-block-components-product-details__gifting-to,.wc-block-cart .wc-block-components-product-details__gifting-to-hidden,.wc-block-cart .wc-block-components-product-details__item-key,.wc-block-checkout .wc-block-components-product-details__gifting-to-hidden,.wc-block-checkout .wc-block-components-product-details__item-key,.wp-block-woocommerce-mini-cart-contents .wc-block-components-product-details__gifting-to,.wp-block-woocommerce-mini-cart-contents .wc-block-components-product-details__gifting-to-hidden,.wp-block-woocommerce-mini-cart-contents .wc-block-components-product-details__item-key{display:none} diff --git a/build/gifting-blocks-checkout.css b/build/gifting-blocks-checkout.css deleted file mode 100644 index 92b2d95..0000000 --- a/build/gifting-blocks-checkout.css +++ /dev/null @@ -1 +0,0 @@ -.wcsg_add_recipient_fields_container label{display:inline-block;margin-bottom:20px}.wcsg_add_recipient_fields_container .wcsg_add_recipient_fields .woocommerce_subscriptions_gifting_recipient_email{margin-bottom:20px;padding:0}.wcsg_add_recipient_fields_container .recipient_email:focus{outline-offset:-2px}.wcsg-gifting-to-container-editing{display:flex;gap:5px;margin-top:12px}.wcsg-gifting-to-container-editing .wc-block-components-text-input{flex-grow:1;margin-top:0}.wcsg-gifting-to-container-editing .wp-element-button.gifting-update-button:not(.is-link){min-height:unset;padding:0 var(--xs,20px)}.wcsg-gifting-to-container-editing .components-base-control__field{margin-bottom:0}.wcsg-gifting-to-container-editing .has-error .components-text-control__input{color:var(--wc-red,#cc1818)}.wcsg-gifting-to-container-view{display:flex;gap:5px}.wcsg-gifting-to-container-view .components-button.is-link{color:var(--wp--preset--color--contrast);font-size:medium}.wcsg-block-recipient-container .components-checkbox-control__label{font-size:medium}.wc-block-cart .wc-block-components-product-details__gifting-to,.wc-block-cart .wc-block-components-product-details__gifting-to-hidden,.wc-block-cart .wc-block-components-product-details__item-key,.wc-block-checkout .wc-block-components-product-details__gifting-to-hidden,.wc-block-checkout .wc-block-components-product-details__item-key,.wp-block-woocommerce-mini-cart-contents .wc-block-components-product-details__gifting-to,.wp-block-woocommerce-mini-cart-contents .wc-block-components-product-details__gifting-to-hidden,.wp-block-woocommerce-mini-cart-contents .wc-block-components-product-details__item-key{display:none} diff --git a/build/wcsg-blocks-integration-rtl.css b/build/wcsg-blocks-integration-rtl.css new file mode 100644 index 0000000..6e270d3 --- /dev/null +++ b/build/wcsg-blocks-integration-rtl.css @@ -0,0 +1 @@ +.wcsg-gifting-to-container-editing{display:flex;gap:5px;margin-top:12px}.wcsg-gifting-to-container-editing .wc-block-components-text-input{flex-grow:1;margin-top:0}.wcsg-gifting-to-container-editing .wp-element-button.gifting-update-button:not(.is-link){min-height:unset;padding:0 var(--xs,20px)}.wcsg-gifting-to-container-editing .components-base-control__field{margin-bottom:0}.wcsg-gifting-to-container-editing .wc-block-components-text-input input:-webkit-autofill{padding-top:.5em}.wcsg-gifting-to-container-editing .has-error .components-text-control__input{color:var(--wc-red,#cc1818)}.wp-block-woocommerce-mini-cart-contents .wcsg-gifting-to-container-editing{flex-direction:column}.wp-block-woocommerce-mini-cart-contents .gifting-update-button{height:40px}.wcsg-gifting-to-container-view{align-items:center;display:flex;flex-wrap:wrap;gap:5px;max-width:100%}.wcsg-gifting-to-container-view span{align-items:center;display:inline-flex;max-width:100%;word-break:break-all;word-wrap:break-word;gap:5px}.wcsg-gifting-to-container-view .components-button.is-link{color:var(--wp--preset--color--contrast);flex-shrink:0;font-size:medium}.wc-block-checkout,.wc-block-components-product-details__gifting-to{align-items:center;display:flex;flex-wrap:wrap;max-width:100%}.wc-block-checkout .wc-block-components-product-details__name:after,.wc-block-components-product-details__gifting-to .wc-block-components-product-details__name:after{content:" "}.wc-block-checkout .wc-block-components-product-details__value,.wc-block-components-product-details__gifting-to .wc-block-components-product-details__value{align-items:center;display:inline-flex;max-width:100%;word-break:break-all;word-wrap:break-word}.wcsg-block-recipient-container .components-checkbox-control__label{font-size:medium}.wc-block-cart .wc-block-components-product-details__gifting-to,.wc-block-cart .wc-block-components-product-details__gifting-to-hidden,.wc-block-cart .wc-block-components-product-details__item-key,.wc-block-checkout .wc-block-components-product-details__gifting-to-hidden,.wc-block-checkout .wc-block-components-product-details__item-key,.wp-block-woocommerce-mini-cart-contents .wc-block-components-product-details__gifting-to,.wp-block-woocommerce-mini-cart-contents .wc-block-components-product-details__gifting-to-hidden,.wp-block-woocommerce-mini-cart-contents .wc-block-components-product-details__item-key{display:none} diff --git a/build/gifting-blocks-checkout.asset.php b/build/wcsg-blocks-integration.asset.php similarity index 67% rename from build/gifting-blocks-checkout.asset.php rename to build/wcsg-blocks-integration.asset.php index f9e9b08..64da8d3 100644 --- a/build/gifting-blocks-checkout.asset.php +++ b/build/wcsg-blocks-integration.asset.php @@ -1 +1 @@ - array('react', 'react-dom', 'wc-blocks-checkout', 'wp-components', 'wp-data', 'wp-i18n', 'wp-plugins', 'wp-url'), 'version' => 'a0b59d802da6d44a20b3'); + array('react', 'react-dom', 'wc-blocks-checkout', 'wp-components', 'wp-data', 'wp-i18n', 'wp-plugins', 'wp-url'), 'version' => 'e5022699093de48ed96e'); diff --git a/build/wcsg-blocks-integration.css b/build/wcsg-blocks-integration.css new file mode 100644 index 0000000..6e270d3 --- /dev/null +++ b/build/wcsg-blocks-integration.css @@ -0,0 +1 @@ +.wcsg-gifting-to-container-editing{display:flex;gap:5px;margin-top:12px}.wcsg-gifting-to-container-editing .wc-block-components-text-input{flex-grow:1;margin-top:0}.wcsg-gifting-to-container-editing .wp-element-button.gifting-update-button:not(.is-link){min-height:unset;padding:0 var(--xs,20px)}.wcsg-gifting-to-container-editing .components-base-control__field{margin-bottom:0}.wcsg-gifting-to-container-editing .wc-block-components-text-input input:-webkit-autofill{padding-top:.5em}.wcsg-gifting-to-container-editing .has-error .components-text-control__input{color:var(--wc-red,#cc1818)}.wp-block-woocommerce-mini-cart-contents .wcsg-gifting-to-container-editing{flex-direction:column}.wp-block-woocommerce-mini-cart-contents .gifting-update-button{height:40px}.wcsg-gifting-to-container-view{align-items:center;display:flex;flex-wrap:wrap;gap:5px;max-width:100%}.wcsg-gifting-to-container-view span{align-items:center;display:inline-flex;max-width:100%;word-break:break-all;word-wrap:break-word;gap:5px}.wcsg-gifting-to-container-view .components-button.is-link{color:var(--wp--preset--color--contrast);flex-shrink:0;font-size:medium}.wc-block-checkout,.wc-block-components-product-details__gifting-to{align-items:center;display:flex;flex-wrap:wrap;max-width:100%}.wc-block-checkout .wc-block-components-product-details__name:after,.wc-block-components-product-details__gifting-to .wc-block-components-product-details__name:after{content:" "}.wc-block-checkout .wc-block-components-product-details__value,.wc-block-components-product-details__gifting-to .wc-block-components-product-details__value{align-items:center;display:inline-flex;max-width:100%;word-break:break-all;word-wrap:break-word}.wcsg-block-recipient-container .components-checkbox-control__label{font-size:medium}.wc-block-cart .wc-block-components-product-details__gifting-to,.wc-block-cart .wc-block-components-product-details__gifting-to-hidden,.wc-block-cart .wc-block-components-product-details__item-key,.wc-block-checkout .wc-block-components-product-details__gifting-to-hidden,.wc-block-checkout .wc-block-components-product-details__item-key,.wp-block-woocommerce-mini-cart-contents .wc-block-components-product-details__gifting-to,.wp-block-woocommerce-mini-cart-contents .wc-block-components-product-details__gifting-to-hidden,.wp-block-woocommerce-mini-cart-contents .wc-block-components-product-details__item-key{display:none} diff --git a/build/gifting-blocks-checkout.js b/build/wcsg-blocks-integration.js similarity index 66% rename from build/gifting-blocks-checkout.js rename to build/wcsg-blocks-integration.js index 34e5cdc..2dc0abd 100644 --- a/build/gifting-blocks-checkout.js +++ b/build/wcsg-blocks-integration.js @@ -1 +1 @@ -(()=>{"use strict";var e={20:(e,t,n)=>{var o=n(609),i=Symbol.for("react.element"),c=Symbol.for("react.fragment"),r=Object.prototype.hasOwnProperty,s=o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,a={key:!0,ref:!0,__self:!0,__source:!0};function l(e,t,n){var o,c={},l=null,u=null;for(o in void 0!==n&&(l=""+n),void 0!==t.key&&(l=""+t.key),void 0!==t.ref&&(u=t.ref),t)r.call(t,o)&&!a.hasOwnProperty(o)&&(c[o]=t[o]);if(e&&e.defaultProps)for(o in t=e.defaultProps)void 0===c[o]&&(c[o]=t[o]);return{$$typeof:i,type:e,key:l,ref:u,props:c,_owner:s.current}}t.Fragment=c,t.jsx=l,t.jsxs=l},338:(e,t,n)=>{var o=n(795);t.H=o.createRoot,o.hydrateRoot},609:e=>{e.exports=window.React},795:e=>{e.exports=window.ReactDOM},848:(e,t,n)=>{e.exports=n(20)}},t={};function n(o){var i=t[o];if(void 0!==i)return i.exports;var c=t[o]={exports:{}};return e[o](c,c.exports,n),c.exports}var o=n(338);const i=window.wp.plugins;var c=n(609);const r=window.wp.i18n,s=window.wp.components,a=window.wp.data,l=window.wp.url,u=window.wc.blocksCheckout;var d=n(848);const m=({lineItem:e})=>{const[t,n]=(0,c.useState)(!1),[o,i]=(0,c.useState)(!1),[m,p]=(0,c.useState)(""),[w,_]=(0,c.useState)(!0),g="invalid-gifting-recipient",{setValidationErrors:f,clearValidationError:b}=(0,a.useDispatch)("wc/store/validation"),h=e?.querySelector(".wc-block-components-product-details__item-key .wc-block-components-product-details__value")?.textContent||"",v=(0,a.useSelect)((e=>{if(!h)return null;const t=e("wc/store/cart");if(!t)return null;try{const e=t.getCartData();return e?.items?.find((e=>e.key===h))||null}catch(e){return null}}),[h]),k=(0,c.useMemo)((()=>{if(!v?.item_data)return null;const e=v.item_data.find((e=>"gifting_to_hidden"===e.name));return e?.value||null}),[v]);(0,c.useEffect)((()=>{null!==k&&(p(k),n(!0))}),[k]),(0,c.useEffect)((()=>{if(!e)return;const t=e.querySelector(".wc-block-components-product-details__gifting-to-hidden");if(!t)return;const o=t.querySelector(".wc-block-components-product-details__value");p(o?o.textContent:""),n(!0)}),[e]);const x=e=>{if(!e&&!(0,l.isEmail)(m))return _(!1),void f({[g]:{message:(0,r.__)("Please enter a valid email address","woocommerce-subscriptions"),hidden:!1}});i(!1),_(!0),b(g),(0,u.extensionCartUpdate)({namespace:"wcsg-cart",data:{recipient:!0===e?"":m,itemKey:h}}).then((()=>{i(!1)})).catch((()=>{_(!1),i(!0),f({[g]:{message:(0,r.__)("Please enter a valid email address","woocommerce-subscriptions"),hidden:!1}})}))};return h?(0,d.jsxs)("div",{className:"wcsg-gifting-to-container",children:[(!t||o)&&(0,d.jsx)(s.CheckboxControl,{"aria-label":window.wcSettings.wcsg_subscriptions_data.gifting_checkbox_text||(0,r.__)("This is a gift","woocommerce-subscriptions"),label:window.wcSettings.wcsg_subscriptions_data.gifting_checkbox_text||(0,r.__)("This is a gift","woocommerce-subscriptions"),checked:t,onChange:e=>{n(e),i(e)}}),t&&!o&&(0,d.jsxs)("div",{className:"wcsg-gifting-to-container-view",children:[(0,d.jsxs)("span",{title:(0,r.__)("Gifting to","woocommerce-subscriptions"),children:[(0,r.__)("Gifting to:","woocommerce-subscriptions")," ",!o&&m]}),(0,d.jsx)(s.Button,{variant:"link",onClick:()=>i(!0),children:(0,r.__)("Edit","woocommerce-subscriptions")}),(0,d.jsx)(s.Button,{variant:"link","aria-label":(0,r.__)("Remove gift recipient","woocommerce-subscriptions"),onClick:()=>(n(!1),p(""),void x(!0)),children:(0,r.__)("Remove","woocommerce-subscriptions")})]}),o&&(0,d.jsxs)("div",{className:"wcsg-gifting-to-container-editing",children:[(0,d.jsx)(s.TextControl,{type:"email",className:"wc-block-components-text-input "+(w?"":"has-error"),value:m,onChange:e=>p(e),onFocus:()=>_(!0),"aria-label":(0,r.__)("Gifting recipient","woocommerce-subscriptions"),role:"textbox"}),(0,d.jsx)("button",{className:"wc-block-components-button wp-element-button gifting-update-button",onClick:()=>x(!1),name:"Update",children:(0,r.__)("Update","woocommerce-subscriptions")})]}),o&&!w&&(0,d.jsx)(u.ValidationInputError,{elementId:g,propertyName:g})]}):null},p=()=>{const{__internalSetUseShippingAsBilling:e,setEditingShippingAddress:t}=(0,a.useDispatch)("wc/store/checkout"),n=(0,a.useSelect)((e=>{const t=e("wc/store/cart");if(!t)return null;try{const e=t.getCartData();return e?.items?.find((e=>e.item_data.find((e=>"gifting_to_hidden"===e.name))))||null}catch(e){return null}}),[]);return(0,c.useEffect)((()=>{n&&(e(!1),t(!0))}),[n,e,t]),(0,d.jsx)(d.Fragment,{})};window.addEventListener("load",(function(){function e(){const e=document.querySelectorAll(".wc-block-components-product-metadata");0!==e.length&&e.forEach((function(e,t){const n="gifting-recipient-"+t;if(!document.getElementById(n)){const t=document.createElement("div");t.className="wcsg-block-recipient-container",t.id=n,e.parentNode.insertBefore(t,e)}(0,o.H)(document.getElementById(n)).render((0,d.jsx)(m,{lineItem:e}))}))}setTimeout((()=>{null!==document.querySelector(".wp-block-woocommerce-checkout")?(0,i.registerPlugin)("woocommerce-checkout-gifting",{render:p,icon:"gift",title:"Checkout Gifting Features",scope:"woocommerce-checkout"}):(e(),document.addEventListener("click",(function(t){t.target.matches(".wc-block-mini-cart__button, .wc-block-mini-cart__button *")&&setTimeout((()=>{e()}),200)})))}),200)}))})(); \ No newline at end of file +(()=>{"use strict";var e={20:(e,t,n)=>{var o=n(609),i=Symbol.for("react.element"),c=Symbol.for("react.fragment"),r=Object.prototype.hasOwnProperty,s=o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,a={key:!0,ref:!0,__self:!0,__source:!0};function l(e,t,n){var o,c={},l=null,u=null;for(o in void 0!==n&&(l=""+n),void 0!==t.key&&(l=""+t.key),void 0!==t.ref&&(u=t.ref),t)r.call(t,o)&&!a.hasOwnProperty(o)&&(c[o]=t[o]);if(e&&e.defaultProps)for(o in t=e.defaultProps)void 0===c[o]&&(c[o]=t[o]);return{$$typeof:i,type:e,key:l,ref:u,props:c,_owner:s.current}}t.Fragment=c,t.jsx=l,t.jsxs=l},338:(e,t,n)=>{var o=n(795);t.H=o.createRoot,o.hydrateRoot},609:e=>{e.exports=window.React},795:e=>{e.exports=window.ReactDOM},848:(e,t,n)=>{e.exports=n(20)}},t={};function n(o){var i=t[o];if(void 0!==i)return i.exports;var c=t[o]={exports:{}};return e[o](c,c.exports,n),c.exports}var o=n(338);const i=window.wp.plugins;var c=n(609);const r=window.wp.i18n,s=window.wp.components,a=window.wp.data,l=window.wp.url,u=window.wc.blocksCheckout;var d=n(848);const m=({lineItem:e})=>{const[t,n]=(0,c.useState)(!1),[o,i]=(0,c.useState)(!1),[m,p]=(0,c.useState)(""),[w,_]=(0,c.useState)(!0),g="invalid-gifting-recipient",{setValidationErrors:f,clearValidationError:b}=(0,a.useDispatch)("wc/store/validation"),h=e?.querySelector(".wc-block-components-product-details__item-key .wc-block-components-product-details__value")?.textContent||"",v=(0,a.useSelect)((e=>{if(!h)return null;const t=e("wc/store/cart");if(!t)return null;try{const e=t.getCartData();return e?.items?.find((e=>e.key===h))||null}catch(e){return null}}),[h]),k=(0,c.useMemo)((()=>{if(!v?.item_data)return null;const e=v.item_data.find((e=>"gifting_to_hidden"===e.name));return e?.value||null}),[v]);(0,c.useEffect)((()=>{null!==k&&(p(k),n(!0))}),[k]),(0,c.useEffect)((()=>{if(!e)return;const t=e.querySelector(".wc-block-components-product-details__gifting-to-hidden");if(!t)return;const o=t.querySelector(".wc-block-components-product-details__value");p(o?o.textContent:""),n(!0)}),[e]);const x=e=>{if(!e&&!(0,l.isEmail)(m))return _(!1),void f({[g]:{message:(0,r.__)("Please enter a valid email address","woocommerce-subscriptions"),hidden:!1}});i(!1),_(!0),b(g),(0,u.extensionCartUpdate)({namespace:"wcsg-cart",data:{recipient:!0===e?"":m,itemKey:h}}).then((()=>{i(!1)})).catch((()=>{_(!1),i(!0),f({[g]:{message:(0,r.__)("Please enter a valid email address","woocommerce-subscriptions"),hidden:!1}})}))};return h?(0,d.jsxs)("div",{className:"wcsg-gifting-to-container",children:[(!t||o)&&(0,d.jsx)(s.CheckboxControl,{"aria-label":window.wcSettings.wcsg_subscriptions_data.gifting_checkbox_text||(0,r.__)("This is a gift","woocommerce-subscriptions"),label:window.wcSettings.wcsg_subscriptions_data.gifting_checkbox_text||(0,r.__)("This is a gift","woocommerce-subscriptions"),checked:t,onChange:e=>{n(e),i(e)}}),t&&!o&&(0,d.jsxs)("div",{className:"wcsg-gifting-to-container-view",children:[(0,d.jsxs)("span",{title:(0,r.__)("Gifting to","woocommerce-subscriptions"),children:[(0,r.__)("Gifting to:","woocommerce-subscriptions")," ",!o&&m]}),(0,d.jsx)(s.Button,{variant:"link",onClick:()=>i(!0),children:(0,r.__)("Edit","woocommerce-subscriptions")}),(0,d.jsx)(s.Button,{variant:"link","aria-label":(0,r.__)("Remove gift recipient","woocommerce-subscriptions"),onClick:()=>(n(!1),p(""),void x(!0)),children:(0,r.__)("Remove","woocommerce-subscriptions")})]}),o&&(0,d.jsxs)("div",{className:"wcsg-gifting-to-container-editing",children:[(0,d.jsx)(s.TextControl,{type:"email",className:"wc-block-components-text-input "+(w?"":"has-error"),value:m,onChange:e=>p(e),onFocus:()=>_(!0),placeholder:(0,r.__)("Recipient's email address","woocommerce-subscriptions"),"aria-label":(0,r.__)("Gifting recipient","woocommerce-subscriptions"),role:"textbox"}),(0,d.jsx)("button",{className:"wc-block-components-button wp-element-button gifting-update-button",onClick:()=>x(!1),name:"Update",children:(0,r.__)("Update","woocommerce-subscriptions")})]}),o&&!w&&(0,d.jsx)(u.ValidationInputError,{elementId:g,propertyName:g})]}):null},p=()=>{const{__internalSetUseShippingAsBilling:e,setEditingShippingAddress:t}=(0,a.useDispatch)("wc/store/checkout"),n=(0,a.useSelect)((e=>{const t=e("wc/store/cart");if(!t)return null;try{const e=t.getCartData();return e?.items?.find((e=>e.item_data.find((e=>"gifting_to_hidden"===e.name))))||null}catch(e){return null}}),[]);return(0,c.useEffect)((()=>{n&&(e(!1),t(!0))}),[n,e,t]),(0,d.jsx)(d.Fragment,{})};window.addEventListener("load",(function(){let e=null;function t(){const t=document.querySelectorAll(".wc-block-components-product-metadata");0!==t.length&&(t.length&&e&&e.disconnect(),t.forEach((function(e,t){const n="gifting-recipient-"+t;if(!document.getElementById(n)){const t=document.createElement("div");t.className="wcsg-block-recipient-container",t.id=n,e.parentNode.insertBefore(t,e)}(0,o.H)(document.getElementById(n)).render((0,d.jsx)(m,{lineItem:e}))})))}function n(){setTimeout((()=>{e=new MutationObserver(t),t(),e.observe(document.body,{childList:!0,subtree:!0})}),200)}null!==document.querySelector(".wp-block-woocommerce-checkout")?(0,i.registerPlugin)("woocommerce-checkout-gifting",{render:p,icon:"gift",title:"Checkout Gifting Features",scope:"woocommerce-checkout"}):(n(),document.addEventListener("click",(function(e){e.target.matches(".wc-block-mini-cart__button, .wc-block-mini-cart__button *")&&n()})))}))})(); \ No newline at end of file diff --git a/changelog.txt b/changelog.txt index 29dadb2..3fc9a21 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,5 +1,17 @@ *** WooCommerce Subscriptions Changelog *** +2025-09-16 - version 7.9.0 + +* Add: REST API endpoint to retrieve subscriptions associated with a specific order ID. +* Fix: Keep subscription with successful renewals active when parent order fails. +* Fix: Error when renewing subscriptions with downloadable gifts. +* Fix: Improve performance by loading assets only when necessary. +* Fix: "Update cart" button being always enabled. +* Fix: Gifting recipient email layout issues when using a long e-mail address. +* Fix: Gifting checkbox not showing up on blocks cart when using WooCommerce 10.2+. +* Fix: Deleting a gifted subscription recipient will not delete their subscriptions, they will be moved to the subscription purchaser instead. +* Dev: The `wcs_get_subscriptions()` and `wcs_get_subscriptions_for_order()` functions are now stricter, and only return instances of `WC_Subscription`. + 2025-09-02 - version 7.8.2 * Fix: Error when updating/renewing subscriptions containing a pseudo coupon. * Fix: Fix gifting recipient notice being shown for non gifting orders. @@ -22,7 +34,7 @@ 2025-07-09 - version 7.7.0 * Fix: Restores normal behavior for the report caching updates scheduled action, which was failing due to a bad filepath. * Fix: Fix error when placing an order with a valid card after using a declined one. -* Fix: Fix order renewal errors when using some plugins. +* Fix: Fix order renewal errors when using some plugins. * Fix: Prevent fatal errors when loading or deleting subscriptions with corrupted date values stored in a database. * Fix: Prevent fatal errors when trying to save invalid date values and display better error messages instead. * Fix: Fix broken blocks and javascript translations. diff --git a/includes/api/class-wc-rest-subscriptions-controller.php b/includes/api/class-wc-rest-subscriptions-controller.php index bd73565..783f18f 100644 --- a/includes/api/class-wc-rest-subscriptions-controller.php +++ b/includes/api/class-wc-rest-subscriptions-controller.php @@ -36,6 +36,8 @@ class WC_REST_Subscriptions_Controller extends WC_REST_Orders_Controller { * -- Subscription specific -- * GET /subscriptions/status * GET /subscriptions//orders + * GET /orders//subscriptions + * POST /orders//subscriptions * * @since 3.1.0 */ @@ -61,15 +63,25 @@ class WC_REST_Subscriptions_Controller extends WC_REST_Orders_Controller { 'schema' => array( $this, 'get_public_item_schema' ), ) ); - register_rest_route( $this->namespace, "/orders/(?P[\d]+)/{$this->rest_base}", array( + register_rest_route( + $this->namespace, + "/orders/(?P[\d]+)/{$this->rest_base}", array( - 'methods' => WP_REST_Server::CREATABLE, - 'callback' => array( $this, 'create_subscriptions_from_order' ), - 'permission_callback' => array( $this, 'create_item_permissions_check' ), - 'args' => $this->get_collection_params(), - ), - 'schema' => array( $this, 'get_public_item_schema' ), - ) ); + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => array( $this, 'get_order_subscriptions' ), + 'permission_callback' => array( $this, 'get_items_permissions_check' ), + 'args' => $this->get_collection_params(), + ), + array( + 'methods' => WP_REST_Server::CREATABLE, + 'callback' => array( $this, 'create_subscriptions_from_order' ), + 'permission_callback' => array( $this, 'create_item_permissions_check' ), + 'args' => $this->get_collection_params(), + ), + 'schema' => array( $this, 'get_public_item_schema' ), + ) + ); } /** @@ -206,6 +218,76 @@ class WC_REST_Subscriptions_Controller extends WC_REST_Orders_Controller { return apply_filters( 'wcs_rest_subscription_orders_response', $response, $request ); } + /** + * Gets the /orders/[id]/subscriptions response. + * + * @since 7.9.0 + * + * @param WP_REST_Request $request The request object. + * @return WP_Error|WP_REST_Response $response The response or an error if one occurs. + */ + public function get_order_subscriptions( $request ) { + $order_id = absint( $request['id'] ); + + if ( empty( $order_id ) ) { + return new WP_Error( 'woocommerce_rest_invalid_order_id', __( 'Invalid order ID.', 'woocommerce-subscriptions' ), array( 'status' => 404 ) ); + } + + $order = wc_get_order( $order_id ); + + if ( ! $order ) { + return new WP_Error( + 'woocommerce_rest_invalid_order_id', + // translators: %d is the order ID. + sprintf( __( 'Failed to load order object with the ID %d.', 'woocommerce-subscriptions' ), $order_id ), + array( 'status' => 404 ) + ); + } + + // Build arguments for wcs_get_subscriptions_for_order()x + $args = array( + 'order_type' => 'any', // Return all subscriptions for the order. + ); + + // Set arguments from request. + if ( ! empty( $request['orderby'] ) ) { + $args['orderby'] = $request['orderby']; + } + + if ( ! empty( $request['order'] ) ) { + $args['order'] = $request['order']; + } + + // Map standard request parameters to wcs_get_subscriptions_for_order() arguments. + if ( ! empty( $request['customer'] ) ) { + $args['customer_id'] = $request['customer']; + } + + if ( ! empty( $request['status'] ) ) { + $args['subscription_status'] = $request['status']; + } + + $subscriptions = wcs_get_subscriptions_for_order( $order, $args ); + + $response_data = array(); + + foreach ( $subscriptions as $subscription ) { + if ( is_a( $subscription, 'WC_Subscription' ) && ! wc_rest_check_post_permissions( 'shop_subscription', 'read', $subscription->get_id() ) ) { + continue; + } + + $response = $this->prepare_object_for_response( $subscription, $request ); + $response_data[] = $this->prepare_response_for_collection( $response ); + } + + $response = rest_ensure_response( $response_data ); + // Pagination is not fully supported, so we manually set the total. + $response->header( 'X-WP-Total', count( $response_data ) ); + $response->header( 'X-WP-TotalPages', 1 ); + + return $response; + } + /** * Overrides WC_REST_Orders_Controller::get_order_statuses() so that subscription statuses are * validated correctly. diff --git a/includes/class-wcs-api.php b/includes/class-wcs-api.php index 073a7f3..dd16573 100644 --- a/includes/class-wcs-api.php +++ b/includes/class-wcs-api.php @@ -8,6 +8,8 @@ * @since 2.0 */ +use Automattic\Jetpack\Constants; + if ( ! defined( 'ABSPATH' ) ) { exit; } @@ -153,7 +155,7 @@ class WCS_API { * @return boolean */ protected static function is_orders_api_request() { - if ( ! defined( 'REST_REQUEST' ) || ! REST_REQUEST || empty( $GLOBALS['wp']->query_vars['rest_route'] ) ) { + if ( ! Constants::is_true( 'REST_REQUEST' ) || empty( $GLOBALS['wp']->query_vars['rest_route'] ) ) { return false; } diff --git a/includes/core/class-wc-subscription.php b/includes/core/class-wc-subscription.php index 21598ce..7695e0b 100644 --- a/includes/core/class-wc-subscription.php +++ b/includes/core/class-wc-subscription.php @@ -2028,30 +2028,49 @@ class WC_Subscription extends WC_Order { } /** - * When a payment fails, either for the original purchase or a renewal payment, this function processes it. + * When related order fails, update the status of the related order and the subscription. + * Related order can fail because of payment failure or because of other reasons. * - * @since 1.0.0 - Migrated from WooCommerce Subscriptions v2.0 + * @param string $new_status The new status to set for the subscription. + * @param WC_Order|bool $related_order The related order that failed payment. False if no related order is found. + * @since 7.9.0 Replaces payment_failed() method. */ - public function payment_failed( $new_status = 'on-hold' ) { - - // Make sure the last order's status is set to failed - $last_order = $this->get_last_order( 'all', 'any' ); - - if ( false !== $last_order ) { - $last_order->update_meta_data( self::RENEWAL_FAILED_META_KEY, wc_bool_to_string( true ) ); - - if ( false === $last_order->has_status( 'failed' ) ) { - remove_filter( 'woocommerce_order_status_changed', 'WC_Subscriptions_Renewal_Order::maybe_record_subscription_payment' ); - $last_order->update_status( 'failed' ); - add_filter( 'woocommerce_order_status_changed', 'WC_Subscriptions_Renewal_Order::maybe_record_subscription_payment', 10, 3 ); - } else { - // If we didn't update the status, save the order to make sure our self::RENEWAL_FAILED_META_KEY meta data is saved. - $last_order->save(); + public function payment_failed_for_related_order( $new_status = 'on-hold', $related_order = false ) { + if ( is_a( $related_order, 'WC_Order' ) ) { + $related_order_was_modified = false; + if ( wcs_order_contains_renewal( $related_order ) ) { + $related_order->update_meta_data( self::RENEWAL_FAILED_META_KEY, wc_bool_to_string( true ) ); + $related_order_was_modified = true; } - } - // Log payment failure on order - $this->add_order_note( __( 'Payment failed.', 'woocommerce-subscriptions' ) ); + if ( false === $related_order->has_status( 'failed' ) ) { + remove_filter( 'woocommerce_order_status_changed', 'WC_Subscriptions_Renewal_Order::maybe_record_subscription_payment' ); + // No need to set $related_order_was_modified to true here because update status will save the changes. + $related_order->update_status( 'failed' ); + add_filter( 'woocommerce_order_status_changed', 'WC_Subscriptions_Renewal_Order::maybe_record_subscription_payment', 10, 3 ); + } elseif ( $related_order_was_modified ) { + // If we didn't update the status, save the order to make sure our self::RENEWAL_FAILED_META_KEY meta data is saved. + $related_order->save(); + } + + $this->add_order_note( + sprintf( + // translators: %d: related order ID + __( 'Related order #%d failed.', 'woocommerce-subscriptions' ), + $related_order->get_id() + ) + ); + } else { + wc_get_logger()->debug( + 'WC_Subscription::payment_failed_for_related_order is called without a related order', + array( + 'subscription_id' => $this->get_id(), + 'new_status' => $new_status, + 'related_order' => $related_order, + 'backtrace' => true, + ) + ); + } // Allow a short circuit for plugins & payment gateways to force max failed payments exceeded // This also forces the new status to be 'cancelled' if the filter is applied or the subscription is pending-cancel @@ -2068,11 +2087,23 @@ class WC_Subscription extends WC_Order { do_action( 'woocommerce_subscription_payment_failed', $this, $new_status ); - if ( false !== $last_order && wcs_order_contains_renewal( $last_order ) ) { - do_action( 'woocommerce_subscription_renewal_payment_failed', $this, $last_order ); + if ( false !== $related_order && wcs_order_contains_renewal( $related_order ) ) { + do_action( 'woocommerce_subscription_renewal_payment_failed', $this, $related_order ); } } + /** + * When a payment fails, either for the original purchase or a renewal payment, this function processes it. + * + * @since 1.0.0 - Migrated from WooCommerce Subscriptions v2.0 + * @deprecated 7.9.0 - The method incorrectly assumes that the last order failed, and sometimes causes side effects.Use payment_failed_for_related_order instead. + */ + public function payment_failed( $new_status = 'on-hold' ) { + // Make sure the last order's status is set to failed + $last_order = $this->get_last_order( 'all', 'any' ); + $this->payment_failed_for_related_order( $new_status, $last_order ); + } + /*** Refund related functions are required for the Edit Order/Subscription screen, but they aren't used on a subscription ************/ /** diff --git a/includes/core/class-wc-subscriptions-cart.php b/includes/core/class-wc-subscriptions-cart.php index f7f201e..8565e15 100644 --- a/includes/core/class-wc-subscriptions-cart.php +++ b/includes/core/class-wc-subscriptions-cart.php @@ -1159,19 +1159,20 @@ class WC_Subscriptions_Cart { */ public static function cart_contains_other_subscription_products( $product_id ) { - $cart_contains_other_subscription_products = false; + if ( empty( WC()->cart->cart_contents ) || ! WC_Subscriptions_Product::is_subscription( $product_id ) ) { + return false; + } - if ( ! empty( WC()->cart->cart_contents ) && WC_Subscriptions_Product::is_subscription( $product_id ) ) { - $is_subscription = WC_Subscriptions_Product::is_subscription( $product_id ); - foreach ( WC()->cart->cart_contents as $cart_item ) { - if ( wcs_get_canonical_product_id( $cart_item ) !== $product_id ) { - $cart_contains_other_subscription_products = true; - break; - } + foreach ( WC()->cart->cart_contents as $cart_item ) { + $item_product_id = wcs_get_canonical_product_id( $cart_item ); + $is_subscription = isset( $item_product_id ) ? WC_Subscriptions_Product::is_subscription( $item_product_id ) : false; + if ( $item_product_id !== $product_id && $is_subscription ) { + return true; } } - return $cart_contains_other_subscription_products; + // Return false because no other subscription product was found in the cart. + return false; } /** diff --git a/includes/core/class-wc-subscriptions-frontend-scripts.php b/includes/core/class-wc-subscriptions-frontend-scripts.php index b04e37a..0f89c67 100644 --- a/includes/core/class-wc-subscriptions-frontend-scripts.php +++ b/includes/core/class-wc-subscriptions-frontend-scripts.php @@ -34,11 +34,13 @@ class WC_Subscriptions_Frontend_Scripts { * @since 1.0.0 - Migrated from WooCommerce Subscriptions v3.1.3 */ public static function enqueue_scripts() { + global $post; + $dependencies = array( 'jquery' ); if ( is_cart() || is_checkout() ) { wp_enqueue_script( 'wcs-cart', self::get_file_url( 'assets/js/frontend/wcs-cart.js' ), $dependencies, WC_Subscriptions_Core_Plugin::instance()->get_library_version(), true ); - } elseif ( is_product() ) { + } elseif ( is_product() && WC_Subscriptions_Product::is_subscription( $post->ID ) ) { wp_enqueue_script( 'wcs-single-product', self::get_file_url( 'assets/js/frontend/single-product.js' ), $dependencies, WC_Subscriptions_Core_Plugin::instance()->get_library_version(), true ); } elseif ( wcs_is_view_subscription_page() ) { $subscription = wcs_get_subscription( absint( get_query_var( 'view-subscription' ) ) ); @@ -66,6 +68,7 @@ class WC_Subscriptions_Frontend_Scripts { * @since 1.0.0 - Migrated from WooCommerce Subscriptions v3.1.3 */ public static function enqueue_styles( $styles ) { + global $post; if ( is_checkout() || is_cart() ) { $styles['wcs-checkout'] = array( @@ -82,6 +85,35 @@ class WC_Subscriptions_Frontend_Scripts { 'media' => 'all', ); } + + if ( + wp_is_block_theme() || + ( + ! empty( $post ) && + ( + WC_Blocks_Utils::has_block_in_page( $post->ID, 'woocommerce/cart' ) || + WC_Blocks_Utils::has_block_in_page( $post->ID, 'woocommerce/mini-cart' ) || + WC_Blocks_Utils::has_block_in_page( $post->ID, 'woocommerce/checkout' ) + ) + ) + ) { + $styles['wcs-blocks-integration'] = array( + 'src' => \WC_Subscriptions_Core_Plugin::instance()->get_subscriptions_core_directory_url( 'build/index.css' ), + 'deps' => 'wc-checkout', + 'version' => WCS_Blocks_Integration::get_file_version( \WC_Subscriptions_Plugin::instance()->get_plugin_directory( 'build/index.css' ) ), + 'media' => 'all', + ); + + if ( WCSG_Admin::is_gifting_enabled() ) { + $styles['wcsg-blocks-integration'] = array( + 'src' => \WC_Subscriptions_Core_Plugin::instance()->get_subscriptions_core_directory_url( 'build/wcsg-blocks-integration.css' ), + 'deps' => 'wc-checkout', + 'version' => WCS_Blocks_Integration::get_file_version( \WC_Subscriptions_Plugin::instance()->get_plugin_directory( 'build/wcsg-blocks-integration.css' ) ), + 'media' => 'all', + ); + } + } + return $styles; } } diff --git a/includes/core/class-wc-subscriptions-manager.php b/includes/core/class-wc-subscriptions-manager.php index 3f7e12c..317b19a 100644 --- a/includes/core/class-wc-subscriptions-manager.php +++ b/includes/core/class-wc-subscriptions-manager.php @@ -438,11 +438,13 @@ class WC_Subscriptions_Manager { /** * Called when a sign up fails during the payment processing step. * + * This method only performs actions when a parent order changed to failed status. + * Overlaps with WC_Subscriptions_Order::maybe_record_subscription_payment. + * * @param WC_Order|int $order The order or ID of the order for which subscriptions should be marked as failed. * @since 1.0.0 - Migrated from WooCommerce Subscriptions v1.0 */ public static function failed_subscription_sign_ups_for_order( $order ) { - $subscriptions = wcs_get_subscriptions_for_order( $order, array( 'order_type' => 'parent' ) ); if ( empty( $subscriptions ) ) { @@ -461,9 +463,23 @@ class WC_Subscriptions_Manager { foreach ( $subscriptions as $subscription ) { try { - $new_status = $subscription->has_status( 'pending' ) && $subscription->get_parent_id() === $order->get_id() ? 'pending' : 'on-hold'; - $subscription->payment_failed( $new_status ); + /** + * Parent status failure should not change the subscription status in most cases. + * We only change the status when the parent order is the last order and subscription is active. + * In that case, we need to put the subscription on hold as we do when the latest renewal order fails. + * Examples: + * - if subscription is pending and initial payment fails, we keep subscription as pending to activate it on successful payment. + * - if subscription has successful renewals and somehow the parent order fails after that, we still keep subscription as active. + * - if subscription is active after successful initial payment, but later the parent order fails, we move subscription to on-hold. + */ + $new_status = $subscription->get_status(); + if ( 'active' === $new_status && $subscription->get_parent_id() === $order->get_id() ) { + $last_order = $subscription->get_last_order( 'ids', 'any' ); + $new_status = $last_order === $order->get_id() ? 'on-hold' : 'active'; + } + + $subscription->payment_failed_for_related_order( $new_status, $order ); } catch ( Exception $e ) { // translators: $1: order number, $2: error message $subscription->add_order_note( sprintf( __( 'Failed to process failed payment on subscription for order #%1$s: %2$s', 'woocommerce-subscriptions' ), is_object( $order ) ? $order->get_order_number() : $order, $e->getMessage() ) ); @@ -1020,6 +1036,24 @@ class WC_Subscriptions_Manager { foreach ( $subscriptions as $subscription ) { $subscription_number = $subscription->get_order_number(); + if ( WCS_Gifting::is_gifted_subscription( $subscription ) ) { + // translators: %s is the email address of the recipient. + $message = sprintf( __( 'The gifted subscription moved to the purchaser after the recipient user with email address %s was deleted.', 'woocommerce-subscriptions' ), $subscription->get_meta( '_recipient_user_email_address' ) ); + + $subscription->delete_meta_data( '_recipient_user' ); + $subscription->delete_meta_data( '_recipient_user_email_address' ); + $subscription->save(); + + $subscription->add_order_note( $message, $subscription_number ); + + // Check needed for tests. + if ( $subscription->get_parent() ) { + $subscription->get_parent()->add_order_note( $message, $subscription_number ); + } + + continue; + } + // Before deleting the subscription, add an order note to the related orders. foreach ( $subscription->get_related_orders( 'all', array( 'parent', 'renewal', 'switch' ) ) as $order ) { if ( $current_user ) { diff --git a/includes/core/class-wc-subscriptions-order.php b/includes/core/class-wc-subscriptions-order.php index 97105a5..b5bd3d7 100644 --- a/includes/core/class-wc-subscriptions-order.php +++ b/includes/core/class-wc-subscriptions-order.php @@ -485,7 +485,7 @@ class WC_Subscriptions_Order { * @param string $new_order_status The new order status. */ public static function maybe_record_subscription_payment( $order_id, $old_order_status, $new_order_status ) { - + // ! This hook will only perform actions on parent order status changes. if ( ! wcs_order_contains_subscription( $order_id, 'parent' ) ) { return; } @@ -578,10 +578,6 @@ class WC_Subscriptions_Order { $subscription->payment_complete_for_order( $order ); $was_activated = true; - } elseif ( 'failed' === $new_order_status ) { - // When parent order fails, we want to keep the subscription status as pending unless it had another status before. - $new_status = $subscription->has_status( 'pending' ) && $subscription->get_parent_id() === $order->get_id() ? 'pending' : 'on-hold'; - $subscription->payment_failed( $new_status ); } } diff --git a/includes/core/class-wc-subscriptions-renewal-order.php b/includes/core/class-wc-subscriptions-renewal-order.php index e09e6b5..bebc0e7 100644 --- a/includes/core/class-wc-subscriptions-renewal-order.php +++ b/includes/core/class-wc-subscriptions-renewal-order.php @@ -81,10 +81,12 @@ class WC_Subscriptions_Renewal_Order { * subscriptions are updated even if payment is processed by a manual payment gateways (which would never trigger the * 'woocommerce_payment_complete' hook) or by some other means that circumvents that hook. * + * This hook will be skipped for early renewal orders transitioning to statuses other than cancelled or refunded. + * @see WCS_Cart_Early_Renewal::maybe_record_subscription_payment(). + * * @since 1.0.0 - Migrated from WooCommerce Subscriptions v2.0 */ public static function maybe_record_subscription_payment( $order_id, $orders_old_status, $orders_new_status ) { - if ( ! wcs_order_contains_renewal( $order_id ) ) { return; } diff --git a/includes/core/class-wcs-blocks-integration.php b/includes/core/class-wcs-blocks-integration.php index 148a113..ee50619 100644 --- a/includes/core/class-wcs-blocks-integration.php +++ b/includes/core/class-wcs-blocks-integration.php @@ -22,17 +22,15 @@ class WCS_Blocks_Integration implements IntegrationInterface { */ public function initialize() { $script_path = 'build/index.js'; - $style_path = 'build/index.css'; $script_url = \WC_Subscriptions_Core_Plugin::instance()->get_subscriptions_core_directory_url( $script_path ); - $style_url = \WC_Subscriptions_Core_Plugin::instance()->get_subscriptions_core_directory_url( $style_path ); $script_asset_path = \WC_Subscriptions_Plugin::instance()->get_plugin_directory( 'build/index.asset.php' ); $script_asset = file_exists( $script_asset_path ) ? require $script_asset_path : array( 'dependencies' => array(), - 'version' => $this->get_file_version( $script_asset_path ), + 'version' => self::get_file_version( $script_asset_path ), ); wp_register_script( @@ -47,13 +45,6 @@ class WCS_Blocks_Integration implements IntegrationInterface { 'woocommerce-subscriptions', \WC_Subscriptions_Plugin::instance()->get_plugin_directory( 'languages' ) ); - wp_enqueue_style( - 'wc-blocks-integration', - $style_url, - '', - $this->get_file_version( \WC_Subscriptions_Plugin::instance()->get_plugin_directory( 'build/index.css' ) ), - 'all' - ); } /** @@ -92,7 +83,7 @@ class WCS_Blocks_Integration implements IntegrationInterface { * @param string $file Local path to the file. * @return string The cache buster value to use for the given file. */ - protected function get_file_version( $file ) { + public static function get_file_version( $file ) { if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG && file_exists( $file ) ) { return filemtime( $file ); } diff --git a/includes/core/wcs-functions.php b/includes/core/wcs-functions.php index aa5b242..4f777f6 100644 --- a/includes/core/wcs-functions.php +++ b/includes/core/wcs-functions.php @@ -79,6 +79,10 @@ function wcs_do_subscriptions_exist() { */ function wcs_get_subscription( $the_subscription ) { + if ( empty( $the_subscription ) ) { + return false; + } + if ( is_object( $the_subscription ) && wcs_is_subscription( $the_subscription ) ) { $the_subscription = $the_subscription->get_id(); } @@ -395,6 +399,7 @@ function wcs_sanitize_subscription_status_key( $status_key ) { * * @since 1.0.0 Migrated from WooCommerce Subscriptions v2.0. * @since 7.3.0 Any additional arguments are passed across to WooCommerce for use in the final query. + * @since 7.9.0 Only instances of WC_Subscriptions will be returned by this function (prior to this, other values including false were occassionally part of the result). * * @param array $args { * A set of name value pairs to query for subscriptions - similar to args supported by wc_get_orders(). @@ -563,7 +568,27 @@ function wcs_get_subscriptions( $args ) { $subscriptions = $query_controller->paginate_results( $subscriptions ); } - return apply_filters( 'woocommerce_got_subscriptions', $subscriptions, $working_args ); + /** + * Provides an opportunity to filter the subscriptions returned by wcs_get_subscriptions(). + * + * Note that the function guarantees it will return an array of WC_Subscription objects, keyed by subscription ID. + * For that reason, any non-WC_Subscription objects that are inserted via this hook will be removed. + * + * @since 2.0.0 + * + * @param WC_Subscriptions[] $subscriptions The subscriptions to be returned by wcs_get_subscriptions(). + * @param array $working_args The original wcs_get_subscription() $args parameter. + */ + $filtered_subscriptions = apply_filters( 'woocommerce_got_subscriptions', $subscriptions, $working_args ); + $subscriptions = array(); + + foreach ( $filtered_subscriptions as $subscription ) { + if ( is_a( $subscription, WC_Subscription::class ) ) { + $subscriptions[ $subscription->get_id() ] = $subscription; + } + } + + return $subscriptions; } /** diff --git a/includes/core/wcs-order-functions.php b/includes/core/wcs-order-functions.php index 37af67f..c39fffb 100644 --- a/includes/core/wcs-order-functions.php +++ b/includes/core/wcs-order-functions.php @@ -28,6 +28,7 @@ if ( ! defined( 'ABSPATH' ) ) { * 'order_type' Get subscriptions for the any order type in this array. Can include 'any', 'parent', 'renewal', 'resubscribe' or 'switch', defaults to 'parent'. * @return WC_Subscription[] Subscription details in post_id => WC_Subscription form. * @since 1.0.0 - Migrated from WooCommerce Subscriptions v2.0 + * @since 7.9.0 Only instances of WC_Subscriptions will be returned by this function (prior to this, other values including false were occassionally part of the result). */ function wcs_get_subscriptions_for_order( $order, $args = array() ) { @@ -72,7 +73,13 @@ function wcs_get_subscriptions_for_order( $order, $args = array() ) { foreach ( $subscription_ids as $subscription_id ) { if ( wcs_is_subscription( $subscription_id ) ) { - $subscriptions[ $subscription_id ] = wcs_get_subscription( $subscription_id ); + $subscription = wcs_get_subscription( $subscription_id ); + + // This additional check ensures we meet our promise of returning WC_Subscription[], in part by guarding + // a against race condition that could lead to $subscription being false. + if ( is_a( $subscription, WC_Subscription::class ) ) { + $subscriptions[ $subscription_id ] = $subscription; + } } } diff --git a/includes/gifting/class-wcs-gifting.php b/includes/gifting/class-wcs-gifting.php index 63cad41..6af06c0 100644 --- a/includes/gifting/class-wcs-gifting.php +++ b/includes/gifting/class-wcs-gifting.php @@ -98,8 +98,13 @@ class WCS_Gifting { * Register/queue frontend scripts. */ public static function gifting_scripts() { - wp_register_script( 'woocommerce_subscriptions_gifting', plugins_url( '/assets/js/gifting/wcs-gifting.js', WC_Subscriptions::$plugin_file ), array( 'jquery' ), WC_Subscriptions::$version, true ); - wp_enqueue_script( 'woocommerce_subscriptions_gifting' ); + global $post; + + if ( ! WCSG_Admin::is_gifting_enabled() ) { + return; + } + + // We load this on all pages because of the mini-cart related styles. wp_enqueue_style( 'woocommerce_subscriptions_gifting', plugins_url( '/assets/css/gifting/shortcode-checkout.css', WC_Subscriptions::$plugin_file ), @@ -107,6 +112,23 @@ class WCS_Gifting { WC_VERSION, 'all' ); + + if ( ! is_cart() && ! is_checkout() && ! is_product() ) { + return; + } + + // We don't need to load the scripts on blocks pages. + if ( WC_Blocks_Utils::has_block_in_page( $post->ID, 'woocommerce/cart' ) || WC_Blocks_Utils::has_block_in_page( $post->ID, 'woocommerce/checkout' ) ) { + return; + } + + // We don't need to load the script on product pages that are not subscriptions or not giftable subscriptions. + if ( is_product() && ( ! WC_Subscriptions_Product::is_subscription( $post->ID ) || ! WCSG_Product::is_giftable( $post->ID ) ) ) { + return; + } + + wp_register_script( 'woocommerce_subscriptions_gifting', plugins_url( '/assets/js/gifting/wcs-gifting.js', WC_Subscriptions::$plugin_file ), array( 'jquery' ), WC_Subscriptions::$version, true ); + wp_enqueue_script( 'woocommerce_subscriptions_gifting' ); } /** @@ -324,8 +346,8 @@ class WCS_Gifting { $args = array( 'email' => $email, 'id' => $id, - 'container_style_attributes' => apply_filters( 'wcsg_recipient_fields_style_attributes', empty( $email ) ? array( 'display: none;' ) : array(), $email ), - 'container_css_class' => apply_filters( 'wcsg_recipient_fields_css_class', array(), $email ), + 'container_style_attributes' => apply_filters( 'wcsg_recipient_fields_style_attributes', array(), $email ), + 'container_css_class' => apply_filters( 'wcsg_recipient_fields_css_class', empty( $email ) ? array( 'hidden' ) : array(), $email ), 'email_field_args' => apply_filters( 'wcsg_recipient_email_field_args', $email_field_args, $email ), 'checkbox_field_args' => apply_filters( 'wcsg_recipient_checkbox_field_args', $checkbox_field_args, $email ), 'nonce_field' => $nonce_field, @@ -499,6 +521,10 @@ class WCS_Gifting { $subscription = wcs_get_subscription( $subscription ); } + if ( ! $subscription ) { + return false; + } + if ( wcs_is_subscription( $subscription ) ) { $recipient_user_id = self::get_recipient_user( $subscription ); $has_recipient_email = $subscription->get_meta( '_recipient_user_email_address' ); @@ -868,6 +894,11 @@ class WCS_Gifting { if ( ! class_exists( 'Automattic\WooCommerce\Blocks\Package' ) || ! version_compare( \Automattic\WooCommerce\Blocks\Package::get_version(), '4.4.0', '>' ) ) { return; } + + if ( ! WCSG_Admin::is_gifting_enabled() ) { + return; + } + /** * Filter the compatible blocks for WooCommerce Subscriptions. * @since 7.8.2 diff --git a/includes/gifting/class-wcsg-blocks-integration.php b/includes/gifting/class-wcsg-blocks-integration.php index 9af45c3..c08015c 100644 --- a/includes/gifting/class-wcsg-blocks-integration.php +++ b/includes/gifting/class-wcsg-blocks-integration.php @@ -20,18 +20,16 @@ class WCSG_Blocks_Integration implements IntegrationInterface { } public function initialize() { - $script_path = 'build/gifting-blocks-checkout.js'; - $style_path = 'build/gifting-blocks-checkout.css'; + $script_path = 'build/wcsg-blocks-integration.js'; $script_url = \WC_Subscriptions_Core_Plugin::instance()->get_subscriptions_core_directory_url( $script_path ); - $style_url = \WC_Subscriptions_Core_Plugin::instance()->get_subscriptions_core_directory_url( $style_path ); - $script_asset_path = \WC_Subscriptions_Plugin::instance()->get_plugin_directory( 'build/gifting-blocks-checkout.asset.php' ); + $script_asset_path = \WC_Subscriptions_Plugin::instance()->get_plugin_directory( 'build/wcsg-blocks-integration.asset.php' ); $script_asset = file_exists( $script_asset_path ) ? require $script_asset_path : array( 'dependencies' => array(), - 'version' => $this->get_file_version( $script_asset_path ), + 'version' => WCS_Blocks_Integration::get_file_version( $script_asset_path ), ); wp_register_script( @@ -41,16 +39,6 @@ class WCSG_Blocks_Integration implements IntegrationInterface { $script_asset['version'], true ); - - wp_register_style( - 'wcsg-blocks-integration', - $style_url, - array(), - $this->get_file_version( $style_path ) - ); - - wp_enqueue_script( 'wcsg-blocks-integration' ); - wp_enqueue_style( 'wcsg-blocks-integration' ); } /** @@ -92,17 +80,4 @@ class WCSG_Blocks_Integration implements IntegrationInterface { 'gifting_checkbox_text' => $gifting_checkbox_text, ); } - - /** - * Get the file modified time as a cache buster if we're in dev mode. - * - * @param string $file Local path to the file. - * @return string The cache buster value to use for the given file. - */ - protected function get_file_version( $file ) { - if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG && file_exists( $file ) ) { - return filemtime( $file ); - } - return \WC_Subscriptions_Core_Plugin::instance()->get_library_version(); - } } diff --git a/includes/gifting/class-wcsg-download-handler.php b/includes/gifting/class-wcsg-download-handler.php index 6002e60..8a1f337 100644 --- a/includes/gifting/class-wcsg-download-handler.php +++ b/includes/gifting/class-wcsg-download-handler.php @@ -97,7 +97,7 @@ class WCSG_Download_Handler { $subscription = wcs_get_subscription( $data['order_id'] ); - if ( WCS_Gifting::is_gifted_subscription( $subscription ) ) { + if ( $subscription && WCS_Gifting::is_gifted_subscription( $subscription ) ) { $can_purchaser_download = ( 'yes' === get_option( WCSG_Admin::$option_prefix . '_downloadable_products', 'no' ) ) ? true : false; diff --git a/includes/gifting/class-wcsg-recipient-management.php b/includes/gifting/class-wcsg-recipient-management.php index 7f51271..ee90c27 100644 --- a/includes/gifting/class-wcsg-recipient-management.php +++ b/includes/gifting/class-wcsg-recipient-management.php @@ -489,15 +489,9 @@ class WCSG_Recipient_Management { */ public static function maybe_remove_recipient( $user_id ) { - $gifted_subscriptions = self::get_recipient_subscriptions( $user_id ); - $gifted_items = WCS_Gifting::get_recipient_order_items( $user_id ); + $gifted_items = WCS_Gifting::get_recipient_order_items( $user_id ); - if ( ! empty( $gifted_subscriptions ) ) { - foreach ( $gifted_subscriptions as $subscription_id ) { - WCS_Gifting::set_recipient_user( $subscription, 'deleted_recipient' ); - } - - $recipient = get_user_by( 'id', $user_id ); + if ( ! empty( $gifted_items ) ) { $recipient_data = wp_json_encode( array_merge( array( 'display_name' => addslashes( WCS_Gifting::get_user_display_name( $user_id ) ) ), diff --git a/languages/woocommerce-subscriptions.pot b/languages/woocommerce-subscriptions.pot index 74342d8..aab2900 100644 --- a/languages/woocommerce-subscriptions.pot +++ b/languages/woocommerce-subscriptions.pot @@ -2,16 +2,16 @@ # This file is distributed under the GNU General Public License v3.0. msgid "" msgstr "" -"Project-Id-Version: WooCommerce Subscriptions 7.8.2\n" +"Project-Id-Version: WooCommerce Subscriptions 7.9.0\n" "Report-Msgid-Bugs-To: https://woocommerce.com/contact-us\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"POT-Creation-Date: 2025-09-02T01:34:48+00:00\n" +"POT-Creation-Date: 2025-09-16T18:10:01+00:00\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"X-Generator: WP-CLI 2.11.0\n" +"X-Generator: WP-CLI 2.12.0\n" "X-Domain: woocommerce-subscriptions\n" #. Plugin Name of the plugin @@ -44,6 +44,7 @@ msgstr "" #. translators: placeholders $1 and $2 are opening tags linking to the WooCommerce documentation on HPOS, and to the Advanced Features settings screen. Placeholder $3 is a closing link () tag. #: includes/admin/class-wcs-admin-reports.php:82 +#, php-format msgid "WooCommerce Subscriptions now supports %1$sHigh-Performance Order Storage (HPOS)%3$s - compatibility mode is no longer required to view subscriptions reports. You can disable compatibility mode in your %2$sstore settings%3$s." msgstr "" @@ -117,6 +118,7 @@ msgstr "" #. translators: %d refers to the number of times we have detected cache update failures #: includes/admin/reports/class-wcs-report-cache-manager.php:334 +#, php-format msgid "%d failures" msgid_plural "%d failure" msgstr[0] "" @@ -124,6 +126,7 @@ msgstr[1] "" #. translators: 1$: count, 2$ and 3$ are opening and closing strong tags, respectively. #: includes/admin/reports/class-wcs-report-dashboard.php:95 +#, php-format msgid "%2$s%1$s signup%3$s subscription signups this month" msgid_plural "%2$s%1$s signups%3$s subscription signups this month" msgstr[0] "" @@ -131,11 +134,13 @@ msgstr[1] "" #. translators: %s: formatted amount. #: includes/admin/reports/class-wcs-report-dashboard.php:103 +#, php-format msgid "%s signup revenue this month" msgstr "" #. translators: 1$: count, 2$ and 3$ are opening and closing strong tags, respectively. #: includes/admin/reports/class-wcs-report-dashboard.php:111 +#, php-format msgid "%2$s%1$s renewal%3$s subscription renewals this month" msgid_plural "%2$s%1$s renewals%3$s subscription renewals this month" msgstr[0] "" @@ -143,11 +148,13 @@ msgstr[1] "" #. translators: %s: formatted amount. #: includes/admin/reports/class-wcs-report-dashboard.php:119 +#, php-format msgid "%s renewal revenue this month" msgstr "" #. translators: 1$: count, 2$ and 3$ are opening and closing strong tags, respectively. #: includes/admin/reports/class-wcs-report-dashboard.php:127 +#, php-format msgid "%2$s%1$s cancellation%3$s subscription cancellations this month" msgid_plural "%2$s%1$s cancellations%3$s subscription cancellations this month" msgstr[0] "" @@ -231,6 +238,7 @@ msgstr "" #. translators: %s: help tip. #: includes/admin/reports/class-wcs-report-subscription-by-customer.php:114 +#, php-format msgid "Active Subscriptions %s" msgstr "" @@ -241,6 +249,7 @@ msgstr "" #. translators: %s: help tip. #: includes/admin/reports/class-wcs-report-subscription-by-customer.php:116 +#, php-format msgid "Total Subscriptions %s" msgstr "" @@ -251,6 +260,7 @@ msgstr "" #. translators: %s: help tip. #: includes/admin/reports/class-wcs-report-subscription-by-customer.php:118 +#, php-format msgid "Total Subscription Orders %s" msgstr "" @@ -261,6 +271,7 @@ msgstr "" #. translators: %s: help tip. #: includes/admin/reports/class-wcs-report-subscription-by-customer.php:120 +#, php-format msgid "Lifetime Value from Subscriptions %s" msgstr "" @@ -288,6 +299,7 @@ msgstr "" #. translators: %s: help tip. #: includes/admin/reports/class-wcs-report-subscription-by-product.php:100 +#, php-format msgid "Subscription Count %s" msgstr "" @@ -298,6 +310,7 @@ msgstr "" #. translators: %s: help tip. #: includes/admin/reports/class-wcs-report-subscription-by-product.php:102 +#, php-format msgid "Average Recurring Line Total %s" msgstr "" @@ -308,6 +321,7 @@ msgstr "" #. translators: %s: help tip. #: includes/admin/reports/class-wcs-report-subscription-by-product.php:104 +#, php-format msgid "Average Lifetime Value %s" msgstr "" @@ -323,6 +337,7 @@ msgstr "" #. translators: %s: formatted total amount. #: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:153 +#, php-format msgid "%s signup revenue in this period" msgstr "" @@ -332,6 +347,7 @@ msgstr "" #. translators: %s: formatted total amount. #: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:161 +#, php-format msgid "%s renewal revenue in this period" msgstr "" @@ -341,6 +357,7 @@ msgstr "" #. translators: %s: formatted total amount. #: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:169 +#, php-format msgid "%s resubscribe revenue in this period" msgstr "" @@ -350,6 +367,7 @@ msgstr "" #. translators: %s: formatted total amount. #: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:177 +#, php-format msgid "%s switch revenue in this period" msgstr "" @@ -359,6 +377,7 @@ msgstr "" #. translators: 2: link opening tag, 1: subscription count and closing tag. #: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:186 +#, php-format msgid "%2$s %1$s new subscriptions" msgstr "" @@ -368,6 +387,7 @@ msgstr "" #. translators: 2: link opening tag, 1: subscription count and closing tag. #: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:208 +#, php-format msgid "%2$s %1$s subscription signups" msgstr "" @@ -377,6 +397,7 @@ msgstr "" #. translators: 2: link opening tag, 1: subscription count and closing tag. #: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:230 +#, php-format msgid "%2$s %1$s subscription resubscribes" msgstr "" @@ -386,6 +407,7 @@ msgstr "" #. translators: 2: link opening tag, 1: subscription count and closing tag. #: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:252 +#, php-format msgid "%2$s %1$s subscription renewals" msgstr "" @@ -395,6 +417,7 @@ msgstr "" #. translators: 2: link opening tag, 1: subscription count and closing tag. #: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:274 +#, php-format msgid "%2$s %1$s subscription switches" msgstr "" @@ -404,6 +427,7 @@ msgstr "" #. translators: 2: link opening tag, 1: subscription count and closing tag. #: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:296 +#, php-format msgid "%2$s %1$s subscription cancellations" msgstr "" @@ -413,6 +437,7 @@ msgstr "" #. translators: 2: link opening tag, 1: subscription count and closing tag. #: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:318 +#, php-format msgid "%2$s %1$s ended subscriptions" msgstr "" @@ -422,6 +447,7 @@ msgstr "" #. translators: 2: link opening tag, 1: subscription count and closing tag. #: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:343 +#, php-format msgid "%2$s %1$s current subscriptions" msgstr "" @@ -431,11 +457,13 @@ msgstr "" #. translators: %s: subscription net gain (with percentage). #: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:375 +#, php-format msgid "%s net subscription gain" msgstr "" #. translators: %s: subscription net loss (with percentage). #: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:378 +#, php-format msgid "%s net subscription loss" msgstr "" @@ -526,6 +554,7 @@ msgstr "" #. translators: %s: formatted amount. #: includes/admin/reports/class-wcs-report-subscription-payment-retry.php:83 +#, php-format msgid "%s renewal revenue recovered" msgstr "" @@ -536,6 +565,7 @@ msgstr "" #. translators: %s: renewal count. #: includes/admin/reports/class-wcs-report-subscription-payment-retry.php:91 #: includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php:104 +#, php-format msgid "%s renewal orders" msgstr "" @@ -545,6 +575,7 @@ msgstr "" #. translators: %s: retry count. #: includes/admin/reports/class-wcs-report-subscription-payment-retry.php:98 +#, php-format msgid "%s retry attempts succeeded" msgstr "" @@ -554,6 +585,7 @@ msgstr "" #. translators: %s: retry count. #: includes/admin/reports/class-wcs-report-subscription-payment-retry.php:106 +#, php-format msgid "%s retry attempts failed" msgstr "" @@ -563,6 +595,7 @@ msgstr "" #. translators: %s: retry count. #: includes/admin/reports/class-wcs-report-subscription-payment-retry.php:114 +#, php-format msgid "%s retry attempts pending" msgstr "" @@ -588,6 +621,7 @@ msgstr "" #. translators: %s: formatted amount. #: includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php:97 +#, php-format msgid "%s renewal income in this period" msgstr "" @@ -601,6 +635,7 @@ msgstr "" #. translators: %s: formatted amount. #: includes/admin/reports/class-wcs-report-upcoming-recurring-revenue.php:111 +#, php-format msgid "%s average renewal amount" msgstr "" @@ -675,67 +710,83 @@ msgstr "" msgid "Payment Gateway Feature Support." msgstr "" -#: includes/api/class-wc-rest-subscriptions-controller.php:168 +#: includes/api/class-wc-rest-subscriptions-controller.php:180 #: includes/api/v2/class-wc-rest-subscriptions-v2-controller.php:164 msgid "Invalid subscription ID." msgstr "" -#: includes/api/class-wc-rest-subscriptions-controller.php:174 +#: includes/api/class-wc-rest-subscriptions-controller.php:186 #: includes/api/v2/class-wc-rest-subscriptions-v2-controller.php:170 +#, php-format msgid "Failed to load subscription object with the ID %d." msgstr "" -#: includes/api/class-wc-rest-subscriptions-controller.php:331 +#: includes/api/class-wc-rest-subscriptions-controller.php:233 +#: includes/api/class-wc-rest-subscriptions-controller.php:632 +#: includes/api/v2/class-wc-rest-subscriptions-v2-controller.php:545 +msgid "Invalid order ID." +msgstr "" + +#. translators: %d is the order ID. +#: includes/api/class-wc-rest-subscriptions-controller.php:242 +#: includes/api/class-wc-rest-subscriptions-controller.php:638 +#: includes/api/v2/class-wc-rest-subscriptions-v2-controller.php:551 +#, php-format +msgid "Failed to load order object with the ID %d." +msgstr "" + +#: includes/api/class-wc-rest-subscriptions-controller.php:413 #: includes/api/v2/class-wc-rest-subscriptions-v2-controller.php:329 +#, php-format msgid "Subscription dates could not be set. Error message: %s" msgstr "" -#: includes/api/class-wc-rest-subscriptions-controller.php:367 +#: includes/api/class-wc-rest-subscriptions-controller.php:449 #: includes/api/v2/class-wc-rest-subscriptions-v2-controller.php:371 msgid "Subscription status." msgstr "" -#: includes/api/class-wc-rest-subscriptions-controller.php:370 +#: includes/api/class-wc-rest-subscriptions-controller.php:452 #: includes/api/v2/class-wc-rest-subscriptions-v2-controller.php:374 msgid "Where the subscription was created." msgstr "" -#: includes/api/class-wc-rest-subscriptions-controller.php:371 +#: includes/api/class-wc-rest-subscriptions-controller.php:453 #: includes/api/v2/class-wc-rest-subscriptions-v2-controller.php:375 msgid "Currency the subscription was created with, in ISO format." msgstr "" -#: includes/api/class-wc-rest-subscriptions-controller.php:372 +#: includes/api/class-wc-rest-subscriptions-controller.php:454 #: includes/api/v2/class-wc-rest-subscriptions-v2-controller.php:376 msgid "The date the subscription was created, in the site's timezone." msgstr "" -#: includes/api/class-wc-rest-subscriptions-controller.php:373 +#: includes/api/class-wc-rest-subscriptions-controller.php:455 #: includes/api/v2/class-wc-rest-subscriptions-v2-controller.php:377 msgid "The date the subscription was created, as GMT." msgstr "" -#: includes/api/class-wc-rest-subscriptions-controller.php:374 +#: includes/api/class-wc-rest-subscriptions-controller.php:456 #: includes/api/v2/class-wc-rest-subscriptions-v2-controller.php:378 msgid "The date the subscription was last modified, in the site's timezone." msgstr "" -#: includes/api/class-wc-rest-subscriptions-controller.php:375 +#: includes/api/class-wc-rest-subscriptions-controller.php:457 #: includes/api/v2/class-wc-rest-subscriptions-v2-controller.php:379 msgid "The date the subscription was last modified, as GMT." msgstr "" -#: includes/api/class-wc-rest-subscriptions-controller.php:376 +#: includes/api/class-wc-rest-subscriptions-controller.php:458 #: includes/api/v2/class-wc-rest-subscriptions-v2-controller.php:380 msgid "User ID who owns the subscription." msgstr "" -#: includes/api/class-wc-rest-subscriptions-controller.php:386 +#: includes/api/class-wc-rest-subscriptions-controller.php:468 #: includes/api/v2/class-wc-rest-subscriptions-v2-controller.php:390 msgid "The status to transition a subscription to." msgstr "" -#: includes/api/class-wc-rest-subscriptions-controller.php:392 +#: includes/api/class-wc-rest-subscriptions-controller.php:474 #: includes/api/legacy/class-wc-rest-subscriptions-controller.php:349 #: includes/api/v1/class-wc-rest-subscriptions-v1-controller.php:504 #: includes/api/v2/class-wc-rest-subscriptions-v2-controller.php:396 @@ -744,7 +795,7 @@ msgstr "" msgid "The number of billing periods between subscription renewals." msgstr "" -#: includes/api/class-wc-rest-subscriptions-controller.php:397 +#: includes/api/class-wc-rest-subscriptions-controller.php:479 #: includes/api/legacy/class-wc-rest-subscriptions-controller.php:354 #: includes/api/v1/class-wc-rest-subscriptions-v1-controller.php:509 #: includes/api/v2/class-wc-rest-subscriptions-v2-controller.php:401 @@ -753,95 +804,87 @@ msgstr "" msgid "Billing period for the subscription." msgstr "" -#: includes/api/class-wc-rest-subscriptions-controller.php:403 +#: includes/api/class-wc-rest-subscriptions-controller.php:485 msgid "Trial period for the subscription." msgstr "" -#: includes/api/class-wc-rest-subscriptions-controller.php:409 +#: includes/api/class-wc-rest-subscriptions-controller.php:491 msgid "The number of times the subscription has been suspended since the last payment." msgstr "" -#: includes/api/class-wc-rest-subscriptions-controller.php:414 +#: includes/api/class-wc-rest-subscriptions-controller.php:496 msgid "Whether the subscription requires manual renewal." msgstr "" -#: includes/api/class-wc-rest-subscriptions-controller.php:419 +#: includes/api/class-wc-rest-subscriptions-controller.php:501 #: includes/api/legacy/class-wc-rest-subscriptions-controller.php:360 #: includes/api/v1/class-wc-rest-subscriptions-v1-controller.php:515 #: includes/api/v2/class-wc-rest-subscriptions-v2-controller.php:407 msgid "Subscription payment details." msgstr "" -#: includes/api/class-wc-rest-subscriptions-controller.php:424 +#: includes/api/class-wc-rest-subscriptions-controller.php:506 #: includes/api/v2/class-wc-rest-subscriptions-v2-controller.php:412 msgid "Payment method meta and token in a post_meta_key: token format." msgstr "" -#: includes/api/class-wc-rest-subscriptions-controller.php:429 +#: includes/api/class-wc-rest-subscriptions-controller.php:511 #: includes/api/v2/class-wc-rest-subscriptions-v2-controller.php:417 msgid "Payment method meta and token in a user_meta_key : token format." msgstr "" -#: includes/api/class-wc-rest-subscriptions-controller.php:436 +#: includes/api/class-wc-rest-subscriptions-controller.php:518 #: includes/api/v2/class-wc-rest-subscriptions-v2-controller.php:424 msgid "The subscription's start date, as GMT." msgstr "" -#: includes/api/class-wc-rest-subscriptions-controller.php:441 +#: includes/api/class-wc-rest-subscriptions-controller.php:523 #: includes/api/v2/class-wc-rest-subscriptions-v2-controller.php:429 msgid "The subscription's trial end date, as GMT." msgstr "" -#: includes/api/class-wc-rest-subscriptions-controller.php:446 +#: includes/api/class-wc-rest-subscriptions-controller.php:528 #: includes/api/v2/class-wc-rest-subscriptions-v2-controller.php:434 msgid "The subscription's next payment date, as GMT." msgstr "" -#: includes/api/class-wc-rest-subscriptions-controller.php:451 +#: includes/api/class-wc-rest-subscriptions-controller.php:533 #: includes/api/v2/class-wc-rest-subscriptions-v2-controller.php:439 msgid "The subscription's cancelled date, as GMT." msgstr "" -#: includes/api/class-wc-rest-subscriptions-controller.php:456 +#: includes/api/class-wc-rest-subscriptions-controller.php:538 #: includes/api/v2/class-wc-rest-subscriptions-v2-controller.php:444 msgid "The subscription's end date, as GMT." msgstr "" -#: includes/api/class-wc-rest-subscriptions-controller.php:475 +#: includes/api/class-wc-rest-subscriptions-controller.php:557 #: includes/api/v2/class-wc-rest-subscriptions-v2-controller.php:464 msgid "Limit result set to subscriptions which have specific statuses." msgstr "" #. translators: placeholder is the payment method ID. -#: includes/api/class-wc-rest-subscriptions-controller.php:519 +#: includes/api/class-wc-rest-subscriptions-controller.php:601 #: includes/api/v2/class-wc-rest-subscriptions-v2-controller.php:511 +#, php-format msgid "The %s payment gateway does not support admin changing the payment method." msgstr "" #. translators: 1$: gateway id, 2$: error message -#: includes/api/class-wc-rest-subscriptions-controller.php:536 +#: includes/api/class-wc-rest-subscriptions-controller.php:618 #: includes/api/legacy/class-wc-rest-subscriptions-controller.php:335 #: includes/api/v1/class-wc-rest-subscriptions-v1-controller.php:403 #: includes/api/v2/class-wc-rest-subscriptions-v2-controller.php:528 +#, php-format msgid "Subscription payment method could not be set to %1$s with error message: %2$s" msgstr "" -#: includes/api/class-wc-rest-subscriptions-controller.php:550 -#: includes/api/v2/class-wc-rest-subscriptions-v2-controller.php:545 -msgid "Invalid order ID." -msgstr "" - -#: includes/api/class-wc-rest-subscriptions-controller.php:556 -#: includes/api/v2/class-wc-rest-subscriptions-v2-controller.php:551 -msgid "Failed to load order object with the ID %d." -msgstr "" - -#: includes/api/class-wc-rest-subscriptions-controller.php:560 +#: includes/api/class-wc-rest-subscriptions-controller.php:642 #: includes/api/v2/class-wc-rest-subscriptions-v2-controller.php:555 msgid "Order does not have a customer associated with it. Subscriptions require a customer." msgstr "" -#: includes/api/class-wc-rest-subscriptions-controller.php:564 +#: includes/api/class-wc-rest-subscriptions-controller.php:646 #: includes/api/v2/class-wc-rest-subscriptions-v2-controller.php:559 msgid "Order already has subscriptions associated with it." msgstr "" @@ -851,7 +894,7 @@ msgid "Invalid value type; must be either boolean or array" msgstr "" #: includes/api/legacy/class-wc-api-subscriptions.php:102 -#: includes/core/wcs-functions.php:136 +#: includes/core/wcs-functions.php:140 msgid "Invalid subscription status given." msgstr "" @@ -869,6 +912,7 @@ msgstr "" #. translators: placeholder is error message #: includes/api/legacy/class-wc-api-subscriptions.php:276 +#, php-format msgctxt "API error message when editing the order failed" msgid "Edit subscription failed with error: %s" msgstr "" @@ -881,16 +925,17 @@ msgstr "" #. translators: 1$: gateway id, 2$: error message #: includes/api/legacy/class-wc-api-subscriptions.php:352 +#, php-format msgid "Subscription payment method could not be set to %1$s and has been set to manual with error message: %2$s" msgstr "" #: includes/api/legacy/class-wc-api-subscriptions.php:387 -#: includes/core/wcs-functions.php:165 +#: includes/core/wcs-functions.php:169 msgid "Invalid subscription billing interval given. Must be an integer greater than 0." msgstr "" #: includes/api/legacy/class-wc-api-subscriptions.php:398 -#: includes/core/wcs-functions.php:160 +#: includes/core/wcs-functions.php:164 msgid "Invalid subscription billing period given." msgstr "" @@ -906,12 +951,14 @@ msgstr "" #. translators: placeholder is an error message. #: includes/api/legacy/class-wc-rest-subscriptions-controller.php:241 +#, php-format msgid "Cannot create subscription: %s." msgstr "" #. translators: placeholder is an error message. #: includes/api/legacy/class-wc-rest-subscriptions-controller.php:286 #: includes/api/v1/class-wc-rest-subscriptions-v1-controller.php:473 +#, php-format msgid "Updating subscription dates errored with message: %s" msgstr "" @@ -1055,16 +1102,19 @@ msgstr "" #. translators: 1$-2$: opening and closing tags, 3$-4$: link tags, takes to woocommerce plugin on wp.org, 5$-6$: opening and closing link tags, leads to plugins.php in admin #: includes/class-wc-subscriptions-dependency-manager.php:173 +#, php-format msgid "%1$sWooCommerce Subscriptions is inactive.%2$s The %3$sWooCommerce plugin%4$s must be active for WooCommerce Subscriptions to work. Please %5$sinstall & activate WooCommerce »%6$s" msgstr "" #. translators: 1$-2$: opening and closing tags, 3$: minimum supported WooCommerce version, 4$-5$: opening and closing link tags, leads to plugin admin #: includes/class-wc-subscriptions-dependency-manager.php:176 +#, php-format msgid "%1$sWooCommerce Subscriptions is inactive.%2$s This version of Subscriptions requires WooCommerce %3$s or newer. Please %4$supdate WooCommerce to version %3$s or newer »%5$s" msgstr "" #. translators: 1-2: opening/closing tags, 3: Subscriptions version. #: includes/class-wc-subscriptions-plugin.php:63 +#, php-format msgid "%1$sWarning!%2$s We can see the %1$sWooCommerce Subscriptions Early Renewal%2$s plugin is active. Version %3$s of %1$sWooCommerce Subscriptions%2$s comes with that plugin's functionality packaged into the core plugin. Please deactivate WooCommerce Subscriptions Early Renewal to avoid any conflicts." msgstr "" @@ -1074,6 +1124,7 @@ msgstr "" #. translators: $1-$2: opening and closing tags, $3-$4: opening and closing tags. #: includes/class-wc-subscriptions-plugin.php:209 +#, php-format msgid "%1$sWooCommerce Subscriptions Installed%2$s – %3$sYou're ready to start selling subscriptions!%4$s" msgstr "" @@ -1163,6 +1214,7 @@ msgstr "" #. translators: %s is a line break. #: includes/class-wcs-drip-downloads-manager.php:70 +#, php-format msgid "Enabling this grants access to new downloadable files added to a product only after the next renewal is processed.%sBy default, access to new downloadable files added to a product is granted immediately to any customer that has an active subscription with that product." msgstr "" @@ -1180,6 +1232,7 @@ msgstr "" #. translators: %1$s is the coupon code, %2$d is the number of payment usages #: includes/class-wcs-limited-recurring-coupon-manager.php:252 +#, php-format msgid "Limited use coupon \"%1$s\" removed from subscription. It has been used %2$d time." msgid_plural "Limited use coupon \"%1$s\" removed from subscription. It has been used %2$d times." msgstr[0] "" @@ -1187,6 +1240,7 @@ msgstr[1] "" #. translators: %d refers to the number of payments the coupon can be used for. #: includes/class-wcs-limited-recurring-coupon-manager.php:292 +#, php-format msgid "Active for %d payment" msgid_plural "Active for %d payments" msgstr[0] "" @@ -1216,6 +1270,7 @@ msgstr "" #. translators: placeholders are opening and closing link tags #: includes/class-wcs-manual-renewal-manager.php:43 +#, php-format msgid "With manual renewals, a customer's subscription is put on-hold until they login and pay to renew it. %1$sLearn more%2$s." msgstr "" @@ -1225,6 +1280,7 @@ msgstr "" #. translators: placeholders are opening and closing link tags #: includes/class-wcs-manual-renewal-manager.php:54 +#, php-format msgid "If you don't want new subscription purchases to automatically charge renewal payments, you can turn off automatic payments. Existing automatic subscriptions will continue to charge customers automatically. %1$sLearn more%2$s." msgstr "" @@ -1234,6 +1290,7 @@ msgstr "" #. translators: placeholders are tags #: includes/class-wcs-subscriber-role-manager.php:44 +#, php-format msgid "Choose the default roles to assign to active and inactive subscribers. For record keeping purposes, a user account must be created for subscribers. Users with the %1$sadministrator%2$s role, such as yourself, will never be allocated these roles to prevent locking out administrators." msgstr "" @@ -1264,6 +1321,7 @@ msgstr "" #. translators: 1-3: opening/closing tags - link to documentation. #: includes/class-wcs-upgrade-notice-manager.php:88 +#, php-format msgid "Webhook and REST API users can now use v3 subscription endpoints. Click here to %1$slearn more%2$s about the REST API and check out the technical API docs %3$shere%2$s." msgstr "" @@ -1273,11 +1331,13 @@ msgstr "" #. translators: 1-2: opening/closing tags - link to documentation. #: includes/class-wcs-upgrade-notice-manager.php:98 +#, php-format msgid "Subscriptions is now compatible with the WooCommerce cart and checkout blocks. You can learn more about the compatibility status of the cart & checkout blocks %1$shere%2$s." msgstr "" #. translators: placeholder is Subscription version string ('3.1') #: includes/class-wcs-upgrade-notice-manager.php:105 +#, php-format msgid "Welcome to WooCommerce Subscriptions %s!" msgstr "" @@ -1316,6 +1376,7 @@ msgstr "" #. translators: 1: relation type, 2: list of valid relation types. #: includes/core/abstracts/abstract-wcs-related-order-store.php:147 +#, php-format msgid "Invalid relation type: %1$s. Order relationship type must be one of: %2$s." msgstr "" @@ -1342,6 +1403,7 @@ msgstr "" #. translators: placeholder is trial period validation message if passed an invalid value (e.g. "Trial period can not exceed 4 weeks") #: includes/core/admin/class-wc-subscriptions-admin.php:298 +#, php-format msgctxt "Trial period field tooltip on Edit Product administration screen" msgid "An optional period of time to wait before charging the first recurring payment. Any sign up fee will still be charged at the outset of the subscription. %s" msgstr "" @@ -1350,6 +1412,7 @@ msgstr "" #. translators: placeholder is a currency symbol / code #: includes/core/admin/class-wc-subscriptions-admin.php:313 #: templates/admin/html-variation-price.php:23 +#, php-format msgid "Subscription price (%s)" msgstr "" @@ -1358,6 +1421,7 @@ msgstr "" #: includes/core/admin/class-wc-subscriptions-admin.php:318 #: includes/core/admin/class-wc-subscriptions-admin.php:360 #: templates/admin/html-variation-price.php:33 +#, php-format msgctxt "example price" msgid "e.g. %s" msgstr "" @@ -1384,6 +1448,7 @@ msgstr "" #. translators: %s is a currency symbol / code #: includes/core/admin/class-wc-subscriptions-admin.php:358 #: templates/admin/html-variation-price.php:69 +#, php-format msgid "Sign-up fee (%s)" msgstr "" @@ -1393,7 +1458,7 @@ msgid "Optionally include an amount to be charged at the outset of the subscript msgstr "" #: includes/core/admin/class-wc-subscriptions-admin.php:375 -#: includes/core/class-wc-subscriptions-cart.php:2426 +#: includes/core/class-wc-subscriptions-cart.php:2427 #: templates/admin/html-variation-price.php:79 msgid "Free trial" msgstr "" @@ -1454,6 +1519,7 @@ msgstr "" #. translators: %s: subscription status. #: includes/core/admin/class-wc-subscriptions-admin.php:837 +#, php-format msgid "Unable to change subscription status to \"%s\". Please assign a customer to the subscription to activate it." msgstr "" @@ -1526,12 +1592,14 @@ msgstr "" #. translators: placeholders are for HTML tags. They are 1$: "

", 2$: "

", 3$: "

", 4$: "", 5$: "", 6$: "", 7$: "", 8$: "

" #: includes/core/admin/class-wc-subscriptions-admin.php:956 +#, php-format msgctxt "used in admin pointer script params in javascript as type pointer content" msgid "%1$sChoose Subscription%2$s%3$sThe WooCommerce Subscriptions extension adds two new subscription product types - %4$sSimple subscription%5$s and %6$sVariable subscription%7$s.%8$s" msgstr "" #. translators: placeholders are for HTML tags. They are 1$: "

", 2$: "

", 3$: "

", 4$: "

" #: includes/core/admin/class-wc-subscriptions-admin.php:958 +#, php-format msgctxt "used in admin pointer script params in javascript as price pointer content" msgid "%1$sSet a Price%2$s%3$sSubscription prices are a little different to other product prices. For a subscription, you can set a billing period, length, sign-up fee and free trial.%4$s" msgstr "" @@ -1570,12 +1638,14 @@ msgstr "" #. translators: placeholder is a subscription ID. #: includes/core/admin/class-wc-subscriptions-admin.php:1372 #: includes/core/admin/class-wc-subscriptions-admin.php:1615 +#, php-format msgid "We can't find a subscription with ID #%d. Perhaps it was deleted?" msgstr "" #. translators: Placeholders are opening and closing link tags. #: includes/core/admin/class-wc-subscriptions-admin.php:1465 #: includes/core/admin/class-wc-subscriptions-admin.php:1527 +#, php-format msgid "We weren't able to locate the set of report results you requested. Please regenerate the link from the %1$sSubscription Reports screen%2$s." msgstr "" @@ -1585,16 +1655,19 @@ msgstr "" #. translators: placeholders are opening link tag, ID of sub, and closing link tag #: includes/core/admin/class-wc-subscriptions-admin.php:1622 +#, php-format msgid "Showing orders for %1$sSubscription %2$s%3$s" msgstr "" #. translators: number of 1$: days, 2$: weeks, 3$: months, 4$: years #: includes/core/admin/class-wc-subscriptions-admin.php:1645 +#, php-format msgid "The trial period can not exceed: %1$s, %2$s, %3$s or %4$s." msgstr "" #. translators: placeholder is a time period (e.g. "4 weeks") #: includes/core/admin/class-wc-subscriptions-admin.php:1650 +#, php-format msgid "The trial period can not exceed %s." msgstr "" @@ -1652,6 +1725,7 @@ msgstr "" #. translators: $1-2: opening and closing tags of a link that takes to Woo marketplace / Stripe product page #: includes/core/admin/class-wc-subscriptions-admin.php:1923 +#, php-format msgid "No payment gateways capable of processing automatic subscription payments are enabled. If you would like to process automatic payments, we recommend %1$sWooPayments%2$s." msgstr "" @@ -1661,6 +1735,7 @@ msgstr "" #. translators: placeholders are opening and closing link tags #: includes/core/admin/class-wc-subscriptions-admin.php:1938 +#, php-format msgid "Payment gateways which don't support automatic recurring payments can be used to process %1$smanual subscription renewal payments%2$s." msgstr "" @@ -1778,11 +1853,13 @@ msgstr "" #. Translators: %1$s opening link tag, %2$s closing link tag. #: includes/core/admin/class-wcs-admin-meta-boxes.php:301 +#, php-format msgid "A pending %1$srenewal order%2$s was successfully created!" msgstr "" #. Translators: %1$s opening link tag, %2$s closing link tag. #: includes/core/admin/class-wcs-admin-meta-boxes.php:313 +#, php-format msgid "A %1$spending renewal order%2$s was successfully created, but there was a problem setting the payment method. Please review the order." msgstr "" @@ -1837,7 +1914,7 @@ msgstr "" #: includes/core/admin/class-wcs-admin-post-types.php:331 #: includes/core/admin/class-wcs-admin-post-types.php:1387 #: includes/core/admin/class-wcs-admin-post-types.php:1776 -#: includes/core/class-wc-subscriptions-manager.php:1967 +#: includes/core/class-wc-subscriptions-manager.php:2001 #: includes/core/wcs-user-functions.php:329 #: templates/myaccount/related-orders.php:83 msgctxt "an action on a subscription" @@ -1846,6 +1923,7 @@ msgstr "" #. translators: placeholder is the number of subscriptions updated #: includes/core/admin/class-wcs-admin-post-types.php:419 +#, php-format msgid "%s subscription status changed." msgid_plural "%s subscription statuses changed." msgstr[0] "" @@ -1853,6 +1931,7 @@ msgstr[1] "" #. translators: 1$: is the number of subscriptions not updated, 2$: is the error message #: includes/core/admin/class-wcs-admin-post-types.php:438 +#, php-format msgid "%1$s subscription could not be updated: %2$s" msgid_plural "%1$s subscriptions could not be updated: %2$s" msgstr[0] "" @@ -1874,7 +1953,7 @@ msgstr "" #: includes/core/admin/class-wcs-admin-post-types.php:467 #: includes/core/class-wc-subscriptions-core-plugin.php:397 -#: includes/gifting/class-wcsg-recipient-management.php:562 +#: includes/gifting/class-wcsg-recipient-management.php:556 #: templates/emails/cancelled-subscription.php:39 #: templates/emails/expired-subscription.php:24 #: templates/emails/on-hold-subscription.php:24 @@ -1923,12 +2002,14 @@ msgstr "" #. translators: placeholder is a subscription ID. #: includes/core/admin/class-wcs-admin-post-types.php:510 +#, php-format msgctxt "hash before subscription number" msgid "#%s" msgstr "" #. translators: Placeholder is a
HTML tag. #: includes/core/admin/class-wcs-admin-post-types.php:522 +#, php-format msgid "This subscription couldn't be loaded from the database. %s Click to learn more." msgstr "" @@ -1939,16 +2020,19 @@ msgstr "" #. translators: placeholder is customer's billing email #: includes/core/admin/class-wcs-admin-post-types.php:565 +#, php-format msgid "Email: %s" msgstr "" #. translators: placeholder is customer's billing phone number #: includes/core/admin/class-wcs-admin-post-types.php:570 +#, php-format msgid "Tel: %s" msgstr "" #. translators: $1: is opening link, $2: is subscription order number, $3: is closing link tag, $4: is user's name #: includes/core/admin/class-wcs-admin-post-types.php:601 +#, php-format msgctxt "Subscription title on admin table. (e.g.: #211 for John Doe)" msgid "%1$s#%2$s%3$s for %4$s" msgstr "" @@ -1959,6 +2043,7 @@ msgstr "" #. translators: %d: item count. #: includes/core/admin/class-wcs-admin-post-types.php:631 +#, php-format msgid "%d item" msgid_plural "%d items" msgstr[0] "" @@ -1967,7 +2052,8 @@ msgstr[1] "" #. translators: placeholder is the display name of a payment gateway a subscription was paid by #. translators: %s: payment method. #: includes/core/admin/class-wcs-admin-post-types.php:650 -#: includes/core/class-wc-subscription.php:2388 +#: includes/core/class-wc-subscription.php:2419 +#, php-format msgid "Via %s" msgstr "" @@ -1999,6 +2085,7 @@ msgstr "" #. translators: placeholder is previous post title #: includes/core/admin/class-wcs-admin-post-types.php:1119 +#, php-format msgctxt "used in post updated messages" msgid "Subscription restored to revision from %s" msgstr "" @@ -2013,6 +2100,7 @@ msgstr "" #. translators: php date string #: includes/core/admin/class-wcs-admin-post-types.php:1124 +#, php-format msgid "Subscription scheduled for: %1$s." msgstr "" @@ -2035,13 +2123,14 @@ msgid "None" msgstr "" #: includes/core/admin/class-wcs-admin-post-types.php:1176 -#: includes/core/class-wc-subscription.php:2370 +#: includes/core/class-wc-subscription.php:2401 #: includes/core/class-wcs-change-payment-method-admin.php:173 msgid "Manual Renewal" msgstr "" #. translators: 1: user display name 2: user ID 3: user email #: includes/core/admin/class-wcs-admin-post-types.php:1340 +#, php-format msgid "%1$s (#%2$s – %3$s)" msgstr "" @@ -2146,12 +2235,14 @@ msgstr "" #. Translators: 1) an
tag pointing to a doc on how to fix outdated templates, 2) closing tag. #: includes/core/admin/class-wcs-admin-system-status.php:207 #: includes/gifting/class-wcsg-admin-system-status.php:76 +#, php-format msgid "%1$sLearn how to update%2$s" msgstr "" #. translators: %1$s is the file version, %2$s is the core version #: includes/core/admin/class-wcs-admin-system-status.php:252 #: includes/gifting/class-wcsg-admin-system-status.php:119 +#, php-format msgid "version %1$s is out of date. The core version is %2$s" msgstr "" @@ -2245,6 +2336,7 @@ msgstr "" #. translators: %1$d=count of total entries needing conversion #: includes/core/admin/debug-tools/class-wcs-notifications-debug-tool-processor.php:334 +#, php-format msgid "Stopping this will halt the background process that adds notifications to pending, active, and on-hold subscriptions. %1$d subscriptions remain to be processed." msgstr "" @@ -2289,11 +2381,13 @@ msgstr "" #. translators: 1$ is a comma-separated list of invalid dates fields like "Start Date", "Next Payment", 2$-3$: opening and closing tags. #: includes/core/admin/meta-boxes/class-wcs-meta-box-schedule.php:126 +#, php-format msgid "Some subscription dates could not be updated because they contain invalid values: %2$s%1$s%3$s. Please correct these dates and save the changes." msgstr "" #. translators: placeholder is the ID of the subscription #: includes/core/admin/meta-boxes/class-wcs-meta-box-subscription-data.php:57 +#, php-format msgctxt "edit subscription header" msgid "Subscription #%s details" msgstr "" @@ -2324,6 +2418,7 @@ msgstr "" #. translators: placeholder is an order number. #: includes/core/admin/meta-boxes/class-wcs-meta-box-subscription-data.php:130 +#, php-format msgid "#%1$s" msgstr "" @@ -2342,7 +2437,7 @@ msgstr "" #: includes/core/admin/meta-boxes/class-wcs-meta-box-subscription-data.php:159 #: includes/core/admin/meta-boxes/class-wcs-meta-box-subscription-data.php:257 #: includes/payment-retry/data-stores/class-wcs-retry-post-store.php:53 -#: build/gifting-blocks-checkout.js:1 +#: build/wcsg-blocks-integration.js:1 #: client/gifting/components/line-item-gift-recipient/index.js:194 msgid "Edit" msgstr "" @@ -2371,6 +2466,7 @@ msgstr "" #. translators: %s: gateway ID. #: includes/core/admin/meta-boxes/class-wcs-meta-box-subscription-data.php:196 #: includes/core/class-wcs-change-payment-method-admin.php:51 +#, php-format msgctxt "The gateway ID displayed on the Edit Subscriptions screen when editing payment method." msgid "Gateway ID: [%s]" msgstr "" @@ -2413,17 +2509,20 @@ msgstr "" #. translators: %s: parent order number (linked to its details screen). #: includes/core/admin/meta-boxes/class-wcs-meta-box-subscription-data.php:433 +#, php-format msgctxt "subscription note after linking to a parent order" msgid "Subscription linked to parent order %s via admin." msgstr "" #. translators: placeholder is error message from the payment gateway or subscriptions when updating the status #: includes/core/admin/meta-boxes/class-wcs-meta-box-subscription-data.php:448 +#, php-format msgid "Error updating some information: %s" msgstr "" #. translators: placeholder is an order number. #: includes/core/admin/meta-boxes/views/html-related-orders-row.php:14 +#, php-format msgid "Edit order number %s" msgstr "" @@ -2433,12 +2532,13 @@ msgstr "" #. translators: %s: order ID. #: includes/core/admin/meta-boxes/views/html-related-orders-row.php:16 #: includes/core/admin/meta-boxes/views/html-unknown-related-orders-row.php:18 -#: includes/core/class-wc-subscriptions-renewal-order.php:154 +#: includes/core/class-wc-subscriptions-renewal-order.php:156 #: includes/early-renewal/class-wcs-cart-early-renewal.php:222 #: includes/early-renewal/wcs-early-renewal-functions.php:136 #: templates/myaccount/my-subscriptions.php:36 #: templates/myaccount/related-orders.php:49 #: templates/myaccount/related-subscriptions.php:34 +#, php-format msgctxt "hash before order number" msgid "#%s" msgstr "" @@ -2497,6 +2597,7 @@ msgstr "" #. Translators: The %1 placeholder is the translated order relationship ("Parent Order"), %2 placeholder is a
HTML tag. #: includes/core/admin/meta-boxes/views/html-unknown-related-orders-row.php:25 +#, php-format msgid "This %1$s couldn't be loaded from the database. %1$s Click to learn more." msgstr "" @@ -2506,21 +2607,25 @@ msgstr "" #. translators: %s: subscription status. #: includes/core/class-wc-subscription.php:445 +#, php-format msgid "Unable to change subscription status to \"%s\"." msgstr "" #. translators: 1: subscription status, 2: error message. #: includes/core/class-wc-subscription.php:568 +#, php-format msgid "Unable to change subscription status to \"%1$s\". Exception: %2$s" msgstr "" #. translators: 1: old subscription status 2: new subscription status #: includes/core/class-wc-subscription.php:603 +#, php-format msgid "Status changed from %1$s to %2$s." msgstr "" #. translators: %s: new order status #: includes/core/class-wc-subscription.php:617 +#, php-format msgid "Status set to %s." msgstr "" @@ -2530,13 +2635,15 @@ msgstr "" #. translators: placeholder is human time diff (e.g. "3 weeks") #: includes/core/class-wc-subscription.php:1347 -#: includes/core/class-wc-subscriptions-manager.php:2414 +#: includes/core/class-wc-subscriptions-manager.php:2448 +#, php-format msgid "In %s" msgstr "" #. translators: placeholder is human time diff (e.g. "3 weeks") #: includes/core/class-wc-subscription.php:1350 #: includes/core/wcs-formatting-functions.php:246 +#, php-format msgid "%s ago" msgstr "" @@ -2563,13 +2670,15 @@ msgstr "" #. translators: %s: date type (e.g. "trial_end"). #: includes/core/class-wc-subscription.php:1537 +#, php-format msgid "The %s date of a subscription can not be deleted. You must delete the order." msgstr "" #. translators: %d: subscription ID. #. translators: %d: order ID. #: includes/core/class-wc-subscription.php:1546 -#: includes/core/class-wc-subscription.php:2866 +#: includes/core/class-wc-subscription.php:2897 +#, php-format msgid "Subscription #%d: " msgstr "" @@ -2577,67 +2686,75 @@ msgstr "" msgid "Payment status marked complete." msgstr "" -#: includes/core/class-wc-subscription.php:2054 -msgid "Payment failed." +#. translators: %d: related order ID +#: includes/core/class-wc-subscription.php:2059 +#, php-format +msgid "Related order #%d failed." msgstr "" -#: includes/core/class-wc-subscription.php:2059 +#: includes/core/class-wc-subscription.php:2078 msgid "Subscription Cancelled: maximum number of failed payments reached." msgstr "" -#: includes/core/class-wc-subscription.php:2173 +#: includes/core/class-wc-subscription.php:2204 msgid "The \"all\" value for $order_type parameter is deprecated. It was a misnomer, as it did not return resubscribe orders. It was also inconsistent with order type values accepted by wcs_get_subscription_orders(). Use array( \"parent\", \"renewal\", \"switch\" ) to maintain previous behaviour, or \"any\" to receive all order types, including switch and resubscribe." msgstr "" -#: includes/core/class-wc-subscription.php:2468 -#: includes/core/wcs-functions.php:867 +#: includes/core/class-wc-subscription.php:2499 +#: includes/core/wcs-functions.php:892 msgid "Payment method meta must be an array." msgstr "" -#: includes/core/class-wc-subscription.php:2735 +#: includes/core/class-wc-subscription.php:2766 msgid "Invalid format. First parameter needs to be an array." msgstr "" -#: includes/core/class-wc-subscription.php:2739 +#: includes/core/class-wc-subscription.php:2770 msgid "Invalid data. First parameter was empty when passed to update_dates()." msgstr "" -#: includes/core/class-wc-subscription.php:2746 +#: includes/core/class-wc-subscription.php:2777 msgid "Invalid data. First parameter has a date that is not in the registered date types." msgstr "" #. translators: placeholder is date type (e.g. "end", "next_payment"...) -#: includes/core/class-wc-subscription.php:2801 +#: includes/core/class-wc-subscription.php:2832 +#, php-format msgctxt "appears in an error message if date is wrong format" msgid "Invalid %s date. The date must be of the format: \"Y-m-d H:i:s\"." msgstr "" #. translators: %s: date type (e.g. "end"). -#: includes/core/class-wc-subscription.php:2834 +#: includes/core/class-wc-subscription.php:2865 +#, php-format msgid "The %s date must occur after the cancellation date." msgstr "" #. translators: %s: date type (e.g. "end"). -#: includes/core/class-wc-subscription.php:2840 +#: includes/core/class-wc-subscription.php:2871 +#, php-format msgid "The %s date must occur after the last payment date." msgstr "" #. translators: %s: date type (e.g. "end"). -#: includes/core/class-wc-subscription.php:2845 +#: includes/core/class-wc-subscription.php:2876 +#, php-format msgid "The %s date must occur after the next payment date." msgstr "" #. translators: %s: date type (e.g. "end"). -#: includes/core/class-wc-subscription.php:2851 +#: includes/core/class-wc-subscription.php:2882 +#, php-format msgid "The %s date must occur after the trial end date." msgstr "" #. translators: %s: date type (e.g. "next_payment"). -#: includes/core/class-wc-subscription.php:2856 +#: includes/core/class-wc-subscription.php:2887 +#, php-format msgid "The %s date must occur after the start date." msgstr "" -#: includes/core/class-wc-subscription.php:2886 +#: includes/core/class-wc-subscription.php:2917 #: includes/core/class-wc-subscriptions-checkout.php:349 msgid "Backordered" msgstr "" @@ -2652,11 +2769,13 @@ msgstr "" #. translators: $1: address type (Shipping Address / Billing Address), $2: opening tag, $3: closing tag #: includes/core/class-wc-subscriptions-addresses.php:122 +#, php-format msgid "Update the %1$s used for %2$sall%3$s future renewals of my active subscriptions" msgstr "" #. translators: $1: address type (Billing Address), $2: opening tag, $3: closing tag #: includes/core/class-wc-subscriptions-addresses.php:167 +#, php-format msgid "Update the %1$s contact used for %2$sall%3$s future renewals of my active subscriptions" msgstr "" @@ -2666,12 +2785,14 @@ msgstr "" #: includes/core/class-wc-subscriptions-addresses.php:346 #: includes/core/class-wc-subscriptions-change-payment-gateway.php:762 #: includes/core/class-wcs-query.php:101 +#, php-format msgctxt "hash before order number" msgid "Subscription #%s" msgstr "" #. translators: %s: address type (eg. 'billing' or 'shipping'). #: includes/core/class-wc-subscriptions-addresses.php:352 +#, php-format msgctxt "change billing or shipping address" msgid "Change %s address" msgstr "" @@ -2705,7 +2826,7 @@ msgid "That product can not be added to your cart as it already contains a subsc msgstr "" #: includes/core/class-wc-subscriptions-cart-validator.php:195 -#: includes/core/class-wc-subscriptions-cart.php:1472 +#: includes/core/class-wc-subscriptions-cart.php:1473 msgid "That subscription product can not be added to your cart as it already contains a subscription renewal." msgstr "" @@ -2717,86 +2838,97 @@ msgstr "" msgid "Invalid recurring shipping method." msgstr "" -#: includes/core/class-wc-subscriptions-cart.php:2157 +#: includes/core/class-wc-subscriptions-cart.php:2158 msgid "now" msgstr "" #. translators: placeholder is a number of days. -#: includes/core/class-wc-subscriptions-cart.php:2319 +#: includes/core/class-wc-subscriptions-cart.php:2320 #: includes/core/wcs-time-functions.php:58 +#, php-format msgid "%s day" msgid_plural "%s days" msgstr[0] "" msgstr[1] "" #. translators: placeholder is a number of weeks. -#: includes/core/class-wc-subscriptions-cart.php:2323 +#: includes/core/class-wc-subscriptions-cart.php:2324 #: includes/core/wcs-time-functions.php:60 +#, php-format msgid "%s week" msgid_plural "%s weeks" msgstr[0] "" msgstr[1] "" #. translators: placeholder is a number of months. -#: includes/core/class-wc-subscriptions-cart.php:2327 +#: includes/core/class-wc-subscriptions-cart.php:2328 #: includes/core/wcs-time-functions.php:62 +#, php-format msgid "%s month" msgid_plural "%s months" msgstr[0] "" msgstr[1] "" #. translators: placeholder is a number of years. -#: includes/core/class-wc-subscriptions-cart.php:2331 +#: includes/core/class-wc-subscriptions-cart.php:2332 #: includes/core/wcs-time-functions.php:64 +#, php-format msgid "%s year" msgid_plural "%s years" msgstr[0] "" msgstr[1] "" #. translators: 1$: day of the week (e.g. "every Wednesday"). -#: includes/core/class-wc-subscriptions-cart.php:2353 +#: includes/core/class-wc-subscriptions-cart.php:2354 +#, php-format msgid "every %1$s" msgstr "" #. translators: 1$: period, 2$: day of the week (e.g. "every 2nd week on Wednesday"). -#: includes/core/class-wc-subscriptions-cart.php:2357 +#: includes/core/class-wc-subscriptions-cart.php:2358 +#, php-format msgid "every %1$s on %2$s" msgstr "" -#: includes/core/class-wc-subscriptions-cart.php:2366 +#: includes/core/class-wc-subscriptions-cart.php:2367 msgid "on the last day of each month" msgstr "" #. translators: 1$: day of the month (e.g. "23rd") (e.g. "every 23rd of each month"). -#: includes/core/class-wc-subscriptions-cart.php:2370 +#: includes/core/class-wc-subscriptions-cart.php:2371 +#, php-format msgid "on the %1$s of each month" msgstr "" #. translators: 1$: interval (e.g. "3rd") (e.g. "on the last day of every 3rd month"). -#: includes/core/class-wc-subscriptions-cart.php:2378 +#: includes/core/class-wc-subscriptions-cart.php:2379 +#, php-format msgid "on the last day of every %1$s month" msgstr "" #. translators: on the, 1$: day of every, 2$: month (e.g. "on the 23rd day of every 2nd month"). -#: includes/core/class-wc-subscriptions-cart.php:2384 +#: includes/core/class-wc-subscriptions-cart.php:2385 +#, php-format msgid "on the %1$s day of every %2$s month" msgstr "" #. translators: on, 1$: , 2$: each year (e.g. "on March 15th each year"). -#: includes/core/class-wc-subscriptions-cart.php:2395 +#: includes/core/class-wc-subscriptions-cart.php:2396 +#, php-format msgid "on %1$s %2$s each year" msgstr "" #. translators: 1$: month (e.g. "March"), 2$: day of the month (e.g. "23rd), 3$: interval year (r.g March 23rd every 2nd year"). -#: includes/core/class-wc-subscriptions-cart.php:2402 +#: includes/core/class-wc-subscriptions-cart.php:2403 +#, php-format msgid "on %1$s %2$s every %3$s year" msgstr "" -#: includes/core/class-wc-subscriptions-cart.php:2436 +#: includes/core/class-wc-subscriptions-cart.php:2437 msgid "Sign up fee" msgstr "" -#: includes/core/class-wc-subscriptions-cart.php:2446 +#: includes/core/class-wc-subscriptions-cart.php:2447 msgid "Renews" msgstr "" @@ -2806,11 +2938,13 @@ msgstr "" #. translators: placeholder is next payment's date #: includes/core/class-wc-subscriptions-change-payment-gateway.php:184 +#, php-format msgid " Next payment is due %s." msgstr "" #. translators: placeholder is either empty or "Next payment is due..." #: includes/core/class-wc-subscriptions-change-payment-gateway.php:190 +#, php-format msgid "Choose a new payment method.%s" msgstr "" @@ -2870,6 +3004,7 @@ msgstr "" #. translators: 1: old payment title, 2: new payment title. #: includes/core/class-wc-subscriptions-change-payment-gateway.php:540 +#, php-format msgctxt "%1$s: old payment title, %2$s: new payment title" msgid "Payment method changed from \"%1$s\" to \"%2$s\" by the subscriber." msgstr "" @@ -2879,6 +3014,7 @@ msgid "An error occurred updating your subscription's payment method. Please con msgstr "" #: includes/core/class-wc-subscriptions-change-payment-gateway.php:559 +#, php-format msgid "%1$sError:%2$s %3$s" msgstr "" @@ -2899,26 +3035,31 @@ msgstr "" #. translators: placeholder is an internal error number #: includes/core/class-wc-subscriptions-checkout.php:205 #: includes/core/class-wc-subscriptions-checkout.php:393 +#, php-format msgid "Error %d: Unable to create subscription. Please try again." msgstr "" #. translators: placeholder is an internal error number #: includes/core/class-wc-subscriptions-checkout.php:222 +#, php-format msgid "Error %d: Unable to add tax to subscription. Please try again." msgstr "" #. translators: placeholder is an internal error number #: includes/core/class-wc-subscriptions-checkout.php:234 +#, php-format msgid "Error %d: Unable to create order. Please try again." msgstr "" #. Translators: Placeholders are opening and closing strong and link tags. #: includes/core/class-wc-subscriptions-checkout.php:522 +#, php-format msgid "Purchasing a subscription product requires an account. Please go to the %1$sMy Account%2$s page to login or register." msgstr "" #. Translators: Placeholders are opening and closing strong and link tags. #: includes/core/class-wc-subscriptions-checkout.php:525 +#, php-format msgid "Purchasing a subscription product requires an account. Please go to the %1$sMy Account%2$s page to login or contact us if you need assistance." msgstr "" @@ -2969,6 +3110,7 @@ msgstr "" #. translators: placeholder is a post count. #: includes/core/class-wc-subscriptions-core-plugin.php:469 +#, php-format msgctxt "post status label including post count" msgid "Active (%s)" msgid_plural "Active (%s)" @@ -2977,6 +3119,7 @@ msgstr[1] "" #. translators: placeholder is a post count. #: includes/core/class-wc-subscriptions-core-plugin.php:471 +#, php-format msgctxt "post status label including post count" msgid "Switched (%s)" msgid_plural "Switched (%s)" @@ -2985,6 +3128,7 @@ msgstr[1] "" #. translators: placeholder is a post count. #: includes/core/class-wc-subscriptions-core-plugin.php:473 +#, php-format msgctxt "post status label including post count" msgid "Expired (%s)" msgid_plural "Expired (%s)" @@ -2993,6 +3137,7 @@ msgstr[1] "" #. translators: placeholder is a post count. #: includes/core/class-wc-subscriptions-core-plugin.php:475 +#, php-format msgctxt "post status label including post count" msgid "Pending Cancellation (%s)" msgid_plural "Pending Cancellation (%s)" @@ -3015,6 +3160,7 @@ msgstr "" #. translators: placeholders are opening and closing tags. Leads to docs on upgrading WooCommerce Subscriptions #: includes/core/class-wc-subscriptions-core-plugin.php:602 +#, php-format msgid "Warning! Version 2.0 is a major update to the WooCommerce Subscriptions extension. Before updating, please create a backup, update all WooCommerce extensions and test all plugins, custom code and payment gateways with version 2.0 on a staging site. %1$sLearn more about updating older versions of WooCommerce Subscriptions »%2$s" msgstr "" @@ -3048,6 +3194,7 @@ msgstr "" #. translators: 1$: coupon code that is being removed #: includes/core/class-wc-subscriptions-coupon.php:465 +#, php-format msgid "Sorry, the \"%1$s\" coupon is only valid for renewals." msgstr "" @@ -3061,6 +3208,7 @@ msgstr "" #. translators: placeholder is coupon code #: includes/core/class-wc-subscriptions-coupon.php:500 +#, php-format msgid "Sorry, \"%s\" can only be applied to subscription parent orders which contain a product with signup fees." msgstr "" @@ -3112,6 +3260,7 @@ msgstr "" #. translators: Link to WC Settings > Email. #: includes/core/class-wc-subscriptions-email-notifications.php:275 +#, php-format msgid "To enable/disable individual notifications and customize templates, visit the Email settings." msgstr "" @@ -3180,6 +3329,7 @@ msgstr "" #. translators: %d subscription interval. #: includes/core/class-wc-subscriptions-extend-store-endpoint.php:304 +#, php-format msgid "Shipment every %d year" msgid_plural "Shipment every %d years" msgstr[0] "" @@ -3192,6 +3342,7 @@ msgstr "" #. translators: %d subscription interval. #: includes/core/class-wc-subscriptions-extend-store-endpoint.php:308 +#, php-format msgid "Shipment every %d month" msgid_plural "Shipment every %d months" msgstr[0] "" @@ -3204,6 +3355,7 @@ msgstr "" #. translators: %d subscription interval. #: includes/core/class-wc-subscriptions-extend-store-endpoint.php:312 +#, php-format msgid "Shipment every %d week" msgid_plural "Shipment every %d weeks" msgstr[0] "" @@ -3216,6 +3368,7 @@ msgstr "" #. translators: %d subscription interval. #: includes/core/class-wc-subscriptions-extend-store-endpoint.php:316 +#, php-format msgid "Shipment every %d day" msgid_plural "Shipment every %d days" msgstr[0] "" @@ -3315,23 +3468,24 @@ msgstr "" msgid "Price prefix for the currency which can be used to format returned prices." msgstr "" -#: includes/core/class-wc-subscriptions-frontend-scripts.php:51 +#: includes/core/class-wc-subscriptions-frontend-scripts.php:53 msgid "To enable automatic renewals for this subscription, you will first need to add a payment method." msgstr "" -#: includes/core/class-wc-subscriptions-frontend-scripts.php:51 +#: includes/core/class-wc-subscriptions-frontend-scripts.php:53 msgid "Would you like to add a payment method now?" msgstr "" #: includes/core/class-wc-subscriptions-manager.php:114 -#: includes/core/class-wc-subscriptions-manager.php:2031 -#: includes/core/class-wc-subscriptions-manager.php:2046 +#: includes/core/class-wc-subscriptions-manager.php:2065 +#: includes/core/class-wc-subscriptions-manager.php:2080 msgctxt "used in order note as reason for why subscription status changed" msgid "Subscription renewal payment due:" msgstr "" #. translators: placeholder %1 is an order note. %2 is the error message that was thrown. #: includes/core/class-wc-subscriptions-manager.php:151 +#, php-format msgid "Error: Unable to create renewal order with note \"%1$s\". Message: %2$s" msgstr "" @@ -3343,132 +3497,150 @@ msgstr "" #. translators: %d: subscription ID. #: includes/core/class-wc-subscriptions-manager.php:194 #: includes/gateways/class-wc-subscriptions-payment-gateways.php:77 +#, php-format msgid "Subscription doesn't exist in scheduled action: %d" msgstr "" #. translators: $1: order number, $2: error message #: includes/core/class-wc-subscriptions-manager.php:346 +#, php-format msgid "Failed to activate subscription status for order #%1$s: %2$s" msgstr "" #. translators: $1: order number, $2: error message #: includes/core/class-wc-subscriptions-manager.php:374 +#, php-format msgid "Failed to update subscription status after order #%1$s was put on-hold: %2$s" msgstr "" #. translators: $1: order number, $2: error message #: includes/core/class-wc-subscriptions-manager.php:402 +#, php-format msgid "Failed to cancel subscription after order #%1$s was cancelled: %2$s" msgstr "" #. translators: $1: order number, $2: error message #: includes/core/class-wc-subscriptions-manager.php:430 +#, php-format msgid "Failed to set subscription as expired for order #%1$s: %2$s" msgstr "" -#: includes/core/class-wc-subscriptions-manager.php:458 +#: includes/core/class-wc-subscriptions-manager.php:460 msgid "Subscription sign up failed." msgstr "" #. translators: $1: order number, $2: error message -#: includes/core/class-wc-subscriptions-manager.php:469 +#: includes/core/class-wc-subscriptions-manager.php:485 +#, php-format msgid "Failed to process failed payment on subscription for order #%1$s: %2$s" msgstr "" -#: includes/core/class-wc-subscriptions-manager.php:549 +#: includes/core/class-wc-subscriptions-manager.php:565 msgid "Error: Unable to create subscription. Please try again." msgstr "" -#: includes/core/class-wc-subscriptions-manager.php:571 +#: includes/core/class-wc-subscriptions-manager.php:587 msgid "Error: Unable to add product to created subscription. Please try again." msgstr "" -#: includes/core/class-wc-subscriptions-manager.php:616 +#: includes/core/class-wc-subscriptions-manager.php:632 msgid "Pending subscription created." msgstr "" +#. translators: %s is the email address of the recipient. +#: includes/core/class-wc-subscriptions-manager.php:1041 +#, php-format +msgid "The gifted subscription moved to the purchaser after the recipient user with email address %s was deleted." +msgstr "" + #. Translators: 1: The subscription ID number. 2: The current user's username. -#: includes/core/class-wc-subscriptions-manager.php:1027 +#: includes/core/class-wc-subscriptions-manager.php:1061 +#, php-format msgid "The related subscription #%1$s has been deleted after the customer was deleted by %2$s." msgstr "" #. Translators: Placeholder is the subscription ID number. -#: includes/core/class-wc-subscriptions-manager.php:1030 +#: includes/core/class-wc-subscriptions-manager.php:1064 +#, php-format msgid "The related subscription #%s has been deleted after the customer was deleted." msgstr "" -#: includes/core/class-wc-subscriptions-manager.php:1176 -#: includes/core/wcs-functions.php:220 +#: includes/core/class-wc-subscriptions-manager.php:1210 +#: includes/core/wcs-functions.php:224 msgctxt "Subscription status" msgid "Active" msgstr "" -#: includes/core/class-wc-subscriptions-manager.php:1179 -#: includes/core/wcs-functions.php:222 +#: includes/core/class-wc-subscriptions-manager.php:1213 +#: includes/core/wcs-functions.php:226 msgctxt "Subscription status" msgid "Cancelled" msgstr "" -#: includes/core/class-wc-subscriptions-manager.php:1182 -#: includes/core/wcs-functions.php:224 +#: includes/core/class-wc-subscriptions-manager.php:1216 +#: includes/core/wcs-functions.php:228 msgctxt "Subscription status" msgid "Expired" msgstr "" -#: includes/core/class-wc-subscriptions-manager.php:1185 -#: includes/core/wcs-functions.php:219 +#: includes/core/class-wc-subscriptions-manager.php:1219 +#: includes/core/wcs-functions.php:223 msgctxt "Subscription status" msgid "Pending" msgstr "" -#: includes/core/class-wc-subscriptions-manager.php:1188 +#: includes/core/class-wc-subscriptions-manager.php:1222 msgctxt "Subscription status" msgid "Failed" msgstr "" -#: includes/core/class-wc-subscriptions-manager.php:1192 +#: includes/core/class-wc-subscriptions-manager.php:1226 msgctxt "Subscription status" msgid "On-hold" msgstr "" #. translators: 1$: month number (e.g. "01"), 2$: month abbreviation (e.g. "Jan") -#: includes/core/class-wc-subscriptions-manager.php:1944 +#: includes/core/class-wc-subscriptions-manager.php:1978 +#, php-format msgctxt "used in a select box" msgid "%1$s-%2$s" msgstr "" #. translators: all fields are full html nodes: 1$: month input, 2$: day input, 3$: year input, 4$: hour input, 5$: minute input. Change the order if you'd like -#: includes/core/class-wc-subscriptions-manager.php:1957 +#: includes/core/class-wc-subscriptions-manager.php:1991 +#, php-format msgid "%1$s%2$s, %3$s @ %4$s : %5$s" msgstr "" #. translators: all fields are full html nodes: 1$: month input, 2$: day input, 3$: year input. Change the order if you'd like -#: includes/core/class-wc-subscriptions-manager.php:1961 +#: includes/core/class-wc-subscriptions-manager.php:1995 +#, php-format msgid "%1$s%2$s, %3$s" msgstr "" -#: includes/core/class-wc-subscriptions-manager.php:1966 +#: includes/core/class-wc-subscriptions-manager.php:2000 msgid "Change" msgstr "" #. translators: placeholder is subscription ID -#: includes/core/class-wc-subscriptions-manager.php:2296 +#: includes/core/class-wc-subscriptions-manager.php:2330 +#, php-format msgid "Failed sign-up for subscription %s." msgstr "" -#: includes/core/class-wc-subscriptions-manager.php:2387 +#: includes/core/class-wc-subscriptions-manager.php:2421 msgid "Invalid security token, please reload the page and try again." msgstr "" -#: includes/core/class-wc-subscriptions-manager.php:2391 +#: includes/core/class-wc-subscriptions-manager.php:2425 msgid "Only store managers can edit payment dates." msgstr "" -#: includes/core/class-wc-subscriptions-manager.php:2395 +#: includes/core/class-wc-subscriptions-manager.php:2429 msgid "Please enter all date fields." msgstr "" -#: includes/core/class-wc-subscriptions-manager.php:2420 +#: includes/core/class-wc-subscriptions-manager.php:2454 msgid "Date Changed" msgstr "" @@ -3480,6 +3652,7 @@ msgstr[1] "" #. translators: placeholders are opening and closing link tags #: includes/core/class-wc-subscriptions-order.php:369 +#, php-format msgid "View the status of your subscription in %1$syour account%2$s." msgid_plural "View the status of your subscriptions in %1$syour account%2$s." msgstr[0] "" @@ -3494,63 +3667,66 @@ msgid "Payment completed on order after subscription was cancelled." msgstr "" #. translators: %d: subscription ID. -#: includes/core/class-wc-subscriptions-order.php:614 +#: includes/core/class-wc-subscriptions-order.php:610 +#, php-format msgid "Order cancelled due to subscription #%d cancellation." msgstr "" #. translators: $1: opening link tag, $2: order number, $3: closing link tag -#: includes/core/class-wc-subscriptions-order.php:1200 +#: includes/core/class-wc-subscriptions-order.php:1196 +#, php-format msgid "Subscription cancelled for refunded order %1$s#%2$s%3$s." msgstr "" -#: includes/core/class-wc-subscriptions-order.php:2599 +#: includes/core/class-wc-subscriptions-order.php:2595 msgctxt "An order type" msgid "Original" msgstr "" -#: includes/core/class-wc-subscriptions-order.php:2600 +#: includes/core/class-wc-subscriptions-order.php:2596 msgctxt "An order type" msgid "Subscription Parent" msgstr "" -#: includes/core/class-wc-subscriptions-order.php:2601 +#: includes/core/class-wc-subscriptions-order.php:2597 msgctxt "An order type" msgid "Subscription Renewal" msgstr "" -#: includes/core/class-wc-subscriptions-order.php:2602 +#: includes/core/class-wc-subscriptions-order.php:2598 msgctxt "An order type" msgid "Subscription Resubscribe" msgstr "" -#: includes/core/class-wc-subscriptions-order.php:2603 +#: includes/core/class-wc-subscriptions-order.php:2599 msgctxt "An order type" msgid "Subscription Switch" msgstr "" -#: includes/core/class-wc-subscriptions-order.php:2604 +#: includes/core/class-wc-subscriptions-order.php:2600 msgctxt "An order type" msgid "Non-subscription" msgstr "" -#: includes/core/class-wc-subscriptions-order.php:2613 +#: includes/core/class-wc-subscriptions-order.php:2609 msgid "All orders types" msgstr "" -#: includes/core/class-wc-subscriptions-order.php:2646 +#: includes/core/class-wc-subscriptions-order.php:2642 msgid "Renewal Order" msgstr "" -#: includes/core/class-wc-subscriptions-order.php:2648 +#: includes/core/class-wc-subscriptions-order.php:2644 msgid "Resubscribe Order" msgstr "" -#: includes/core/class-wc-subscriptions-order.php:2650 +#: includes/core/class-wc-subscriptions-order.php:2646 msgid "Parent Order" msgstr "" #. translators: %1$s refers to the price. This string is meant to prefix another string below, e.g. "$5 now, and $5 on March 15th each year" #: includes/core/class-wc-subscriptions-product.php:313 +#, php-format msgid "%1$s now, and " msgstr "" @@ -3560,6 +3736,7 @@ msgstr "" #: includes/core/class-wc-subscriptions-product.php:322 #: includes/core/wcs-formatting-functions.php:116 #: includes/core/wcs-formatting-functions.php:201 +#, php-format msgid "%1$s every %2$s" msgstr "" @@ -3567,6 +3744,7 @@ msgstr "" #. translators: 1$: recurring amount string, 2$: period, 3$: day of the week (e.g. "$10 every 2nd week on Wednesday") #: includes/core/class-wc-subscriptions-product.php:326 #: includes/core/wcs-formatting-functions.php:125 +#, php-format msgid "%1$s every %2$s on %3$s" msgstr "" @@ -3574,6 +3752,7 @@ msgstr "" #. translators: placeholder is recurring amount #: includes/core/class-wc-subscriptions-product.php:337 #: includes/core/wcs-formatting-functions.php:143 +#, php-format msgid "%s on the last day of each month" msgstr "" @@ -3581,6 +3760,7 @@ msgstr "" #. translators: 1$: recurring amount, 2$: day of the month (e.g. "23rd") (e.g. "$5 every 23rd of each month") #: includes/core/class-wc-subscriptions-product.php:341 #: includes/core/wcs-formatting-functions.php:146 +#, php-format msgid "%1$s on the %2$s of each month" msgstr "" @@ -3588,6 +3768,7 @@ msgstr "" #. translators: 1$: recurring amount, 2$: interval (e.g. "3rd") (e.g. "$10 on the last day of every 3rd month") #: includes/core/class-wc-subscriptions-product.php:350 #: includes/core/wcs-formatting-functions.php:162 +#, php-format msgid "%1$s on the last day of every %2$s month" msgstr "" @@ -3595,6 +3776,7 @@ msgstr "" #. translators: 1$: recurring amount, 2$: day of the month (e.g. "23rd") (e.g. "$5 every 23rd of each month") #: includes/core/class-wc-subscriptions-product.php:357 #: includes/core/wcs-formatting-functions.php:165 +#, php-format msgid "%1$s on the %2$s day of every %3$s month" msgstr "" @@ -3602,6 +3784,7 @@ msgstr "" #. translators: 1$: recurring amount, 2$: month (e.g. "March"), 3$: day of the month (e.g. "23rd") (e.g. "$15 on March 15th every 3rd year") #: includes/core/class-wc-subscriptions-product.php:369 #: includes/core/wcs-formatting-functions.php:178 +#, php-format msgid "%1$s on %2$s %3$s each year" msgstr "" @@ -3609,6 +3792,7 @@ msgstr "" #. translators: 1$: recurring amount, 2$: month (e.g. "March"), 3$: day of the month (e.g. "23rd") (e.g. "$15 on March 15th every 3rd year") #: includes/core/class-wc-subscriptions-product.php:377 #: includes/core/wcs-formatting-functions.php:187 +#, php-format msgid "%1$s on %2$s %3$s every %4$s year" msgstr "" @@ -3616,6 +3800,7 @@ msgstr "" #. translators: 1$: recurring amount, 2$: subscription period (e.g. "month" or "3 months") (e.g. "$15 / month" or "$15 every 2nd month") #: includes/core/class-wc-subscriptions-product.php:389 #: includes/core/wcs-formatting-functions.php:198 +#, php-format msgid "%1$s / %2$s" msgid_plural "%1$s every %2$s" msgstr[0] "" @@ -3623,6 +3808,7 @@ msgstr[1] "" #. translators: billing period (e.g. "every week"). #: includes/core/class-wc-subscriptions-product.php:399 +#, php-format msgid "every %s" msgstr "" @@ -3630,16 +3816,19 @@ msgstr "" #. translators: 1$: subscription string (e.g. "$10 up front then $5 on March 23rd every 3rd year"), 2$: length (e.g. "4 years") #: includes/core/class-wc-subscriptions-product.php:409 #: includes/core/wcs-formatting-functions.php:209 +#, php-format msgid "%1$s for %2$s" msgstr "" #. translators: 1$: subscription string (e.g. "$15 on March 15th every 3 years for 6 years"), 2$: trial length (e.g.: "with 4 months free trial"). #: includes/core/class-wc-subscriptions-product.php:415 +#, php-format msgid "%1$s with %2$s free trial" msgstr "" #. translators: 1$: subscription string (e.g. "$15 on March 15th every 3 years for 6 years with 2 months free trial"), 2$: signup fee price (e.g. "and a $30 sign-up fee"). #: includes/core/class-wc-subscriptions-product.php:420 +#, php-format msgid "%1$s and a %2$s sign-up fee" msgstr "" @@ -3648,11 +3837,12 @@ msgid "This variation can not be removed because it is associated with existing msgstr "" #. translators: placeholder is order ID -#: includes/core/class-wc-subscriptions-renewal-order.php:157 +#: includes/core/class-wc-subscriptions-renewal-order.php:159 +#, php-format msgid "Order %s created to record renewal." msgstr "" -#: includes/core/class-wc-subscriptions-renewal-order.php:177 +#: includes/core/class-wc-subscriptions-renewal-order.php:179 msgid "Subscription renewal orders cannot be cancelled." msgstr "" @@ -3666,6 +3856,7 @@ msgstr "" #. translators: placeholder is a year (e.g. "2016") #: includes/core/class-wc-subscriptions-synchroniser.php:51 +#, php-format msgctxt "used in subscription product edit screen" msgid "Align the payment date for this subscription to a specific day of the year. If the date has already taken place this year, the first payment will be processed in %s. Set the day to 0 to disable payment syncing for this product." msgstr "" @@ -3676,6 +3867,7 @@ msgstr "" #. translators: placeholders are opening and closing link tags #: includes/core/class-wc-subscriptions-synchroniser.php:203 +#, php-format msgctxt "used in the general subscription options page" msgid "Align subscription renewal to a specific day of the week, month or year. For example, the first day of the month. %1$sLearn more%2$s." msgstr "" @@ -3738,11 +3930,13 @@ msgstr "" #. translators: placeholder is a day of the week #: includes/core/class-wc-subscriptions-synchroniser.php:785 +#, php-format msgid "%s each week" msgstr "" #. translators: placeholder is a number of day with language specific suffix applied (e.g. "1st", "3rd", "5th", etc...) #: includes/core/class-wc-subscriptions-synchroniser.php:791 +#, php-format msgid "%s day of the month" msgstr "" @@ -3756,24 +3950,29 @@ msgstr "" #. translators: placeholder is a date #: includes/core/class-wc-subscriptions-synchroniser.php:857 +#, php-format msgid "First payment prorated. Next payment: %s" msgstr "" #. translators: placeholder is a date #: includes/core/class-wc-subscriptions-synchroniser.php:860 +#, php-format msgid "First payment: %s" msgstr "" #: includes/core/class-wcs-cached-data-manager.php:75 +#, php-format msgid "Related order caching is now handled by %1$s." msgstr "" #: includes/core/class-wcs-cached-data-manager.php:82 +#, php-format msgid "Customer subscription caching is now handled by %1$s." msgstr "" #: includes/core/class-wcs-cached-data-manager.php:106 #: includes/core/class-wcs-cached-data-manager.php:238 +#, php-format msgid "Customer subscription caching is now handled by %1$s and %2$s." msgstr "" @@ -3800,16 +3999,19 @@ msgstr "" #. translators: placeholder is an item name #: includes/core/class-wcs-cart-renewal.php:333 +#, php-format msgid "The %s product has been deleted and can no longer be renewed. Please choose a new product or contact us for assistance." msgstr "" #. translators: %s is subscription's number #: includes/core/class-wcs-cart-renewal.php:368 +#, php-format msgid "Subscription #%s has not been added to the cart." msgstr "" #. translators: %s is order's number #: includes/core/class-wcs-cart-renewal.php:371 +#, php-format msgid "Order #%s has not been added to the cart." msgstr "" @@ -3859,6 +4061,7 @@ msgstr "" #. translators: %s: order number. #: includes/core/class-wcs-cart-resubscribe.php:324 +#, php-format msgid "Customer resubscribed in order #%s" msgstr "" @@ -3873,6 +4076,7 @@ msgstr "" #. Translators: Placeholder is the payment gateway title. #: includes/core/class-wcs-change-payment-method-admin.php:152 +#, php-format msgid "Admin turned on automatic renewals by changing payment method to \"%s\" via the Edit Subscription screen." msgstr "" @@ -3886,6 +4090,7 @@ msgstr "" #. translators: placeholders are opening and closing link tags #: includes/core/class-wcs-limiter.php:49 +#, php-format msgid "Only allow a customer to have one subscription to this product. %1$sLearn more%2$s." msgstr "" @@ -3927,33 +4132,39 @@ msgstr "" #. translators: 1: deleted token, 2: new token. #: includes/core/class-wcs-my-account-payment-methods.php:131 +#, php-format msgctxt "used in subscription note" msgid "Payment method meta updated after customer deleted a token from their My Account page. Payment meta changed from %1$s to %2$s" msgstr "" #. translators: $1: the token/credit card label, 2$-3$: opening and closing strong and link tags #: includes/core/class-wcs-my-account-payment-methods.php:136 +#, php-format msgid "The deleted payment method was used for automatic subscription payments. To avoid failed renewal payments in future the subscriptions using this payment method have been updated to use your %1$s. To change the payment method of individual subscriptions go to your %2$sMy Account > Subscriptions%3$s page." msgstr "" #. translators: 1: token display name, 2: opening link tag, 4: closing link tag, 3: opening link tag. #: includes/core/class-wcs-my-account-payment-methods.php:191 +#, php-format msgid "Would you like to update your subscriptions to use this new payment method - %1$s?%2$sYes%4$s | %3$sNo%4$s" msgstr "" #. translators: 1: previous token, 2: new token. #: includes/core/class-wcs-my-account-payment-methods.php:232 +#, php-format msgctxt "used in subscription note" msgid "Payment method meta updated after customer changed their default token and opted to update their subscriptions. Payment meta changed from %1$s to %2$s" msgstr "" #. translators: %1$s opening strong HTML tag, %2$s closing strong HTML tag. #: includes/core/class-wcs-my-account-payment-methods.php:254 +#, php-format msgid "That payment method cannot be deleted because it is linked to an automatic subscription. Please %1$sadd a payment method%2$s, before trying again." msgstr "" #. translators: %1$s opening strong and em HTML tags, %2$s closing em HTML tag, %3$s closing strong HTML tag. #: includes/core/class-wcs-my-account-payment-methods.php:260 +#, php-format msgid "That payment method cannot be deleted because it is linked to an automatic subscription. Please choose a %1$sdefault%2$s payment method%3$s, before trying again." msgstr "" @@ -3967,16 +4178,19 @@ msgstr "" #. translators: 1$-2$: opening and closing tags. #: includes/core/class-wcs-permalink-manager.php:91 +#, php-format msgid "Error saving Subscriptions endpoints: %1$sSubscriptions%2$s, %1$sView subscription%2$s and %1$sSubscription payment method%2$s cannot be the same. The changes have been reverted." msgstr "" #. translators: %s: invalid type of update argument. #: includes/core/class-wcs-post-meta-cache-manager.php:200 +#, php-format msgid "Invalid update type: %s. Post update types supported are \"add\" or \"delete\". Updates are done on post meta directly." msgstr "" #. translators: placeholder is a page number. #: includes/core/class-wcs-query.php:106 +#, php-format msgid "Subscriptions (page %d)" msgstr "" @@ -4006,12 +4220,14 @@ msgstr "" #. translators: %d: subscription ID. #: includes/core/class-wcs-remove-item.php:79 +#, php-format msgctxt "hash before subscription ID" msgid "Subscription #%d does not exist." msgstr "" #. translators: 1$: product name, 2$: product id #: includes/core/class-wcs-remove-item.php:114 +#, php-format msgctxt "used in order note" msgid "Customer added \"%1$s\" (Product ID: #%2$d) via the My Account page." msgstr "" @@ -4022,12 +4238,14 @@ msgstr "" #. translators: 1$: product name, 2$: product id #: includes/core/class-wcs-remove-item.php:137 +#, php-format msgctxt "used in order note" msgid "Customer removed \"%1$s\" (Product ID: #%2$d) via the My Account page." msgstr "" #. translators: placeholders are 1$: item name, and, 2$: opening and, 3$: closing link tags #: includes/core/class-wcs-remove-item.php:140 +#, php-format msgid "You have successfully removed \"%1$s\" from your subscription. %2$sUndo?%3$s" msgstr "" @@ -4050,6 +4268,7 @@ msgstr "" #. translators: 1-2: opening/closing tags - linked to staging site, 3: link to live site. #: includes/core/class-wcs-staging.php:41 +#, php-format msgid "Payment processing skipped - renewal order created on %1$sstaging site%2$s under staging site lock. Live site is at %3$s" msgstr "" @@ -4059,11 +4278,13 @@ msgstr "" #. translators: placeholder is a payment method title. #: includes/core/class-wcs-staging.php:98 +#, php-format msgid "Subscription locked to Manual Renewal while the store is in staging mode. Live payment method: %s" msgstr "" #. translators: 1$-2$: opening and closing tags. 3$-4$: opening and closing link tags for learn more. Leads to duplicate site article on docs. 5$-6$: Opening and closing link to production URL. 7$: Production URL . #: includes/core/class-wcs-staging.php:129 +#, php-format msgid "It looks like this site has moved or is a duplicate site. %1$sWooCommerce Subscriptions%2$s has disabled automatic payments and subscription related emails on this site to prevent duplicate payments from a staging or test environment. %1$sWooCommerce Subscriptions%2$s considers %5$s%7$s%6$s to be the site's URL. %3$sLearn more »%4$s." msgstr "" @@ -4124,6 +4345,7 @@ msgstr "" #. translators: placeholder is subscription's new status, translated #: includes/core/class-wcs-user-change-status-handler.php:117 +#, php-format msgid "That subscription can not be changed to %s. Please contact us if you need assistance." msgstr "" @@ -4145,21 +4367,25 @@ msgstr "" #. translators: 1: subscription ID, 2: subscription status #: includes/core/data-stores/class-wcs-orders-table-subscription-data-store.php:352 +#, php-format msgid "Subscription %1$d cannot be restored from the trash: it has already been restored to status \"%2$s\"." msgstr "" #. translators: 1: subscription ID, 2: subscription status #: includes/core/data-stores/class-wcs-orders-table-subscription-data-store.php:370 +#, php-format msgid "The previous status of subscription %1$d (\"%2$s\") is invalid. It has been restored to \"pending\" status instead." msgstr "" #. translators: 1: subscription ID, 2: subscription status #: includes/core/data-stores/class-wcs-orders-table-subscription-data-store.php:382 +#, php-format msgid "The previous status of subscription %1$d (\"%2$s\") is invalid. It could not be restored." msgstr "" #. translators: 1: subscription ID, 2: subscription status #: includes/core/data-stores/class-wcs-orders-table-subscription-data-store.php:433 +#, php-format msgid "Something went wrong when trying to restore subscription %d from the trash. It could not be restored." msgstr "" @@ -4181,24 +4407,27 @@ msgstr "" #. translators: %s: Order date #: includes/core/data-stores/class-wcs-subscription-data-store-cpt.php:275 +#, php-format msgid "Subscription – %s" msgstr "" #. translators: %s: Order date #. translators: placeholders are strftime() strings. #: includes/core/data-stores/class-wcs-subscription-data-store-cpt.php:275 -#: includes/core/wcs-order-functions.php:314 +#: includes/core/wcs-order-functions.php:321 msgctxt "Order date parsed by DateTime::format" msgid "M d, Y @ h:i A" msgstr "" #. translators: placeholder is Subscriptions version number. #: includes/core/deprecated/deprecation-handlers/class-wc-subscriptions-deprecation-handler.php:271 +#, php-format msgid "Warning! You are running version %s of WooCommerce Subscriptions plugin code but your database has been upgraded to Subscriptions version 2.0. This will cause major problems on your store." msgstr "" #. translators: opening/closing tags - linked to ticket form. #: includes/core/deprecated/deprecation-handlers/class-wc-subscriptions-deprecation-handler.php:273 +#, php-format msgid "Please upgrade the WooCommerce Subscriptions plugin to version 2.0 or newer immediately. If you need assistance, after upgrading to Subscriptions v2.0, please %1$sopen a support ticket%2$s." msgstr "" @@ -4216,6 +4445,7 @@ msgstr "" #. translators: placeholder is {site_title}, a variable that will be substituted when email is sent out #: includes/core/emails/class-wcs-email-cancelled-subscription.php:31 +#, php-format msgctxt "default email subject for cancelled emails sent to the admin" msgid "[%s] Subscription Cancelled" msgstr "" @@ -4254,6 +4484,7 @@ msgstr "" #: includes/core/emails/class-wcs-email-cancelled-subscription.php:177 #: includes/core/emails/class-wcs-email-expired-subscription.php:150 #: includes/core/emails/class-wcs-email-on-hold-subscription.php:149 +#, php-format msgid "Enter recipients (comma separated) for this email. Defaults to %s." msgstr "" @@ -4268,6 +4499,7 @@ msgstr "" #: includes/core/emails/class-wcs-email-cancelled-subscription.php:185 #: includes/core/emails/class-wcs-email-expired-subscription.php:158 #: includes/core/emails/class-wcs-email-on-hold-subscription.php:157 +#, php-format msgid "This controls the email subject line. Leave blank to use the default subject: %s." msgstr "" @@ -4280,6 +4512,7 @@ msgstr "" #. translators: %s: default e-mail heading. #: includes/core/emails/class-wcs-email-cancelled-subscription.php:193 +#, php-format msgid "This controls the main heading contained within the email notification. Leave blank to use the default heading: %s." msgstr "" @@ -4333,6 +4566,7 @@ msgstr "" #. translators: $1: {site_title}, $2: {order_date}, variables that will be substituted when email is sent out #: includes/core/emails/class-wcs-email-completed-renewal-order.php:31 +#, php-format msgctxt "Default email subject for email to customer on completed renewal order" msgid "Your %1$s renewal order from %2$s is complete" msgstr "" @@ -4367,6 +4601,7 @@ msgstr "" #. translators: $1: {site_title}, $2: {customers_first_name}, $3: {time_until_renewal}, variables that will be substituted when email is sent out #: includes/core/emails/class-wcs-email-customer-notification-auto-renewal.php:32 +#, php-format msgctxt "default email subject for subscription's automatic renewal notice" msgid "[%1$s] %2$s, your subscription automatically renews in %3$s!" msgstr "" @@ -4389,6 +4624,7 @@ msgstr "" #. translators: $1: {site_title}, $2: {customers_first_name}, variables that will be substituted when email is sent out #: includes/core/emails/class-wcs-email-customer-notification-auto-trial-expiration.php:30 +#, php-format msgctxt "default email subject for free trial expiry notification emails sent to the customer" msgid "[%1$s] %2$s, your paid subscription starts soon!" msgstr "" @@ -4407,6 +4643,7 @@ msgstr "" #. translators: $1: {site_title}, $2: {customers_first_name}, variables that will be substituted when email is sent out #: includes/core/emails/class-wcs-email-customer-notification-manual-renewal.php:30 +#, php-format msgctxt "default email subject for notification for a manually renewed subscription sent to the customer" msgid "[%1$s] %2$s, your subscription is ready to be renewed!" msgstr "" @@ -4429,6 +4666,7 @@ msgstr "" #. translators: $1: {site_title}, $2: {customers_first_name}, variables that will be substituted when email is sent out. #: includes/core/emails/class-wcs-email-customer-notification-manual-trial-expiration.php:31 +#, php-format msgctxt "default email subject for an email notification for a manually renewed subscription with free trial expiry emails sent to the customer" msgid "[%1$s] %2$s, your free trial is almost up!" msgstr "" @@ -4447,6 +4685,7 @@ msgstr "" #. translators: $1: {site_title}, $2: {customers_first_name}, variables that will be substituted when email is sent out #: includes/core/emails/class-wcs-email-customer-notification-subscription-expiration.php:30 +#, php-format msgctxt "default email subject for subscription expiry notification email sent to the customer" msgid "[%1$s] %2$s, your subscription is about to expire!" msgstr "" @@ -4457,6 +4696,7 @@ msgstr "" #. translators: %s: list of placeholders #: includes/core/emails/class-wcs-email-customer-notification.php:32 +#, php-format msgid "Available placeholders: %s" msgstr "" @@ -4490,11 +4730,13 @@ msgstr "" #. translators: 1: Notification type, 2: customer's email. #: includes/core/emails/class-wcs-email-customer-notification.php:101 +#, php-format msgid "%1$s was successfully sent to %2$s." msgstr "" #. translators: 1: Notification type, 2: customer's email. #: includes/core/emails/class-wcs-email-customer-notification.php:104 +#, php-format msgid "Attempt to send %1$s to %2$s failed." msgstr "" @@ -4520,6 +4762,7 @@ msgstr "" #. translators: %1$s: email title, %2$s: list of reasons why email was skipped. #: includes/core/emails/class-wcs-email-customer-notification.php:304 +#, php-format msgid "Skipped sending \"%1$s\": %2$s" msgstr "" @@ -4569,6 +4812,7 @@ msgstr "" #. translators: placeholder is {site_title}, a variable that will be substituted when email is sent out #: includes/core/emails/class-wcs-email-expired-subscription.php:31 +#, php-format msgctxt "default email subject for expired emails sent to the admin" msgid "[%s] Subscription Expired" msgstr "" @@ -4581,6 +4825,7 @@ msgstr "" #. translators: %s: default e-mail heading. #: includes/core/emails/class-wcs-email-expired-subscription.php:166 #: includes/core/emails/class-wcs-email-on-hold-subscription.php:165 +#, php-format msgid "This controls the main heading contained within the email notification. Leave blank to use the default heading: %s." msgstr "" @@ -4649,6 +4894,7 @@ msgstr "" #. translators: 1-2: opening/closing tags - link to documentation. #: includes/core/gateways/class-wc-subscriptions-core-payment-gateways.php:176 +#, php-format msgid "Sorry, it seems there are no available payment methods which support subscriptions. Please see %1$sEnabling Payment Gateways for Subscriptions%2$s if you require assistance." msgstr "" @@ -4670,11 +4916,13 @@ msgstr "" #. Translators: placeholder is a 0 price formatted with the the store's currency and decimal settings. #: includes/core/gateways/class-wc-subscriptions-gateway-restrictions-manager.php:44 +#, php-format msgid "Please enter a price greater than %s." msgstr "" #. Translators: Placeholder is a localized price string (eg. $1.00). #: includes/core/gateways/class-wc-subscriptions-gateway-restrictions-manager.php:64 +#, php-format msgid "Warning! Your store cannot create subscriptions less than %s" msgstr "" @@ -4700,21 +4948,25 @@ msgstr "" #. translators: placeholders are PayPal API error code and PayPal API error message #: includes/core/gateways/paypal/class-wcs-paypal.php:389 +#, php-format msgid "PayPal API error: (%1$d) %2$s" msgstr "" #. translators: placeholder is PayPal transaction status message #: includes/core/gateways/paypal/class-wcs-paypal.php:394 +#, php-format msgid "PayPal Transaction Held: %s" msgstr "" #. translators: placeholder is PayPal transaction status message #: includes/core/gateways/paypal/class-wcs-paypal.php:406 +#, php-format msgid "PayPal payment declined: %s" msgstr "" #. translators: placeholder is a transaction ID. #: includes/core/gateways/paypal/class-wcs-paypal.php:410 +#, php-format msgid "PayPal payment approved (ID: %s)" msgstr "" @@ -4732,36 +4984,43 @@ msgstr "" #. translators: $1 and $2 are opening and closing strong tags, respectively. #: includes/core/gateways/paypal/includes/admin/class-wcs-paypal-admin.php:63 +#, php-format msgid "It is %1$sstrongly recommended you do not change the Receiver Email address%2$s if you have active subscriptions with PayPal. Doing so can break existing subscriptions." msgstr "" #. translators: placeholders are opening and closing link tags. 1$-2$: to docs on woocommerce, 3$-4$ to gateway settings on the site #: includes/core/gateways/paypal/includes/admin/class-wcs-paypal-admin.php:114 +#, php-format msgid "PayPal is inactive for subscription transactions. Please %1$sset up the PayPal IPN%2$s and %3$senter your API credentials%4$s to enable PayPal for Subscriptions." msgstr "" #. translators: opening/closing tags - links to documentation. #: includes/core/gateways/paypal/includes/admin/class-wcs-paypal-admin.php:126 +#, php-format msgid "%1$sPayPal Reference Transactions are not enabled on your account%2$s, some subscription management features are not enabled. Please contact PayPal and request they %3$senable PayPal Reference Transactions%4$s on your account. %5$sCheck PayPal Account%6$s %3$sLearn more %7$s" msgstr "" #. translators: opening/closing tags - links to documentation. #: includes/core/gateways/paypal/includes/admin/class-wcs-paypal-admin.php:130 +#, php-format msgid "%1$sPayPal Reference Transactions are not enabled on your account%2$s. If you wish to use PayPal Reference Transactions with Subscriptions, please contact PayPal and request they %3$senable PayPal Reference Transactions%4$s on your account. %5$sCheck PayPal Account%6$s %3$sLearn more %7$s" msgstr "" #. translators: placeholders are opening and closing strong tags. #: includes/core/gateways/paypal/includes/admin/class-wcs-paypal-admin.php:152 +#, php-format msgid "%1$sPayPal Reference Transactions are enabled on your account%2$s. All subscription management features are now enabled. Happy selling!" msgstr "" #. translators: placeholders are link opening and closing tags. 1$-2$: to gateway settings, 3$-4$: support docs on woocommerce.com #: includes/core/gateways/paypal/includes/admin/class-wcs-paypal-admin.php:163 +#, php-format msgid "There is a problem with PayPal. Your API credentials may be incorrect. Please update your %1$sAPI credentials%2$s. %3$sLearn more%4$s." msgstr "" #. translators: placeholders are opening and closing link tags. 1$-2$: docs on woocommerce, 3$-4$: dismiss link #: includes/core/gateways/paypal/includes/admin/class-wcs-paypal-admin.php:176 +#, php-format msgid "There is a problem with PayPal. Your PayPal account is issuing out-of-date subscription IDs. %1$sLearn more%2$s. %3$sDismiss%4$s." msgstr "" @@ -4783,11 +5042,13 @@ msgstr "" #. translators: Placeholders are the opening and closing link tags. #: includes/core/gateways/paypal/includes/admin/class-wcs-paypal-admin.php:324 +#, php-format msgid "Before enabling PayPal Standard for Subscriptions, please note, when using PayPal Standard, customers are locked into using PayPal Standard for the life of their subscription, and PayPal Standard has a number of limitations. Please read the guide on %1$swhy we don't recommend PayPal Standard%2$s for Subscriptions before choosing to enable this option." msgstr "" #. translators: placeholder is blogname #: includes/core/gateways/paypal/includes/class-wcs-paypal-reference-transaction-api-request.php:71 +#, php-format msgctxt "data sent to paypal" msgid "Orders with %s" msgstr "" @@ -4798,22 +5059,26 @@ msgstr "" #. translators: placeholder is blogname #: includes/core/gateways/paypal/includes/class-wcs-paypal-reference-transaction-api-request.php:306 +#, php-format msgid "%s - Order" msgstr "" #. translators: 1$: new status (e.g. "Cancel"), 2$: blog name #: includes/core/gateways/paypal/includes/class-wcs-paypal-reference-transaction-api-request.php:416 +#, php-format msgctxt "data sent to paypal" msgid "%1$s subscription event triggered at %2$s" msgstr "" #. translators: %s: product SKU. #: includes/core/gateways/paypal/includes/class-wcs-paypal-reference-transaction-api-request.php:536 +#, php-format msgid "SKU: %s" msgstr "" #. translators: placeholder is localised datetime #: includes/core/gateways/paypal/includes/class-wcs-paypal-reference-transaction-api-response-payment.php:119 +#, php-format msgid "expected clearing date %s" msgstr "" @@ -4859,12 +5124,14 @@ msgstr "" #. translators: placeholder is payment status (e.g. "completed") #: includes/core/gateways/paypal/includes/class-wcs-paypal-standard-ipn-handler.php:426 #: includes/core/gateways/paypal/includes/class-wcs-paypal-standard-ipn-handler.php:435 +#, php-format msgctxt "used in order note" msgid "IPN subscription payment %s." msgstr "" #. translators: 1: payment status (e.g. "completed"), 2: pending reason. #: includes/core/gateways/paypal/includes/class-wcs-paypal-standard-ipn-handler.php:439 +#, php-format msgctxt "used in order note" msgid "IPN subscription payment %1$s for reason: %2$s." msgstr "" @@ -4887,12 +5154,14 @@ msgstr "" #. translators: 1$: subscription ID, 2$: names of items, comma separated #: includes/core/gateways/paypal/includes/class-wcs-paypal-standard-request.php:75 +#, php-format msgctxt "item name sent to paypal" msgid "Subscription %1$s - %2$s" msgstr "" #. translators: 1$: subscription ID, 2$: order ID, 3$: names of items, comma separated #: includes/core/gateways/paypal/includes/class-wcs-paypal-standard-request.php:78 +#, php-format msgctxt "item name sent to paypal" msgid "Subscription %1$s (Order %2$s) - %3$s" msgstr "" @@ -4918,6 +5187,7 @@ msgid "PayPal API error - credentials are incorrect." msgstr "" #: includes/core/gateways/paypal/includes/templates/html-ipn-failure-notice.php:18 +#, php-format msgid "A fatal error has occurred while processing a recent subscription payment with PayPal. Please %1$sopen a new ticket at WooCommerce Support%3$s immediately to get this resolved. See our documentation on %2$sdebugging IPN issues in PayPal Standard to Learn more »%3$s" msgstr "" @@ -4926,16 +5196,19 @@ msgid "Last recorded error:" msgstr "" #: includes/core/gateways/paypal/includes/templates/html-ipn-failure-notice.php:36 +#, php-format msgid "To see the full error, view the %1$s log file from the %2$sWooCommerce logs screen.%3$s." msgstr "" #. Translators: %s subscription number. #: includes/core/privacy/class-wcs-privacy-erasers.php:71 +#, php-format msgid "Removed personal data from subscription %s." msgstr "" #. Translators: %s subscription number. #: includes/core/privacy/class-wcs-privacy-erasers.php:75 +#, php-format msgid "Personal data within subscription %s has been retained." msgstr "" @@ -4968,12 +5241,12 @@ msgid "Browser User Agent" msgstr "" #: includes/core/privacy/class-wcs-privacy-exporters.php:83 -#: includes/core/wcs-functions.php:271 +#: includes/core/wcs-functions.php:275 msgid "Billing Address" msgstr "" #: includes/core/privacy/class-wcs-privacy-exporters.php:84 -#: includes/core/wcs-functions.php:270 +#: includes/core/wcs-functions.php:274 #: includes/gifting/privacy/class-wcsg-privacy-exporters.php:191 #: templates/gifting/new-recipient-account.php:39 msgid "Shipping Address" @@ -5015,6 +5288,7 @@ msgstr "" #. translators: placeholders are opening and closing link tags, linking to additional privacy policy documentation. #: includes/core/privacy/class-wcs-privacy.php:110 +#, php-format msgid "If you are using PayPal Standard or PayPal Reference transactions please see the %1$sPayPal Privacy Policy%2$s for more details." msgstr "" @@ -5025,6 +5299,7 @@ msgstr "" #. translators: %d: number of subscriptions affected. #: includes/core/privacy/class-wcs-privacy.php:221 +#, php-format msgid "Removed personal data from %d subscription." msgid_plural "Removed personal data from %d subscriptions." msgstr[0] "" @@ -5032,6 +5307,7 @@ msgstr[1] "" #. translators: placeholders are opening and closing tags. #: includes/core/privacy/class-wcs-privacy.php:240 +#, php-format msgid "%1$sNote:%2$s Orders which are related to subscriptions will not be included in the orders affected by these settings." msgstr "" @@ -5045,6 +5321,7 @@ msgstr "" #. Translators: %s URL to erasure request screen. #: includes/core/privacy/class-wcs-privacy.php:268 +#, php-format msgid "When handling an %s, should personal data within subscriptions be retained or removed?" msgstr "" @@ -5066,50 +5343,59 @@ msgstr "" #. translators: 1-2: opening/closing tags, 3: active version of Subscriptions, 4: current version of Subscriptions, 5-6: opening/closing tags linked to ticket form, 7-8: opening/closing tags linked to documentation. #: includes/core/upgrades/class-wc-subscriptions-upgrader.php:364 +#, php-format msgid "%1$sWarning!%2$s It appears that you have downgraded %1$sWooCommerce Subscriptions%2$s from %3$s to %4$s. Downgrading the plugin in this way may cause issues. Please update to %3$s or higher, or %5$sopen a new support ticket%6$s for further assistance. %7$sLearn more »%8$s" msgstr "" #. translators: placeholder is a list of version numbers (e.g. "1.3 & 1.4 & 1.5") #: includes/core/upgrades/class-wc-subscriptions-upgrader.php:503 +#, php-format msgid "Database updated to version %s" msgstr "" #. translators: placeholder is number of upgraded subscriptions #: includes/core/upgrades/class-wc-subscriptions-upgrader.php:511 +#, php-format msgctxt "used in the subscriptions upgrader" msgid "Marked %s subscription products as \"sold individually\"." msgstr "" #. translators: 1$: number of action scheduler hooks upgraded, 2$: "{execution_time}", will be replaced on front end with actual time #: includes/core/upgrades/class-wc-subscriptions-upgrader.php:520 +#, php-format msgid "Migrated %1$s subscription related hooks to the new scheduler (in %2$s seconds)." msgstr "" #. translators: 1$: number of subscriptions upgraded, 2$: "{execution_time}", will be replaced on front end with actual time it took #: includes/core/upgrades/class-wc-subscriptions-upgrader.php:532 +#, php-format msgid "Migrated %1$s subscriptions to the new structure (in %2$s seconds)." msgstr "" #. translators: placeholder is "{time_left}", will be replaced on front end with actual time #: includes/core/upgrades/class-wc-subscriptions-upgrader.php:535 #: includes/core/upgrades/class-wc-subscriptions-upgrader.php:581 +#, php-format msgctxt "Message that gets sent to front end." msgid "Estimated time left (minutes:seconds): %s" msgstr "" #. translators: 1$: error message, 2$: opening link tag, 3$: closing link tag, 4$: break tag #: includes/core/upgrades/class-wc-subscriptions-upgrader.php:545 +#, php-format msgid "Unable to upgrade subscriptions.%4$sError: %1$s%4$sPlease refresh the page and try again. If problem persists, %2$scontact support%3$s." msgstr "" #. translators: placeholder is the number of subscriptions repaired #: includes/core/upgrades/class-wc-subscriptions-upgrader.php:560 +#, php-format msgctxt "Repair message that gets sent to front end." msgid "Repaired %d subscriptions with incorrect dates, line tax data or missing customer notes." msgstr "" #. translators: placeholder is number of subscriptions that were checked and did not need repairs. There's a space at the beginning! #: includes/core/upgrades/class-wc-subscriptions-upgrader.php:566 +#, php-format msgctxt "Repair message that gets sent to front end." msgid " %d other subscription was checked and did not need any repairs." msgid_plural "%d other subscriptions were checked and did not need any repairs." @@ -5118,18 +5404,21 @@ msgstr[1] "" #. translators: placeholder is "{execution_time}", which will be replaced on front end with actual time #: includes/core/upgrades/class-wc-subscriptions-upgrader.php:570 +#, php-format msgctxt "Repair message that gets sent to front end." msgid "(in %s seconds)" msgstr "" #. translators: $1: "Repaired x subs with incorrect dates...", $2: "X others were checked and no repair needed", $3: "(in X seconds)". Ordering for RTL languages. #: includes/core/upgrades/class-wc-subscriptions-upgrader.php:573 +#, php-format msgctxt "The assembled repair message that gets sent to front end." msgid "%1$s%2$s %3$s" msgstr "" #. translators: 1$: error message, 2$: opening link tag, 3$: closing link tag, 4$: break tag #: includes/core/upgrades/class-wc-subscriptions-upgrader.php:592 +#, php-format msgctxt "Error message that gets sent to front end when upgrading Subscriptions" msgid "Unable to repair subscriptions.%4$sError: %1$s%4$sPlease refresh the page and try again. If problem persists, %2$scontact support%3$s." msgstr "" @@ -5144,6 +5433,7 @@ msgstr "" #. translators: 1-2: opening/closing tags, 3-4: opening/closing tags linked to ticket form. #: includes/core/upgrades/class-wc-subscriptions-upgrader.php:1038 +#, php-format msgid "%1$sWarning!%2$s We discovered an issue in %1$sWooCommerce Subscriptions 2.3.0 - 2.3.2%2$s that may cause your subscription renewal order and customer subscription caches to contain invalid data. For information about how to update the cached data, please %3$sopen a new support ticket%4$s." msgstr "" @@ -5164,6 +5454,7 @@ msgstr "" #. translators: placeholder $1 is the Subscription version string ('2.3'), $2-3 are opening and closing tags #: includes/core/upgrades/templates/update-welcome-notice.php:5 +#, php-format msgid "Version %1$s brings some new improvements requested by store managers just like you (and possibly even by %2$syou%3$s)." msgstr "" @@ -5179,6 +5470,7 @@ msgstr "" #. translators: placeholder is Subscription version string ('2.3') #: includes/core/upgrades/templates/update-welcome-notice.php:16 +#, php-format msgid "Want to know more about Subscriptions %s?" msgstr "" @@ -5193,6 +5485,7 @@ msgstr "" #. translators: placeholder is version number #: includes/core/upgrades/templates/wcs-about-2-0.php:31 #: includes/core/upgrades/templates/wcs-about.php:30 +#, php-format msgid "Version %s" msgstr "" @@ -5215,6 +5508,7 @@ msgstr "" #. translators: placeholders are opening and closing link tags #: includes/core/upgrades/templates/wcs-about-2-0.php:56 +#, php-format msgid "Learn more about the new %smultiple subscriptions%s feature." msgstr "" @@ -5228,11 +5522,13 @@ msgstr "" #. translators: placeholders are opening and closing tags #: includes/core/upgrades/templates/wcs-about-2-0.php:72 +#, php-format msgid "The new interface is also built on the existing %sEdit Order%s screen. If you've ever modified an order, you already know how to modify a subscription." msgstr "" #. translators: placeholders are link tags: 1$-2$ new subscription page, 3$-4$: docs on woocommerce.com #: includes/core/upgrades/templates/wcs-about-2-0.php:76 +#, php-format msgid "%1$sAdd a subscription%2$s now or %3$slearn more%4$s about the new interface." msgstr "" @@ -5242,6 +5538,7 @@ msgstr "" #. translators: placeholders are opening and closing tags #: includes/core/upgrades/templates/wcs-about-2-0.php:91 +#, php-format msgid "Your customers can now view the full details of a subscription, including line items, billing and shipping address, billing schedule and renewal orders, from a special %sMy Account > View Subscription%s page." msgstr "" @@ -5251,11 +5548,13 @@ msgstr "" #. translators: placeholders are opening and closing link tags #: includes/core/upgrades/templates/wcs-about-2-0.php:97 +#, php-format msgid "Learn more about the new %sView Subscription page%s." msgstr "" #. translators: placeholders are for opening and closing link () tags #: includes/core/upgrades/templates/wcs-about-2-0.php:111 +#, php-format msgid "By default, adding new files to an existing subscription product will automatically provide active subscribers with access to the new files. However, now you can enable a %snew content dripping setting%s to provide subscribers with access to new files only after the next renewal payment." msgstr "" @@ -5269,6 +5568,7 @@ msgstr "" #: includes/core/upgrades/templates/wcs-about.php:142 #: includes/core/upgrades/templates/wcs-about.php:170 #: includes/core/upgrades/templates/wcs-about.php:191 +#, php-format msgid "%sLearn more »%s" msgstr "" @@ -5279,6 +5579,7 @@ msgstr "" #. translators: placeholders are opening and closing tags #: includes/core/upgrades/templates/wcs-about-2-0.php:124 +#, php-format msgid "For a store manager to change a subscription from automatic to manual renewal payments (or manual to automatic) with Subscriptions v1.5, the database needed to be modified directly. Subscriptions now provides a way for payment gateways to allow you to change that from the new %sEdit Subscription%s interface." msgstr "" @@ -5288,6 +5589,7 @@ msgstr "" #. translators: placeholders are opening and closing tags #: includes/core/upgrades/templates/wcs-about-2-0.php:137 +#, php-format msgid "It was already possible to change a subscription's next payment date, but some store managers wanted to provide a customer with an extended free trial or add an extra month to the expiration date. Now you can change all of these dates from the %sEdit Subscription%s screen." msgstr "" @@ -5306,6 +5608,7 @@ msgstr "" #. translators: placeholders are opening and closing code tags #: includes/core/upgrades/templates/wcs-about-2-0.php:164 +#, php-format msgid "New %sshop_subscription%s Post Type" msgstr "" @@ -5315,11 +5618,13 @@ msgstr "" #. translators: placeholders are opening and closing tags #: includes/core/upgrades/templates/wcs-about-2-0.php:169 +#, php-format msgid "Developers can also now use all the familiar WordPress functions, like %sget_posts()%s, to query or modify subscription data." msgstr "" #. translators: placeholders are opening and closing tags #: includes/core/upgrades/templates/wcs-about-2-0.php:175 +#, php-format msgid "New %sWC_Subscription%s Object" msgstr "" @@ -5329,6 +5634,7 @@ msgstr "" #. translators: all placeholders are opening and closing tags, no need to order them #: includes/core/upgrades/templates/wcs-about-2-0.php:180 +#, php-format msgid "Because the %sWC_Subscription%s class extends %sWC_Order%s, you can use its familiar methods, like %s$subscription->update_status()%s or %s$subscription->get_total()%s." msgstr "" @@ -5342,6 +5648,7 @@ msgstr "" #. translators: all placeholders are opening and closing tags, no need to order them #: includes/core/upgrades/templates/wcs-about-2-0.php:188 +#, php-format msgid "Want to list all the subscriptions on a site? Get %sexample.com/wc-api/v2/subscriptions/%s. Want the details of a specific subscription? Get %s/wc-api/v2/subscriptions//%s." msgstr "" @@ -5354,6 +5661,7 @@ msgid "Welcome to Subscriptions 2.1!" msgstr "" #: includes/core/upgrades/templates/wcs-about.php:23 +#, php-format msgid "Version 2.1 introduces some great new features requested by store managers just like you (and possibly even by %syou%s)." msgstr "" @@ -5449,6 +5757,7 @@ msgid "a subscription expires" msgstr "" #: includes/core/upgrades/templates/wcs-about.php:97 +#, php-format msgid "These emails can be enabled, disabled and customised under the %sWooCommerce > Settings > Emails%s administration screen." msgstr "" @@ -5517,11 +5826,13 @@ msgstr "" #. translators: all placeholders are opening and closing tags, no need to order them #: includes/core/upgrades/templates/wcs-about.php:162 +#, php-format msgid "With the %s'wcs_default_retry_rules'%s filter, you can define a set of default rules to apply to all failed payments in your store." msgstr "" #. translators: all placeholders are opening and closing tags, no need to order them #: includes/core/upgrades/templates/wcs-about.php:166 +#, php-format msgid "To apply a specific rule based on certain conditions, like high value orders or an infrequent renewal schedule, you can use the retry specific %s'wcs_get_retry_rule'%s filter. This provides the ID of the renewal order for the failed payment, which can be used to find information about the products, subscription and totals to which the failed payment relates." msgstr "" @@ -5531,6 +5842,7 @@ msgstr "" #. translators: $1: opening tag linking to WC API docs, $2: closing tag, $3: opening tag linking to WP API docs, $4: closing tag #: includes/core/upgrades/templates/wcs-about.php:177 +#, php-format msgid "WooCommerce 2.6 added support for %1$sREST API%2$s endpoints built on WordPress core's %3$sREST API%4$s infrastructure." msgstr "" @@ -5544,11 +5856,13 @@ msgstr "" #. translators: all placeholders are opening and closing tags, no need to order them #: includes/core/upgrades/templates/wcs-about.php:183 +#, php-format msgid "Want to list all the subscriptions on a site? Get %s/wp-json/wc/v1/subscriptions%s." msgstr "" #. translators: all placeholders are opening and closing tags, no need to order them #: includes/core/upgrades/templates/wcs-about.php:187 +#, php-format msgid "Want the details of a specific subscription? Get %s/wp-json/wc/v1/subscriptions//%s." msgstr "" @@ -5563,11 +5877,13 @@ msgstr "" #. translators: placeholders are opening and closing tags #: includes/core/upgrades/templates/wcs-about.php:202 +#, php-format msgid "Subscriptions 2.1 now passes the renewal order's total, making it possible to add a fee or discount to the renewal order with simple one-liners like %s$order->add_fee()%s or %s$order->add_coupon()%s." msgstr "" #. translators: placeholders are opening and closing tags #: includes/core/upgrades/templates/wcs-about.php:206 +#, php-format msgid "Subscriptions also now uses the renewal order to setup the cart for %smanual renewals%s, making it easier to add products or discounts to a single renewal paid manually." msgstr "" @@ -5593,6 +5909,7 @@ msgstr "" #. translators: placeholder is number of seconds #: includes/core/upgrades/templates/wcs-upgrade-in-progress.php:34 +#, php-format msgid "If you received a server error and reloaded the page to find this notice, please refresh the page in %s seconds and the upgrade routine will recommence without issues." msgstr "" @@ -5614,11 +5931,13 @@ msgstr "" #. translators: placeholders are opening and closing tags #: includes/core/upgrades/templates/wcs-upgrade.php:33 +#, php-format msgid "Before we send you on your way, we need to update your database to the newest version. If you do not have a recent backup of your site, %snow is the time to create one%s." msgstr "" #. translators: 1$: number of subscriptions on site, 2$, lower estimate (minutes), 3$: upper estimate #: includes/core/upgrades/templates/wcs-upgrade.php:38 +#, php-format msgid "The full update process for the %1$d subscriptions on your site will take between %2$d and %3$d minutes." msgstr "" @@ -5665,6 +5984,7 @@ msgstr "" #. translators: $1: placeholder is number of weeks, 2$: path to the file #: includes/core/upgrades/templates/wcs-upgrade.php:74 +#, php-format msgid "To record the progress of the update a new log file was created. This file will be automatically deleted in %1$d weeks. If you would like to delete it sooner, you can find it in the %2$sWooCommerce logs screen%3$s." msgstr "" @@ -5679,6 +5999,7 @@ msgstr "" #. translators: %s: shipping method label. #: includes/core/wcs-cart-functions.php:94 #: includes/core/wcs-cart-functions.php:100 +#, php-format msgid "Shipping via %s" msgstr "" @@ -5697,17 +6018,20 @@ msgstr "" #. translators: placeholder is price string, denotes tax included in cart/order total #: includes/core/wcs-cart-functions.php:352 +#, php-format msgctxt "includes tax" msgid "(includes %s)" msgstr "" #. translators: placeholder is a date #: includes/core/wcs-cart-functions.php:427 +#, php-format msgid "First renewal: %s" msgstr "" #. translators: placeholder is either subscription key or a subscription id, or, failing that, empty (e.g. "145_21" or "145") #: includes/core/wcs-deprecated-functions.php:180 +#, php-format msgid "Could not get subscription. Most likely the subscription key does not refer to a subscription. The key was: \"%s\"." msgstr "" @@ -5718,51 +6042,61 @@ msgstr "" #. translators: 1$: initial amount, 2$: initial description (e.g. "up front"), 3$: recurring amount string (e.g. "£10 / month" ) #: includes/core/wcs-formatting-functions.php:99 +#, php-format msgid "%1$s %2$s then %3$s" msgstr "" #. translators: 1$: initial amount, 2$: initial description (e.g. "up front"), 3$: recurring amount string, 4$: payment day of the week (e.g. "$15 up front, then $10 every Wednesday") #: includes/core/wcs-formatting-functions.php:113 +#, php-format msgid "%1$s %2$s then %3$s every %4$s" msgstr "" #. translators: 1$: initial amount, 2$: initial description (e.g. "up front" ), 3$: recurring amount, 4$: interval (e.g. "2nd week"), 5$: day of the week (e.g. "Thursday"); (e.g. "$10 up front, then $20 every 2nd week on Wednesday") #: includes/core/wcs-formatting-functions.php:122 +#, php-format msgid "%1$s %2$s then %3$s every %4$s on %5$s" msgstr "" #. translators: 1$: initial amount, 2$: initial description (e.g. "up front"), 3$: recurring amount; (e.g. "$10 up front then $30 on the last day of each month") #: includes/core/wcs-formatting-functions.php:135 +#, php-format msgid "%1$s %2$s then %3$s on the last day of each month" msgstr "" #. translators: 1$: initial amount, 2$: initial description (e.g. "up front"), 3$: recurring amount, 4$: day of the month (e.g. "23rd"); (e.g. "$10 up front then $40 on the 23rd of each month") #: includes/core/wcs-formatting-functions.php:138 +#, php-format msgid "%1$s %2$s then %3$s on the %4$s of each month" msgstr "" #. translators: 1$: initial amount, 2$: initial description (e.g. "up front"), 3$: recurring amount, 4$: interval (e.g. "3rd") #: includes/core/wcs-formatting-functions.php:154 +#, php-format msgid "%1$s %2$s then %3$s on the last day of every %4$s month" msgstr "" #. translators: 1$: initial amount, 2$: initial description (e.g. "up front"), 3$: recurring amount, 4$: day of the month (e.g. "23rd"), 5$: interval (e.g. "3rd") #: includes/core/wcs-formatting-functions.php:157 +#, php-format msgid "%1$s %2$s then %3$s on the %4$s day of every %5$s month" msgstr "" #. translators: 1$: initial amount, 2$: initial description (e.g. "up front"), 3$: recurring amount, 4$: month of year (e.g. "March"), 5$: day of the month (e.g. "23rd") #: includes/core/wcs-formatting-functions.php:175 +#, php-format msgid "%1$s %2$s then %3$s on %4$s %5$s each year" msgstr "" #. translators: 1$: initial amount, 2$: initial description (e.g. "up front"), 3$: recurring amount, 4$: month (e.g. "March"), 5$: day of the month (e.g. "23rd"), 6$: interval (e.g. "3rd") #: includes/core/wcs-formatting-functions.php:184 +#, php-format msgid "%1$s %2$s then %3$s on %4$s %5$s every %6$s year" msgstr "" #. translators: 1$: initial amount, 2$: initial description (e.g. "up front"), 3$: recurring amount, 4$: subscription period (e.g. "month" or "3 months") #: includes/core/wcs-formatting-functions.php:194 +#, php-format msgid "%1$s %2$s then %3$s / %4$s" msgid_plural "%1$s %2$s then %3$s every %4$s" msgstr[0] "" @@ -5770,21 +6104,25 @@ msgstr[1] "" #. translators: 1$: subscription string (e.g. "$10 up front then $5 on March 23rd every 3rd year"), 2$: trial length (e.g. "3 weeks") #: includes/core/wcs-formatting-functions.php:216 +#, php-format msgid "%1$s after %2$s free trial" msgstr "" #. translators: 1$: trial length (e.g. "3 weeks"), 2$: subscription string (e.g. "$10 up front then $5 on March 23rd every 3rd year") #: includes/core/wcs-formatting-functions.php:219 +#, php-format msgid "%1$s free trial then %2$s" msgstr "" #. translators: placeholder is human time diff (e.g. "3 weeks") #: includes/core/wcs-formatting-functions.php:243 +#, php-format msgid "in %s" msgstr "" #. translators: placeholder is a localized date and time (e.g. "February 1, 2018 10:20 PM") #: includes/core/wcs-formatting-functions.php:251 +#, php-format msgctxt "wcs_get_human_time_diff" msgid "%s" msgstr "" @@ -5793,85 +6131,89 @@ msgstr "" #. translators: placeholder is a number, numbers ending in 4-9, 0 #: includes/core/wcs-formatting-functions.php:296 #: includes/core/wcs-formatting-functions.php:313 +#, php-format msgid "%sth" msgstr "" #. translators: placeholder is a number, numbers ending in 1 #: includes/core/wcs-formatting-functions.php:301 +#, php-format msgid "%sst" msgstr "" #. translators: placeholder is a number, numbers ending in 2 #: includes/core/wcs-formatting-functions.php:305 +#, php-format msgid "%snd" msgstr "" #. translators: placeholder is a number, numbers ending in 3 #: includes/core/wcs-formatting-functions.php:309 +#, php-format msgid "%srd" msgstr "" -#: includes/core/wcs-functions.php:141 -msgctxt "Error message while creating a subscription" -msgid "Invalid created date. The date must be a string and of the format: \"Y-m-d H:i:s\"." -msgstr "" - #: includes/core/wcs-functions.php:145 msgctxt "Error message while creating a subscription" +msgid "Invalid created date. The date must be a string and of the format: \"Y-m-d H:i:s\"." +msgstr "" + +#: includes/core/wcs-functions.php:149 +msgctxt "Error message while creating a subscription" msgid "Subscription created date must be before current day." msgstr "" -#: includes/core/wcs-functions.php:150 +#: includes/core/wcs-functions.php:154 msgctxt "Error message while creating a subscription" msgid "Invalid date. The date must be a string and of the format: \"Y-m-d H:i:s\"." msgstr "" -#: includes/core/wcs-functions.php:155 +#: includes/core/wcs-functions.php:159 msgctxt "Error message while creating a subscription" msgid "Invalid subscription customer_id." msgstr "" -#: includes/core/wcs-functions.php:221 +#: includes/core/wcs-functions.php:225 msgctxt "Subscription status" msgid "On hold" msgstr "" -#: includes/core/wcs-functions.php:223 +#: includes/core/wcs-functions.php:227 msgctxt "Subscription status" msgid "Switched" msgstr "" -#: includes/core/wcs-functions.php:225 +#: includes/core/wcs-functions.php:229 msgctxt "Subscription status" msgid "Pending Cancellation" msgstr "" -#: includes/core/wcs-functions.php:241 +#: includes/core/wcs-functions.php:245 msgid "Can not get status name. Status is not a string." msgstr "" -#: includes/core/wcs-functions.php:264 +#: includes/core/wcs-functions.php:268 msgid "Can not get address type display name. Address type is not a string." msgstr "" -#: includes/core/wcs-functions.php:290 +#: includes/core/wcs-functions.php:294 #: templates/gifting/emails/recipient-email-subscriptions-table.php:17 msgctxt "table heading" msgid "Start Date" msgstr "" -#: includes/core/wcs-functions.php:291 +#: includes/core/wcs-functions.php:295 msgctxt "table heading" msgid "Trial End" msgstr "" -#: includes/core/wcs-functions.php:292 +#: includes/core/wcs-functions.php:296 #: templates/myaccount/my-subscriptions.php:43 msgctxt "table heading" msgid "Next Payment" msgstr "" -#: includes/core/wcs-functions.php:293 +#: includes/core/wcs-functions.php:297 #: templates/emails/cancelled-subscription.php:41 #: templates/emails/expired-subscription.php:26 #: templates/emails/on-hold-subscription.php:26 @@ -5879,22 +6221,22 @@ msgctxt "table heading" msgid "Last Order Date" msgstr "" -#: includes/core/wcs-functions.php:294 +#: includes/core/wcs-functions.php:298 msgctxt "table heading" msgid "Cancelled Date" msgstr "" -#: includes/core/wcs-functions.php:295 +#: includes/core/wcs-functions.php:299 #: templates/gifting/emails/recipient-email-subscriptions-table.php:18 msgctxt "table heading" msgid "End Date" msgstr "" -#: includes/core/wcs-functions.php:330 +#: includes/core/wcs-functions.php:334 msgid "Date type is not a string." msgstr "" -#: includes/core/wcs-functions.php:332 +#: includes/core/wcs-functions.php:336 msgid "Date type can not be an empty string." msgstr "" @@ -5915,48 +6257,53 @@ msgstr "" #. translators: 1) passed sort order type argument, 2) 'ascending', 3) 'descending'. #: includes/core/wcs-helper-functions.php:281 +#, php-format msgid "Invalid sort order type: %1$s. The $sort_order argument must be %2$s or %3$s." msgstr "" -#: includes/core/wcs-order-functions.php:191 +#: includes/core/wcs-order-functions.php:198 msgctxt "In wcs_copy_order_meta error message. Refers to origin and target order objects." msgid "Invalid data. Orders expected aren't orders." msgstr "" -#: includes/core/wcs-order-functions.php:195 +#: includes/core/wcs-order-functions.php:202 msgctxt "Refers to the type of the copy being performed: \"copy_order\", \"subscription\", \"renewal_order\", \"resubscribe_order\"" msgid "Invalid data. Type of copy is not a string." msgstr "" #. translators: placeholder %1 is the order type. %2 is the subscription ID we attempted to create the order for. -#: includes/core/wcs-order-functions.php:278 +#: includes/core/wcs-order-functions.php:285 +#, php-format msgid "There was an error fetching the new order (%1$s) for subscription %2$d." msgstr "" #. translators: placeholder is a date. -#: includes/core/wcs-order-functions.php:319 +#: includes/core/wcs-order-functions.php:326 +#, php-format msgid "Subscription Renewal Order – %s" msgstr "" #. translators: placeholder is a date. -#: includes/core/wcs-order-functions.php:323 +#: includes/core/wcs-order-functions.php:330 +#, php-format msgid "Resubscribe Order – %s" msgstr "" -#: includes/core/wcs-order-functions.php:342 +#: includes/core/wcs-order-functions.php:349 msgid "$type passed to the function was not a string." msgstr "" #. translators: placeholder is an order type. -#: includes/core/wcs-order-functions.php:347 +#: includes/core/wcs-order-functions.php:354 +#, php-format msgid "\"%s\" is not a valid new order type." msgstr "" -#: includes/core/wcs-order-functions.php:597 +#: includes/core/wcs-order-functions.php:604 msgid "Invalid data. No valid subscription / order was passed in." msgstr "" -#: includes/core/wcs-order-functions.php:601 +#: includes/core/wcs-order-functions.php:608 msgid "Invalid data. No valid item id was passed in." msgstr "" @@ -6024,6 +6371,7 @@ msgstr "" #. translators: period interval, placeholder is ordinal (eg "$10 every _2nd/3rd/4th_", etc) #: includes/core/wcs-time-functions.php:163 +#, php-format msgctxt "period interval with ordinal number (e.g. \"every 2nd\"" msgid "every %s" msgstr "" @@ -6081,6 +6429,7 @@ msgstr "" #. translators: %s: order ID (linked to details page). #: includes/early-renewal/class-wcs-cart-early-renewal.php:225 +#, php-format msgid "Order %s created to record early renewal." msgstr "" @@ -6113,6 +6462,7 @@ msgstr "" #. translators: 1-2: opening/closing tags , 2-3: opening/closing tags for a link to docs on early renewal. #: includes/early-renewal/class-wcs-early-renewal-manager.php:66 +#, php-format msgid "Allow customers to bypass the checkout and renew their subscription early from their %1$sMy Account > View Subscription%2$s page. %3$sLearn more.%4$s" msgstr "" @@ -6146,53 +6496,60 @@ msgstr "" #. translators: placeholder contains a link to the order's edit screen. #: includes/early-renewal/wcs-early-renewal-functions.php:143 +#, php-format msgid "Customer successfully renewed early with order %s." msgstr "" #. translators: placeholder contains a link to the order's edit screen. #: includes/early-renewal/wcs-early-renewal-functions.php:146 +#, php-format msgid "Failed to update subscription dates after customer renewed early with order %s." msgstr "" #. translators: $1-$2: opening and closing tags. Link to documents->payment gateways, 3$-4$: opening and closing tags. Link to WooCommerce extensions shop page #: includes/gateways/class-wc-subscriptions-payment-gateways.php:152 +#, php-format msgid "Find new gateways that %1$ssupport automatic subscription payments%2$s in the official %3$sWooCommerce Marketplace%4$s." msgstr "" -#: includes/gifting/class-wcs-gifting.php:149 +#: includes/gifting/class-wcs-gifting.php:171 msgid "Please enter someone else's email address." msgstr "" -#: includes/gifting/class-wcs-gifting.php:153 +#: includes/gifting/class-wcs-gifting.php:175 msgid " Invalid email address." msgstr "" -#: includes/gifting/class-wcs-gifting.php:304 +#: includes/gifting/class-wcs-gifting.php:326 msgid "Recipient's Email Address" msgstr "" -#: includes/gifting/class-wcs-gifting.php:355 +#: includes/gifting/class-wcs-gifting.php:377 msgctxt "table heading" msgid "Renewing" msgstr "" #. translators: 1$-2$: opening and closing tags, 3$ plugin name, 4$ required plugin version, 5$-6$: opening and closing link tags, leads to plugins.php in admin, 7$: line break, 8$-9$ Opening and closing small tags. -#: includes/gifting/class-wcs-gifting.php:449 +#: includes/gifting/class-wcs-gifting.php:471 +#, php-format msgid "%1$sWooCommerce Subscriptions Gifting Membership integration is inactive.%2$s In order to integrate with WooCommerce Memberships, WooCommerce Subscriptions Gifting requires %3$s %4$s or newer. %5$sPlease update »%6$s %7$s%8$sNote: All other WooCommerce Subscriptions Gifting features will remain available, however purchasing membership plans for recipients will fail to grant the membership to the gift recipient.%9$s" msgstr "" #. translators: 1$-2$: opening and closing tags, 3$ plugin name, 4$ required plugin version, 5$-6$: opening and closing link tags, leads to plugins.php in admin. -#: includes/gifting/class-wcs-gifting.php:452 +#: includes/gifting/class-wcs-gifting.php:474 +#, php-format msgid "%1$sWooCommerce Subscriptions Gifting is inactive.%2$s This version of WooCommerce Subscriptions Gifting requires %3$s %4$s or newer. %5$sPlease update »%6$s" msgstr "" #. translators: 1$-2$: opening and closing tags, 3$:opening link tag, leads to WooCommerce Payments plugin product page, 4$:opening link tag, leads to WooCommerce Subscriptions plugin product page, 5$-6$: opening and closing link tags, leads to plugins.php in admin. -#: includes/gifting/class-wcs-gifting.php:466 +#: includes/gifting/class-wcs-gifting.php:488 +#, php-format msgid "%1$sWooCommerce Subscriptions Gifting is inactive.%2$s WooCommerce Subscriptions Gifting requires either the %3$sWooCommerce Payments%6$s or %4$sWooCommerce Subscriptions%6$s plugin to be active to work correctly. Please %5$sinstall & activate either one »%6$s" msgstr "" #. translators: 1$-2$: opening and closing tags, 3$ plugin name, 4$:opening link tag, leads to plugin product page, 5$-6$: opening and closing link tags, leads to plugins.php in admin. -#: includes/gifting/class-wcs-gifting.php:471 +#: includes/gifting/class-wcs-gifting.php:493 +#, php-format msgid "%1$sWooCommerce Subscriptions Gifting is inactive.%2$s WooCommerce Subscriptions Gifting requires the %4$s%3$s%6$s plugin to be active to work correctly. Please %5$sinstall & activate %3$s »%6$s" msgstr "" @@ -6226,6 +6583,7 @@ msgstr "" #. translators: $1: is subscription order number,$2: is recipient user's name, $3: is the purchaser user's name. #: includes/gifting/class-wcsg-admin.php:138 +#, php-format msgctxt "Subscription title on admin table. (e.g.: #211 for John Doe Purchased by: Jane Doe)" msgid "%1$s for %2$s purchased by %3$s" msgstr "" @@ -6259,9 +6617,9 @@ msgid "This is what shoppers will see in the product page and cart." msgstr "" #: includes/gifting/class-wcsg-admin.php:209 -#: includes/gifting/class-wcsg-blocks-integration.php:84 +#: includes/gifting/class-wcsg-blocks-integration.php:72 #: templates/gifting/html-add-recipient.php:17 -#: build/gifting-blocks-checkout.js:1 +#: build/wcsg-blocks-integration.js:1 #: client/gifting/components/line-item-gift-recipient/index.js:167 #: client/gifting/components/line-item-gift-recipient/index.js:172 msgid "This is a gift" @@ -6307,6 +6665,7 @@ msgstr "" #. translators: %1$s opening anchor tag with url, %2$s closing anchor tag #: includes/gifting/class-wcsg-admin.php:551 +#, php-format msgid "Overriding your %1$sstore's settings%2$s" msgstr "" @@ -6319,7 +6678,7 @@ msgid "Please enter the gift recipient’s shipping address here, or we’ll col msgstr "" #: includes/gifting/class-wcsg-checkout.php:196 -#: build/gifting-blocks-checkout.js:1 +#: build/wcsg-blocks-integration.js:1 #: client/gifting/components/line-item-gift-recipient/index.js:182 msgid "Gifting to" msgstr "" @@ -6347,17 +6706,20 @@ msgstr "" #. Translators: placeholder is the number of files. #: includes/gifting/class-wcsg-download-handler.php:356 +#, php-format msgid "File %d" msgstr "" #. Translators: placeholder is a subscription ID. #: includes/gifting/class-wcsg-email.php:402 +#, php-format msgctxt "Used in email heading before line items table, placeholder is subscription ID" msgid "Subscription #%s" msgstr "" #. Translators: placeholder is an order ID. #: includes/gifting/class-wcsg-email.php:405 +#, php-format msgctxt "Used in email heading before line items table, placeholder is order ID" msgid "Order #%s" msgstr "" @@ -6368,11 +6730,13 @@ msgstr "" #. Translators: 1) opening tag, 2) closing tag. #: includes/gifting/class-wcsg-recipient-addresses.php:80 +#, php-format msgid "%1$sNote:%2$s This will not update the shipping address of subscriptions you have purchased for others." msgstr "" #. Translators: 1) opening tag, 2) closing tag. #: includes/gifting/class-wcsg-recipient-addresses.php:84 +#, php-format msgid "%1$sNote:%2$s This will not update the billing address of subscriptions purchased for you by someone else." msgstr "" @@ -6416,11 +6780,11 @@ msgstr "" msgid "Shipping:" msgstr "" -#: includes/gifting/class-wcsg-recipient-management.php:548 +#: includes/gifting/class-wcsg-recipient-management.php:542 msgid "WARNING:" msgstr "" -#: includes/gifting/class-wcsg-recipient-management.php:549 +#: includes/gifting/class-wcsg-recipient-management.php:543 msgid "The following recipient will be removed from their subscriptions:" msgid_plural "The following recipients will be removed from their subscriptions:" msgstr[0] "" @@ -6488,16 +6852,19 @@ msgstr "" #. Translators: %s Order number. #: includes/gifting/privacy/class-wcsg-privacy-erasers.php:103 +#, php-format msgid "Removed personal data from order %s." msgstr "" #. Translators: %s Order number. #: includes/gifting/privacy/class-wcsg-privacy-erasers.php:109 +#, php-format msgid "Removed recipient personal data from order %s line items." msgstr "" #. Translators: %s Order number. #: includes/gifting/privacy/class-wcsg-privacy-erasers.php:114 +#, php-format msgid "Personal data within order %s has been retained." msgstr "" @@ -6537,6 +6904,7 @@ msgstr "" #. translators: %d: retry count. #: includes/payment-retry/admin/class-wcs-retry-admin.php:121 +#, php-format msgid "%d Pending Payment Retry" msgid_plural "%d Pending Payment Retries" msgstr[0] "" @@ -6544,6 +6912,7 @@ msgstr[1] "" #. translators: %d: retry count. #: includes/payment-retry/admin/class-wcs-retry-admin.php:125 +#, php-format msgid "%d Processing Payment Retry" msgid_plural "%d Processing Payment Retries" msgstr[0] "" @@ -6551,6 +6920,7 @@ msgstr[1] "" #. translators: %d: retry count. #: includes/payment-retry/admin/class-wcs-retry-admin.php:129 +#, php-format msgid "%d Failed Payment Retry" msgid_plural "%d Failed Payment Retries" msgstr[0] "" @@ -6558,6 +6928,7 @@ msgstr[1] "" #. translators: %d: retry count. #: includes/payment-retry/admin/class-wcs-retry-admin.php:133 +#, php-format msgid "%d Successful Payment Retry" msgid_plural "%d Successful Payment Retries" msgstr[0] "" @@ -6565,6 +6936,7 @@ msgstr[1] "" #. translators: %d: retry count. #: includes/payment-retry/admin/class-wcs-retry-admin.php:137 +#, php-format msgid "%d Cancelled Payment Retry" msgid_plural "%d Cancelled Payment Retries" msgstr[0] "" @@ -6580,6 +6952,7 @@ msgstr "" #. translators: 1,2: opening/closing link tags (to documentation). #: includes/payment-retry/admin/class-wcs-retry-admin.php:186 +#, php-format msgid "Attempt to recover recurring revenue that would otherwise be lost due to payment methods being declined only temporarily. %1$sLearn more%2$s." msgstr "" @@ -6783,6 +7156,7 @@ msgstr "" #. translators: 1$: is the "You have already subscribed to this product" notice, 2$-4$: opening/closing link tags, 3$: an order number #: includes/switching/class-wc-subscriptions-switcher.php:291 +#, php-format msgid "%1$s Complete payment on %2$sOrder %3$s%4$s to be able to change your subscription." msgstr "" @@ -6792,6 +7166,7 @@ msgstr "" #. translators: placeholders are opening and closing link tags #: includes/switching/class-wc-subscriptions-switcher.php:390 +#, php-format msgid "Allow subscribers to switch (upgrade or downgrade) between different subscriptions. %1$sLearn more%2$s." msgstr "" @@ -6889,6 +7264,7 @@ msgstr "" #. translators: %s: order number. #: includes/switching/class-wc-subscriptions-switcher.php:1165 +#, php-format msgid "Switch order cancelled due to a new switch order being created #%s." msgstr "" @@ -6929,6 +7305,7 @@ msgstr "" #. translators: %1: product subtotal, %2: HTML span tag, %3: direction (upgrade, downgrade, crossgrade), %4: closing HTML span tag #: includes/switching/class-wc-subscriptions-switcher.php:1844 +#, php-format msgctxt "product subtotal string" msgid "%1$s %2$s(%3$s)%4$s" msgstr "" @@ -6943,12 +7320,14 @@ msgstr "" #. translators: 1$: old item, 2$: new item when switching #: includes/switching/class-wc-subscriptions-switcher.php:1973 +#, php-format msgctxt "used in order notes" msgid "Customer switched from: %1$s to %2$s." msgstr "" #. translators: %s: new item name. #: includes/switching/class-wc-subscriptions-switcher.php:1976 +#, php-format msgctxt "used in order notes" msgid "Customer added %s." msgstr "" @@ -6973,6 +7352,7 @@ msgstr "" #. translators: placeholder is a switch type. #: includes/switching/class-wcs-switch-cart-item.php:328 +#, php-format msgid "Invalid switch type \"%s\". Switch must be one of: \"upgrade\", \"downgrade\" or \"crossgrade\"." msgstr "" @@ -6983,6 +7363,7 @@ msgstr "" #. translators: placeholder is a currency symbol / code #: templates/admin/deprecated/html-variation-price.php:20 #: templates/admin/deprecated/html-variation-price.php:30 +#, php-format msgid "Subscription Price (%s)" msgstr "" @@ -7006,6 +7387,7 @@ msgid "Subscription Length" msgstr "" #: templates/admin/deprecated/html-variation-price.php:85 +#, php-format msgid "Sign-up Fee (%s)" msgstr "" @@ -7022,6 +7404,7 @@ msgstr "" #. translators: placeholder is trial period validation message if passed an invalid value (e.g. "Trial period can not exceed 4 weeks") #: templates/admin/deprecated/html-variation-price.php:118 #: templates/admin/html-variation-price.php:83 +#, php-format msgctxt "Trial period dropdown's description in pricing fields" msgid "An optional period of time to wait before charging the first recurring payment. Any sign up fee will still be charged at the outset of the subscription. %s" msgstr "" @@ -7066,6 +7449,7 @@ msgid "Create subscription product" msgstr "" #: templates/admin/html-failed-scheduled-action-notice.php:26 +#, php-format msgid "An error has occurred while processing a recent subscription related event. For steps on how to fix the affected subscription and to learn more about the possible causes of this error, please read our guide %1$shere%2$s." msgid_plural "An error has occurred while processing recent subscription related events. For steps on how to fix the affected subscriptions and to learn more about the possible causes of this error, please read our guide %1$shere%2$s." msgstr[0] "" @@ -7079,6 +7463,7 @@ msgstr[1] "" #. translators: $1 the log file name $2 and $3 are opening and closing link tags, respectively. #: templates/admin/html-failed-scheduled-action-notice.php:43 +#, php-format msgid "To see further details about these errors, view the %1$s log file from the %2$sWooCommerce logs screen.%2$s" msgstr "" @@ -7147,6 +7532,7 @@ msgstr "" #. translators: $1: opening tag, $2: closing tag #: templates/checkout/form-change-payment-method.php:92 +#, php-format msgid "Use this payment method for %1$sall%2$s of my current subscriptions" msgstr "" @@ -7167,27 +7553,32 @@ msgstr "" #. translators: placeholder is the subscription order number wrapped in tags #: templates/checkout/subscription-receipt.php:18 #: templates/emails/plain/email-order-details.php:19 +#, php-format msgid "Subscription Number: %s" msgstr "" #. translators: placeholder is the subscription's next payment date (either human readable or normal date) wrapped in tags #: templates/checkout/subscription-receipt.php:24 +#, php-format msgid "Next Payment Date: %s" msgstr "" #. translators: placeholder is the formatted total to be paid for the subscription wrapped in tags #: templates/checkout/subscription-receipt.php:30 +#, php-format msgid "Total: %s" msgstr "" #. translators: placeholder is the display name of the payment method #: templates/checkout/subscription-receipt.php:37 +#, php-format msgid "Payment Method: %s" msgstr "" #. translators: $1: customer's billing first name and last name #: templates/emails/admin-new-renewal-order.php:22 #: templates/emails/plain/admin-new-renewal-order.php:16 +#, php-format msgctxt "Used in admin email: new renewal order" msgid "You have received a subscription renewal order from %1$s. Their order is as follows:" msgstr "" @@ -7196,6 +7587,7 @@ msgstr "" #. translators: $1: customer's first name and last name, $2: how many subscriptions customer switched #: templates/emails/admin-new-switch-order.php:28 #: templates/emails/plain/admin-new-switch-order.php:18 +#, php-format msgctxt "Used in switch notification admin email" msgid "Customer %1$s has switched their subscription. The details of their new subscription are as follows:" msgid_plural "Customer %1$s has switched %2$d of their subscriptions. The details of their new subscriptions are as follows:" @@ -7204,6 +7596,7 @@ msgstr[1] "" #. translators: $1: customer's first name and last name, $2: how many subscriptions customer switched #: templates/emails/admin-new-switch-order.php:31 +#, php-format msgctxt "Used in switch notification admin email" msgid "Customer %1$s has switched %2$d of their subscriptions. The details of their new subscriptions are as follows:" msgstr "" @@ -7219,6 +7612,7 @@ msgstr "" #. translators: %1$s: an order number, %2$s: the customer's full name, %3$s: lowercase human time diff in the form returned by wcs_get_human_time_diff(), e.g. 'in 12 hours' #: templates/emails/admin-payment-retry.php:23 +#, php-format msgctxt "In customer renewal invoice email" msgid "The automatic recurring payment for order #%1$d from %2$s has failed. The payment will be retried %3$s." msgstr "" @@ -7230,6 +7624,7 @@ msgstr "" #. translators: $1$s customer's billing first name and last name %2$s: date on which the subscription ends. #: templates/emails/cancelled-subscription.php:21 +#, php-format msgid "A subscription belonging to %1$s is now pending cancellation, and will end on %2$s. Their subscription's details are as follows:" msgstr "" @@ -7237,6 +7632,7 @@ msgstr "" #. translators: $1: customer's billing first name and last name #: templates/emails/cancelled-subscription.php:28 #: templates/emails/plain/cancelled-subscription.php:16 +#, php-format msgid "A subscription belonging to %1$s has been cancelled. Their subscription's details are as follows:" msgstr "" @@ -7272,6 +7668,7 @@ msgstr "" #: templates/emails/plain/customer-payment-retry.php:16 #: templates/emails/plain/customer-processing-renewal-order.php:16 #: templates/emails/plain/customer-renewal-invoice.php:16 +#, php-format msgid "Hi %s," msgstr "" @@ -7290,16 +7687,19 @@ msgstr "" #: templates/emails/customer-notification-manual-renewal.php:25 #: templates/emails/plain/customer-notification-auto-renewal.php:19 #: templates/emails/plain/customer-notification-manual-renewal.php:19 +#, php-format msgid "Hi %s." msgstr "" #. translators: %1$s: human readable time difference (eg 3 days, 1 day), %2$s: date in local format. #: templates/emails/customer-notification-auto-renewal.php:37 +#, php-format msgid "Your subscription will automatically renew in %1$s — that’s %2$s." msgstr "" #. translators: %s: link to subscription detail in the customer's dashboard. #: templates/emails/customer-notification-auto-renewal.php:74 +#, php-format msgid "You can manage this subscription from your %s" msgstr "" @@ -7311,16 +7711,19 @@ msgstr "" #. translators: %s: Customer first name #: templates/emails/customer-notification-auto-trial-ending.php:25 #: templates/emails/plain/customer-notification-auto-trial-ending.php:19 +#, php-format msgid "Hi, %s." msgstr "" #. translators: %1$s: human readable time difference (eg 3 days, 1 day), %2$s: date in local format. #: templates/emails/customer-notification-auto-trial-ending.php:36 +#, php-format msgid "Your paid subscription begins when your free trial expires in %1$s — that’s %2$s." msgstr "" #. translators: %1$s: link to account dashboard. #: templates/emails/customer-notification-auto-trial-ending.php:53 +#, php-format msgid "Payment will be deducted using the payment method on file. You can manage this subscription from your %1$s." msgstr "" @@ -7329,16 +7732,19 @@ msgstr "" #: templates/emails/customer-notification-manual-trial-ending.php:25 #: templates/emails/plain/customer-notification-expiring-subscription.php:19 #: templates/emails/plain/customer-notification-manual-trial-ending.php:19 +#, php-format msgid "Heads up, %s." msgstr "" #. translators: %1$s: human readable time difference (eg 3 days, 1 day), %2$s: date in local format. #: templates/emails/customer-notification-expiring-subscription.php:36 +#, php-format msgid "Your subscription expires in %1$s — that’s %2$s." msgstr "" #. translators: %1$s: human readable time difference (eg 3 days, 1 day), %2$s: date in local format. #: templates/emails/customer-notification-manual-renewal.php:38 +#, php-format msgid "Your subscription is up for renewal in %1$s — that’s %2$s." msgstr "" @@ -7361,6 +7767,7 @@ msgstr "" #. translators: %1$s: human readable time difference (eg 3 days, 1 day), %2$s: date in local format. #: templates/emails/customer-notification-manual-trial-ending.php:36 +#, php-format msgid "Your free trial expires in %1$s — that’s %2$s." msgstr "" @@ -7372,12 +7779,14 @@ msgstr "" #. translators: %s: lowercase human time diff in the form returned by wcs_get_human_time_diff(), e.g. 'in 12 hours' #: templates/emails/customer-payment-retry.php:19 #: templates/emails/plain/customer-payment-retry.php:18 +#, php-format msgctxt "In customer renewal invoice email" msgid "The automatic payment to renew your subscription has failed. We will retry the payment %s." msgstr "" #. translators: %1$s %2$s: link markup to checkout payment url, note: no full stop due to url at the end #: templates/emails/customer-payment-retry.php:22 +#, php-format msgctxt "In customer renewal invoice email" msgid "To reactivate the subscription now, you can also log in and pay for the renewal from your account page: %1$sPay Now »%2$s" msgstr "" @@ -7385,6 +7794,7 @@ msgstr "" #. translators: %s: Order number #: templates/emails/customer-processing-renewal-order.php:19 #: templates/emails/plain/customer-processing-renewal-order.php:18 +#, php-format msgid "Just to let you know — we've received your subscription renewal order #%s, and it is now being processed:" msgstr "" @@ -7392,6 +7802,7 @@ msgstr "" #. translators: %1$s: name of the blog, %2$s: link to checkout payment url, note: no full stop due to url at the end #: templates/emails/customer-renewal-invoice.php:25 #: templates/emails/plain/customer-renewal-invoice.php:20 +#, php-format msgctxt "In customer renewal invoice email" msgid "An order has been created for you to renew your subscription on %1$s. To pay for this invoice please use the following link: %2$s" msgstr "" @@ -7405,12 +7816,14 @@ msgstr "" #. translators: %1$s: name of the blog, %2$s: link to checkout payment url, note: no full stop due to url at the end #: templates/emails/customer-renewal-invoice.php:47 #: templates/emails/plain/customer-renewal-invoice.php:23 +#, php-format msgctxt "In customer renewal invoice email" msgid "The automatic payment to renew your subscription with %1$s has failed. To reactivate the subscription, please log in and pay for the renewal from your account page: %2$s" msgstr "" #. translators: %s: Order or subscription ID. #: templates/emails/email-order-details.php:31 +#, php-format msgid "Order #%s" msgstr "" @@ -7418,6 +7831,7 @@ msgstr "" #. Translators: placeholder is a subscription number. #: templates/emails/email-order-details.php:31 #: templates/gifting/emails/plain/recipient-email-subscriptions-table.php:14 +#, php-format msgid "Subscription #%s" msgstr "" @@ -7436,6 +7850,7 @@ msgstr "" #. translators: $1: customer's billing first name and last name #: templates/emails/expired-subscription.php:17 #: templates/emails/plain/expired-subscription.php:16 +#, php-format msgid "A subscription belonging to %1$s has expired. Their subscription's details are as follows:" msgstr "" @@ -7447,6 +7862,7 @@ msgstr "" #. translators: $1: customer's billing first name and last name #: templates/emails/on-hold-subscription.php:17 #: templates/emails/plain/on-hold-subscription.php:16 +#, php-format msgid "A subscription belonging to %1$s has been suspended by the user. Their subscription's details are as follows:" msgstr "" @@ -7456,6 +7872,7 @@ msgid "Date Suspended" msgstr "" #: templates/emails/plain/admin-payment-retry.php:22 +#, php-format msgctxt "In customer renewal invoice email" msgid "The automatic recurring payment for order #%1$s from %2$s has failed. The payment will be retried %3$s." msgstr "" @@ -7463,11 +7880,13 @@ msgstr "" #. translators: placeholder is last time subscription was paid #: templates/emails/plain/cancelled-subscription.php:32 #: templates/emails/plain/expired-subscription.php:32 +#, php-format msgid "Last Order Date: %s" msgstr "" #. translators: placeholder is localised date string #: templates/emails/plain/cancelled-subscription.php:39 +#, php-format msgid "End of Prepaid Term: %s" msgstr "" @@ -7475,22 +7894,26 @@ msgstr "" #: templates/emails/plain/cancelled-subscription.php:45 #: templates/emails/plain/expired-subscription.php:45 #: templates/emails/plain/on-hold-subscription.php:40 +#, php-format msgctxt "in plain emails for subscription information" msgid "View Subscription: %s" msgstr "" #. translators: placeholder is order's view url #: templates/emails/plain/customer-completed-switch-order.php:24 +#, php-format msgid "View your order: %s" msgstr "" #. translators: placeholder is subscription's view url #: templates/emails/plain/customer-completed-switch-order.php:35 +#, php-format msgid "View your subscription: %s" msgstr "" #. translators: %1$s: human readable time difference (eg 3 days, 1 day), %2$s: date in local format. #: templates/emails/plain/customer-notification-auto-renewal.php:29 +#, php-format msgid "Your subscription will automatically renew in %1$s — that’s %2$s." msgstr "" @@ -7500,6 +7923,7 @@ msgstr "" #. translators: %1$s: human readable time difference (eg 3 days, 1 day), %2$s: date in local format. #: templates/emails/plain/customer-notification-auto-trial-ending.php:29 +#, php-format msgid "Your paid subscription begins when your free trial expires in %1$s — that’s %2$s." msgstr "" @@ -7510,11 +7934,13 @@ msgstr "" #. translators: %1$s: human readable time difference (eg 3 days, 1 day), %2$s: date in local format. #: templates/emails/plain/customer-notification-expiring-subscription.php:29 +#, php-format msgid "Your subscription expires in %1$s — that’s %2$s." msgstr "" #. translators: %1$s: human readable time difference (eg 3 days, 1 day), %2$s: date in local format. #: templates/emails/plain/customer-notification-manual-renewal.php:29 +#, php-format msgid "Your subscription is up for renewal in %1$s — that’s %2$s." msgstr "" @@ -7532,20 +7958,24 @@ msgstr "" #. translators: %1$s: human readable time difference (eg 3 days, 1 day), %2$s: date in local format. #: templates/emails/plain/customer-notification-manual-trial-ending.php:29 +#, php-format msgid "Your free trial expires in %1$s — that’s %2$s." msgstr "" #. translators: %1$s: link to checkout payment url, note: no full stop due to url at the end #: templates/emails/plain/customer-payment-retry.php:21 +#, php-format msgctxt "In customer renewal invoice email" msgid "To reactivate the subscription now, you can also log in and pay for the renewal from your account page: %1$s" msgstr "" #: templates/emails/plain/email-order-details.php:16 +#, php-format msgid "Order number: %s" msgstr "" #: templates/emails/plain/email-order-details.php:17 +#, php-format msgid "Order date: %s" msgstr "" @@ -7553,16 +7983,19 @@ msgstr "" #. Translators: placeholder is a date. #: templates/emails/plain/expired-subscription.php:39 #: templates/gifting/emails/plain/recipient-email-subscriptions-table.php:20 +#, php-format msgid "End Date: %s" msgstr "" #. translators: placeholder is last time subscription was paid #: templates/emails/plain/on-hold-subscription.php:32 +#, php-format msgid "Last Order: %s" msgstr "" #. translators: placeholder is localised date string #: templates/emails/plain/on-hold-subscription.php:36 +#, php-format msgid "Date Suspended: %s" msgstr "" @@ -7573,18 +8006,21 @@ msgstr "" #. translators: placeholder is subscription's number #: templates/emails/plain/subscription-info.php:24 +#, php-format msgctxt "in plain emails for subscription information" msgid "Subscription: %s" msgstr "" #. translators: placeholder is either view or edit url for the subscription #: templates/emails/plain/subscription-info.php:26 +#, php-format msgctxt "in plain emails for subscription information" msgid "View subscription: %s" msgstr "" #. translators: placeholder is localised start date #: templates/emails/plain/subscription-info.php:28 +#, php-format msgctxt "in plain emails for subscription information" msgid "Start date: %s" msgstr "" @@ -7599,12 +8035,14 @@ msgstr "" #. translators: placeholder is localised end date, or "when cancelled" #: templates/emails/plain/subscription-info.php:32 +#, php-format msgctxt "in plain emails for subscription information" msgid "End date: %s" msgstr "" #. translators: placeholder is the formatted order total for the subscription #: templates/emails/plain/subscription-info.php:34 +#, php-format msgctxt "in plain emails for subscription information" msgid "Recurring price: %s" msgstr "" @@ -7612,10 +8050,12 @@ msgstr "" #. Translators: placeholder is the next payment date. #: templates/emails/plain/subscription-info.php:37 #: templates/emails/subscription-info.php:43 +#, php-format msgid "Next payment: %s" msgstr "" #: templates/emails/plain/subscription-info.php:53 +#, php-format msgid "This subscription is set to renew automatically using your payment method on file. You can manage or cancel this subscription from your my account page. %s" msgid_plural "These subscriptions are set to renew automatically using your payment method on file. You can manage or cancel your subscriptions from your my account page. %s" msgstr[0] "" @@ -7645,6 +8085,7 @@ msgstr "" #. Translators: placeholder is a subscription number. #: templates/emails/subscription-info.php:35 #: templates/gifting/emails/recipient-email-subscriptions-table.php:25 +#, php-format msgctxt "subscription number in email table. (eg: #106)" msgid "#%s" msgstr "" @@ -7656,6 +8097,7 @@ msgstr "" #. Translators: Placeholders are opening and closing My Account link tags. #: templates/emails/subscription-info.php:64 +#, php-format msgid "This subscription is set to renew automatically using your payment method on file. You can manage or cancel this subscription from your %1$smy account page%2$s." msgid_plural "These subscriptions are set to renew automatically using your payment method on file. You can manage or cancel your subscriptions from your %1$smy account page%2$s." msgstr[0] "" @@ -7671,12 +8113,14 @@ msgstr "" #. Translators: 1) is the purchaser's name, 2) is the blog's name. #: templates/gifting/emails/new-recipient-customer.php:21 #: templates/gifting/emails/plain/new-recipient-customer.php:17 +#, php-format msgid "%1$s just purchased a subscription for you at %2$s so we've created an account for you to manage the subscription." msgstr "" #. Translators: placeholder is a username. #: templates/gifting/emails/new-recipient-customer.php:28 #: templates/gifting/emails/plain/new-recipient-customer.php:20 +#, php-format msgid "Your username is: %s" msgstr "" @@ -7686,6 +8130,7 @@ msgstr "" #. Translators: placeholder is a link to "My Account" for setting up the recipient's details. #: templates/gifting/emails/new-recipient-customer.php:38 +#, php-format msgid "To complete your account we just need you to fill in your shipping address here: %s." msgstr "" @@ -7697,22 +8142,26 @@ msgstr "" #. Translators: placeholder is the URL for "My Account". #: templates/gifting/emails/new-recipient-customer.php:48 #: templates/gifting/emails/plain/new-recipient-customer.php:28 +#, php-format msgid "Once completed you may access your account area to view your subscription here: %s." msgstr "" #. Translators: placeholder is the URL for resetting the password. #: templates/gifting/emails/plain/new-recipient-customer.php:23 +#, php-format msgid "Go here to set your password: %s" msgstr "" #. Translators: placeholder is the URL for setting up the recipient's details. #: templates/gifting/emails/plain/new-recipient-customer.php:26 +#, php-format msgid "To complete your account we just need you to fill in your shipping address and you to change your password here: %s." msgstr "" #. translators: placeholder is the name of the site. #: templates/gifting/emails/plain/recipient-completed-renewal-order.php:15 #: templates/gifting/emails/recipient-completed-renewal-order.php:18 +#, php-format msgid "Hi there. Your subscription renewal order with %s has been completed. Your order details are shown below for your reference:" msgstr "" @@ -7724,31 +8173,37 @@ msgstr "" #. Translators: placeholder is the product name. #: templates/gifting/emails/plain/recipient-email-order-items.php:19 +#, php-format msgid "Product: %s" msgstr "" #. Translators: placeholder is the product SKU. #: templates/gifting/emails/plain/recipient-email-order-items.php:23 +#, php-format msgid "SKU: #%s" msgstr "" #. Translators: placeholder is the item's quantity. #: templates/gifting/emails/plain/recipient-email-order-items.php:48 +#, php-format msgid "Quantity: %s" msgstr "" #. Translators: placeholder is a purchase note. #: templates/gifting/emails/plain/recipient-email-order-items.php:53 +#, php-format msgid "Purchase Note: %s" msgstr "" #. Translators: placeholder is a date. #: templates/gifting/emails/plain/recipient-email-subscriptions-table.php:17 +#, php-format msgid "Start Date: %s" msgstr "" #. Translators: placeholder is a subscription's price string. For example, "$5 / month for 12 months". #: templates/gifting/emails/plain/recipient-email-subscriptions-table.php:32 +#, php-format msgid "Period: %s" msgstr "" @@ -7756,6 +8211,7 @@ msgstr "" #. Translators: 1) is the subscription's purchaser, 2) is either the singular or plural form of "subscription" and 3) is the blog's name. #: templates/gifting/emails/plain/recipient-new-initial-order.php:14 #: templates/gifting/emails/recipient-new-initial-order.php:19 +#, php-format msgid "%1$s just purchased %2$s for you at %3$s." msgstr "" @@ -7772,6 +8228,7 @@ msgstr[1] "" #. Translators: placeholder is either the singular or plural form of "subscription". #: templates/gifting/emails/plain/recipient-new-initial-order.php:16 #: templates/gifting/emails/recipient-new-initial-order.php:23 +#, php-format msgid " Details of the %s are shown below." msgstr "" @@ -7794,6 +8251,7 @@ msgstr "" #. translators: 1) is the singular or plural form of "subscription", 2) is a link to "My Account". #: templates/gifting/emails/plain/recipient-new-initial-order.php:24 +#, php-format msgid "You may access your account area to view your new %1$s here: %2$s." msgstr "" @@ -7812,6 +8270,7 @@ msgstr "" #. Translators: placeholder is a product SKU. #: templates/gifting/emails/recipient-email-order-items.php:33 +#, php-format msgid " (#%s)" msgstr "" @@ -7826,17 +8285,18 @@ msgstr "" #. Translators: 1) is either the singular or plural form of "subscription", 2) is an tag pointing to "My Account", 3) is the closing tag. #: templates/gifting/emails/recipient-new-initial-order.php:41 +#, php-format msgid "You may access your account area to view your new %1$s here: %2$sMy Account%3$s." msgstr "" #: templates/gifting/html-add-recipient.php:23 -#: build/gifting-blocks-checkout.js:1 -#: client/gifting/components/line-item-gift-recipient/index.js:218 +#: build/wcsg-blocks-integration.js:1 +#: client/gifting/components/line-item-gift-recipient/index.js:222 msgid "Gifting recipient" msgstr "" #: templates/gifting/html-add-recipient.php:44 -#: build/gifting-blocks-checkout.js:1 +#: build/wcsg-blocks-integration.js:1 #: client/gifting/components/line-item-gift-recipient/index.js:104 #: client/gifting/components/line-item-gift-recipient/index.js:135 msgid "Please enter a valid email address" @@ -7852,6 +8312,7 @@ msgstr "" #. translators: 1$: user's email, 2$-3$: opening and closing link tags, logs the user out. #: templates/gifting/new-recipient-account.php:22 +#, php-format msgid "(not %1$s? %2$sSign out%3$s)" msgstr "" @@ -7876,6 +8337,7 @@ msgstr "" #. translators: $1: formatted order total for the order, $2: number of items bought #: templates/gifting/related-orders.php:75 #: templates/myaccount/related-orders.php:61 +#, php-format msgid "%1$s for %2$d item" msgid_plural "%1$s for %2$d items" msgstr[0] "" @@ -7911,14 +8373,17 @@ msgid "Are you sure you want remove this item from your subscription?" msgstr "" #: templates/html-early-renewal-modal-content.php:23 +#, php-format msgid "By renewing your subscription early your next payment will be %s." msgstr "" #: templates/html-early-renewal-modal-content.php:28 +#, php-format msgid "By renewing your subscription early, your scheduled next payment on %s will be cancelled." msgstr "" #: templates/html-early-renewal-modal-content.php:34 +#, php-format msgid "Want to renew early via the checkout? Click %shere.%s" msgstr "" @@ -7937,6 +8402,7 @@ msgstr "" #. translators: placeholder is a subscription number. #: templates/myaccount/my-subscriptions.php:35 #: templates/myaccount/related-subscriptions.php:33 +#, php-format msgid "View subscription number %s" msgstr "" @@ -7949,6 +8415,7 @@ msgid "Next" msgstr "" #: templates/myaccount/my-subscriptions.php:75 +#, php-format msgid "You have reached the end of subscriptions. Go to the %sfirst page%s." msgstr "" @@ -7986,6 +8453,7 @@ msgstr "" #. translators: placeholder is an order number. #: templates/myaccount/related-orders.php:48 +#, php-format msgid "View order number %s" msgstr "" @@ -8076,26 +8544,6 @@ msgstr "" msgid "Clear" msgstr "" -#: build/gifting-blocks-checkout.js:1 -#: client/gifting/components/line-item-gift-recipient/index.js:187 -msgid "Gifting to:" -msgstr "" - -#: build/gifting-blocks-checkout.js:1 -#: client/gifting/components/line-item-gift-recipient/index.js:198 -msgid "Remove gift recipient" -msgstr "" - -#: build/gifting-blocks-checkout.js:1 -#: client/gifting/components/line-item-gift-recipient/index.js:204 -msgid "Remove" -msgstr "" - -#: build/gifting-blocks-checkout.js:1 -#: client/gifting/components/line-item-gift-recipient/index.js:229 -msgid "Update" -msgstr "" - #: build/gifting-welcome-announcement.js:1 #: client/components/announcement/index.js:112 #: client/components/announcement/index.js:163 @@ -8194,6 +8642,7 @@ msgstr[1] "" #. translators: %1$s is the price of the product. %2$s is the separator used e.g "every" or "/", %3$d is the length, %4$s is week, month, year #: build/index.js:10 #: client/core/utils/index.js:166 +#, js-format msgid "%1$s %2$s %3$d %4$s" msgstr "" @@ -8205,18 +8654,21 @@ msgstr "" #. translators: %s selected shipping rate (ex: flat rate) #: build/index.js:13 #: client/core/recurring-totals/index.js:114 +#, js-format msgid "via %s" msgstr "" #. Translators: %1$s is a date. #: build/index.js:14 #: client/core/recurring-totals/index.js:148 +#, js-format msgid "Due: %1$s" msgstr "" #. Translators: %1$s is a date. #: build/index.js:15 #: client/core/recurring-totals/index.js:153 +#, js-format msgid "Starting: %1$s" msgstr "" @@ -8243,18 +8695,21 @@ msgstr "" #. translators: %1$s is week, month, year #: build/index.js:16 #: client/core/utils/index.js:89 +#, js-format msgid "Recurring total every 2nd %1$s" msgstr "" #. Translators: %1$s is week, month, year #: build/index.js:17 #: client/core/utils/index.js:99 +#, js-format msgid "Recurring total every 3rd %1$s" msgstr "" #. Translators: %1$d is number of weeks, months, days, years. %2$s is week, month, year #: build/index.js:18 #: client/core/utils/index.js:108 +#, js-format msgid "Recurring total every %1$dth %2$s" msgstr "" @@ -8289,12 +8744,14 @@ msgstr "" #. translators: %s Product name. #: build/index.js:30 #: client/core/filters/index.js:93 +#, js-format msgid "%s (resubscription)" msgstr "" #. translators: %1$s Product name, %2$s Switch type (upgraded, downgraded, or crossgraded). #: build/index.js:33 #: client/core/filters/index.js:100 +#, js-format msgid "%1$s (%2$s)" msgstr "" @@ -8316,11 +8773,38 @@ msgstr "" #. translators: %s is the subscription price to pay immediately (ie: $10). #: build/index.js:34 #: client/core/filters/index.js:112 +#, js-format msgid "Due today %s" msgstr "" #. translators: %s is the subscription price to pay immediately (ie: $10). #: build/index.js:35 #: client/core/filters/index.js:117 +#, js-format msgid "%s due today" msgstr "" + +#: build/wcsg-blocks-integration.js:1 +#: client/gifting/components/line-item-gift-recipient/index.js:187 +msgid "Gifting to:" +msgstr "" + +#: build/wcsg-blocks-integration.js:1 +#: client/gifting/components/line-item-gift-recipient/index.js:198 +msgid "Remove gift recipient" +msgstr "" + +#: build/wcsg-blocks-integration.js:1 +#: client/gifting/components/line-item-gift-recipient/index.js:204 +msgid "Remove" +msgstr "" + +#: build/wcsg-blocks-integration.js:1 +#: client/gifting/components/line-item-gift-recipient/index.js:218 +msgid "Recipient's email address" +msgstr "" + +#: build/wcsg-blocks-integration.js:1 +#: client/gifting/components/line-item-gift-recipient/index.js:233 +msgid "Update" +msgstr "" diff --git a/templates/gifting/html-add-recipient.php b/templates/gifting/html-add-recipient.php index a16e278..18e6557 100644 --- a/templates/gifting/html-add-recipient.php +++ b/templates/gifting/html-add-recipient.php @@ -16,7 +16,7 @@ if ( ! defined( 'ABSPATH' ) ) { -
+

- +

diff --git a/vendor/autoload.php b/vendor/autoload.php index 1d75fb2..733cbb6 100644 --- a/vendor/autoload.php +++ b/vendor/autoload.php @@ -14,10 +14,7 @@ if (PHP_VERSION_ID < 50600) { echo $err; } } - trigger_error( - $err, - E_USER_ERROR - ); + throw new RuntimeException($err); } require_once __DIR__ . '/composer/autoload_real.php'; diff --git a/vendor/autoload_packages.php b/vendor/autoload_packages.php index f050a3e..0b714ef 100644 --- a/vendor/autoload_packages.php +++ b/vendor/autoload_packages.php @@ -5,7 +5,7 @@ * @package automattic/jetpack-autoloader */ -namespace Automattic\Jetpack\Autoloader\jp32625eaf0064549a4f20b6231a37a93c\al5_0_9; +namespace Automattic\Jetpack\Autoloader\jp32625eaf0064549a4f20b6231a37a93c\al5_0_10; // phpcs:ignore diff --git a/vendor/automattic/jetpack-autoloader/CHANGELOG.md b/vendor/automattic/jetpack-autoloader/CHANGELOG.md index 16e83b7..77c2855 100644 --- a/vendor/automattic/jetpack-autoloader/CHANGELOG.md +++ b/vendor/automattic/jetpack-autoloader/CHANGELOG.md @@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [5.0.10] - 2025-09-15 +### Changed +- Internal updates. + ## [5.0.9] - 2025-07-28 ### Changed - Exclude development files from production build of the package. [#44456] @@ -434,6 +438,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Add Custom Autoloader +[5.0.10]: https://github.com/Automattic/jetpack-autoloader/compare/v5.0.9...v5.0.10 [5.0.9]: https://github.com/Automattic/jetpack-autoloader/compare/v5.0.8...v5.0.9 [5.0.8]: https://github.com/Automattic/jetpack-autoloader/compare/v5.0.7...v5.0.8 [5.0.7]: https://github.com/Automattic/jetpack-autoloader/compare/v5.0.6...v5.0.7 diff --git a/vendor/automattic/jetpack-autoloader/src/AutoloadGenerator.php b/vendor/automattic/jetpack-autoloader/src/AutoloadGenerator.php index 46e8435..a0e5bfb 100644 --- a/vendor/automattic/jetpack-autoloader/src/AutoloadGenerator.php +++ b/vendor/automattic/jetpack-autoloader/src/AutoloadGenerator.php @@ -21,7 +21,7 @@ use Composer\Util\PackageSorter; */ class AutoloadGenerator { - const VERSION = '5.0.9'; + const VERSION = '5.0.10'; /** * IO object. diff --git a/vendor/composer/InstalledVersions.php b/vendor/composer/InstalledVersions.php index 07b32ed..2052022 100644 --- a/vendor/composer/InstalledVersions.php +++ b/vendor/composer/InstalledVersions.php @@ -26,12 +26,23 @@ use Composer\Semver\VersionParser; */ class InstalledVersions { + /** + * @var string|null if set (by reflection by Composer), this should be set to the path where this class is being copied to + * @internal + */ + private static $selfDir = null; + /** * @var mixed[]|null * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}|array{}|null */ private static $installed; + /** + * @var bool + */ + private static $installedIsLocalDir; + /** * @var bool|null */ @@ -309,6 +320,24 @@ class InstalledVersions { self::$installed = $data; self::$installedByVendor = array(); + + // when using reload, we disable the duplicate protection to ensure that self::$installed data is + // always returned, but we cannot know whether it comes from the installed.php in __DIR__ or not, + // so we have to assume it does not, and that may result in duplicate data being returned when listing + // all installed packages for example + self::$installedIsLocalDir = false; + } + + /** + * @return string + */ + private static function getSelfDir() + { + if (self::$selfDir === null) { + self::$selfDir = strtr(__DIR__, '\\', '/'); + } + + return self::$selfDir; } /** @@ -325,7 +354,9 @@ class InstalledVersions $copiedLocalDir = false; if (self::$canGetVendors) { + $selfDir = self::getSelfDir(); foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { + $vendorDir = strtr($vendorDir, '\\', '/'); if (isset(self::$installedByVendor[$vendorDir])) { $installed[] = self::$installedByVendor[$vendorDir]; } elseif (is_file($vendorDir.'/composer/installed.php')) { @@ -333,11 +364,14 @@ class InstalledVersions $required = require $vendorDir.'/composer/installed.php'; self::$installedByVendor[$vendorDir] = $required; $installed[] = $required; - if (strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { + if (self::$installed === null && $vendorDir.'/composer' === $selfDir) { self::$installed = $required; - $copiedLocalDir = true; + self::$installedIsLocalDir = true; } } + if (self::$installedIsLocalDir && $vendorDir.'/composer' === $selfDir) { + $copiedLocalDir = true; + } } } diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php index f8aaeed..3033720 100644 --- a/vendor/composer/autoload_psr4.php +++ b/vendor/composer/autoload_psr4.php @@ -7,5 +7,6 @@ $baseDir = dirname($vendorDir); return array( 'Composer\\Installers\\' => array($vendorDir . '/composer/installers/src/Composer/Installers'), + 'Automattic\\WooCommerce_Subscriptions\\' => array($baseDir . '/src'), 'Automattic\\Jetpack\\Autoloader\\' => array($vendorDir . '/automattic/jetpack-autoloader/src'), ); diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 66cc774..e4f4099 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -13,6 +13,7 @@ class ComposerStaticInit32625eaf0064549a4f20b6231a37a93c ), 'A' => array ( + 'Automattic\\WooCommerce_Subscriptions\\' => 37, 'Automattic\\Jetpack\\Autoloader\\' => 30, ), ); @@ -22,6 +23,10 @@ class ComposerStaticInit32625eaf0064549a4f20b6231a37a93c array ( 0 => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers', ), + 'Automattic\\WooCommerce_Subscriptions\\' => + array ( + 0 => __DIR__ . '/../..' . '/src', + ), 'Automattic\\Jetpack\\Autoloader\\' => array ( 0 => __DIR__ . '/..' . '/automattic/jetpack-autoloader/src', diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 8fa9a62..726058c 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -2,17 +2,17 @@ "packages": [ { "name": "automattic/jetpack-autoloader", - "version": "v5.0.9", - "version_normalized": "5.0.9.0", + "version": "v5.0.10", + "version_normalized": "5.0.10.0", "source": { "type": "git", "url": "https://github.com/Automattic/jetpack-autoloader.git", - "reference": "c9e9b82cc515d9ed093fa0ff21245f277aeceb4e" + "reference": "f7e2142139b925fac0a167ed0cbc71e2592bd9a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Automattic/jetpack-autoloader/zipball/c9e9b82cc515d9ed093fa0ff21245f277aeceb4e", - "reference": "c9e9b82cc515d9ed093fa0ff21245f277aeceb4e", + "url": "https://api.github.com/repos/Automattic/jetpack-autoloader/zipball/f7e2142139b925fac0a167ed0cbc71e2592bd9a0", + "reference": "f7e2142139b925fac0a167ed0cbc71e2592bd9a0", "shasum": "" }, "require": { @@ -20,12 +20,12 @@ "php": ">=7.2" }, "require-dev": { - "automattic/jetpack-changelogger": "^6.0.5", + "automattic/jetpack-changelogger": "^6.0.7", "automattic/phpunit-select-config": "^1.0.3", "composer/composer": "^2.2", "yoast/phpunit-polyfills": "^4.0.0" }, - "time": "2025-07-28T19:49:50+00:00", + "time": "2025-09-15T14:36:53+00:00", "type": "composer-plugin", "extra": { "class": "Automattic\\Jetpack\\Autoloader\\CustomAutoloaderPlugin", @@ -64,7 +64,7 @@ "wordpress" ], "support": { - "source": "https://github.com/Automattic/jetpack-autoloader/tree/v5.0.9" + "source": "https://github.com/Automattic/jetpack-autoloader/tree/v5.0.10" }, "install-path": "../automattic/jetpack-autoloader" }, diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index 9b8c44c..05e4292 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -1,9 +1,9 @@ array( 'name' => 'woocommerce/woocommerce-subscriptions', - 'pretty_version' => 'dev-release/7.8.2', - 'version' => 'dev-release/7.8.2', - 'reference' => '07e1321a082f8114c8b480d9ae8d7f1f4eb56922', + 'pretty_version' => 'dev-release/7.9.0', + 'version' => 'dev-release/7.9.0', + 'reference' => '9114ff6422e5a37b9ccca8c6954172b07ffd9cae', 'type' => 'wordpress-plugin', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -11,9 +11,9 @@ ), 'versions' => array( 'automattic/jetpack-autoloader' => array( - 'pretty_version' => 'v5.0.9', - 'version' => '5.0.9.0', - 'reference' => 'c9e9b82cc515d9ed093fa0ff21245f277aeceb4e', + 'pretty_version' => 'v5.0.10', + 'version' => '5.0.10.0', + 'reference' => 'f7e2142139b925fac0a167ed0cbc71e2592bd9a0', 'type' => 'composer-plugin', 'install_path' => __DIR__ . '/../automattic/jetpack-autoloader', 'aliases' => array(), @@ -29,9 +29,9 @@ 'dev_requirement' => false, ), 'woocommerce/woocommerce-subscriptions' => array( - 'pretty_version' => 'dev-release/7.8.2', - 'version' => 'dev-release/7.8.2', - 'reference' => '07e1321a082f8114c8b480d9ae8d7f1f4eb56922', + 'pretty_version' => 'dev-release/7.9.0', + 'version' => 'dev-release/7.9.0', + 'reference' => '9114ff6422e5a37b9ccca8c6954172b07ffd9cae', 'type' => 'wordpress-plugin', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), diff --git a/vendor/composer/jetpack_autoload_classmap.php b/vendor/composer/jetpack_autoload_classmap.php index 640de60..1bf538f 100644 --- a/vendor/composer/jetpack_autoload_classmap.php +++ b/vendor/composer/jetpack_autoload_classmap.php @@ -7,35 +7,35 @@ $baseDir = dirname($vendorDir); return array( 'Autoloader' => array( - 'version' => '5.0.9', + 'version' => '5.0.10', 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/class-autoloader.php' ), 'Autoloader_Handler' => array( - 'version' => '5.0.9', + 'version' => '5.0.10', 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/class-autoloader-handler.php' ), 'Autoloader_Locator' => array( - 'version' => '5.0.9', + 'version' => '5.0.10', 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/class-autoloader-locator.php' ), 'Automattic\\Jetpack\\Autoloader\\AutoloadFileWriter' => array( - 'version' => '5.0.9', + 'version' => '5.0.10', 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/AutoloadFileWriter.php' ), 'Automattic\\Jetpack\\Autoloader\\AutoloadGenerator' => array( - 'version' => '5.0.9', + 'version' => '5.0.10', 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/AutoloadGenerator.php' ), 'Automattic\\Jetpack\\Autoloader\\AutoloadProcessor' => array( - 'version' => '5.0.9', + 'version' => '5.0.10', 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/AutoloadProcessor.php' ), 'Automattic\\Jetpack\\Autoloader\\CustomAutoloaderPlugin' => array( - 'version' => '5.0.9', + 'version' => '5.0.10', 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/CustomAutoloaderPlugin.php' ), 'Automattic\\Jetpack\\Autoloader\\ManifestGenerator' => array( - 'version' => '5.0.9', + 'version' => '5.0.10', 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/ManifestGenerator.php' ), 'Composer\\Installers\\AglInstaller' => array( @@ -435,143 +435,143 @@ return array( 'path' => $vendorDir . '/composer/installers/src/Composer/Installers/ZikulaInstaller.php' ), 'Container' => array( - 'version' => '5.0.9', + 'version' => '5.0.10', 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/class-container.php' ), 'Hook_Manager' => array( - 'version' => '5.0.9', + 'version' => '5.0.10', 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/class-hook-manager.php' ), 'Latest_Autoloader_Guard' => array( - 'version' => '5.0.9', + 'version' => '5.0.10', 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/class-latest-autoloader-guard.php' ), 'Manifest_Reader' => array( - 'version' => '5.0.9', + 'version' => '5.0.10', 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/class-manifest-reader.php' ), 'PHP_Autoloader' => array( - 'version' => '5.0.9', + 'version' => '5.0.10', 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/class-php-autoloader.php' ), 'Path_Processor' => array( - 'version' => '5.0.9', + 'version' => '5.0.10', 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/class-path-processor.php' ), 'Plugin_Locator' => array( - 'version' => '5.0.9', + 'version' => '5.0.10', 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/class-plugin-locator.php' ), 'Plugins_Handler' => array( - 'version' => '5.0.9', + 'version' => '5.0.10', 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/class-plugins-handler.php' ), 'Shutdown_Handler' => array( - 'version' => '5.0.9', + 'version' => '5.0.10', 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/class-shutdown-handler.php' ), 'Version_Loader' => array( - 'version' => '5.0.9', + 'version' => '5.0.10', 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/class-version-loader.php' ), 'Version_Selector' => array( - 'version' => '5.0.9', + 'version' => '5.0.10', 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/class-version-selector.php' ), 'WCSG_Admin' => array( - 'version' => 'dev-release/7.8.2', + 'version' => 'dev-release/7.9.0', 'path' => $baseDir . '/includes/gifting/class-wcsg-admin.php' ), 'WCSG_Admin_Order' => array( - 'version' => 'dev-release/7.8.2', + 'version' => 'dev-release/7.9.0', 'path' => $baseDir . '/includes/gifting/admin/class-wcsg-admin-order.php' ), 'WCSG_Admin_System_Status' => array( - 'version' => 'dev-release/7.8.2', + 'version' => 'dev-release/7.9.0', 'path' => $baseDir . '/includes/gifting/class-wcsg-admin-system-status.php' ), 'WCSG_Admin_Welcome_Announcement' => array( - 'version' => 'dev-release/7.8.2', + 'version' => 'dev-release/7.9.0', 'path' => $baseDir . '/includes/gifting/class-wcsg-admin-welcome-announcement.php' ), 'WCSG_Blocks_Integration' => array( - 'version' => 'dev-release/7.8.2', + 'version' => 'dev-release/7.9.0', 'path' => $baseDir . '/includes/gifting/class-wcsg-blocks-integration.php' ), 'WCSG_Cart' => array( - 'version' => 'dev-release/7.8.2', + 'version' => 'dev-release/7.9.0', 'path' => $baseDir . '/includes/gifting/class-wcsg-cart.php' ), 'WCSG_Checkout' => array( - 'version' => 'dev-release/7.8.2', + 'version' => 'dev-release/7.9.0', 'path' => $baseDir . '/includes/gifting/class-wcsg-checkout.php' ), 'WCSG_Download_Handler' => array( - 'version' => 'dev-release/7.8.2', + 'version' => 'dev-release/7.9.0', 'path' => $baseDir . '/includes/gifting/class-wcsg-download-handler.php' ), 'WCSG_Email' => array( - 'version' => 'dev-release/7.8.2', + 'version' => 'dev-release/7.9.0', 'path' => $baseDir . '/includes/gifting/class-wcsg-email.php' ), 'WCSG_Email_Completed_Renewal_Order' => array( - 'version' => 'dev-release/7.8.2', + 'version' => 'dev-release/7.9.0', 'path' => $baseDir . '/includes/gifting/emails/class-wcsg-email-completed-renewal-order.php' ), 'WCSG_Email_Customer_New_Account' => array( - 'version' => 'dev-release/7.8.2', + 'version' => 'dev-release/7.9.0', 'path' => $baseDir . '/includes/gifting/emails/class-wcsg-email-customer-new-account.php' ), 'WCSG_Email_Processing_Renewal_Order' => array( - 'version' => 'dev-release/7.8.2', + 'version' => 'dev-release/7.9.0', 'path' => $baseDir . '/includes/gifting/emails/class-wcsg-email-processing-renewal-order.php' ), 'WCSG_Email_Recipient_New_Initial_Order' => array( - 'version' => 'dev-release/7.8.2', + 'version' => 'dev-release/7.9.0', 'path' => $baseDir . '/includes/gifting/emails/class-wcsg-email-recipient-new-initial-order.php' ), 'WCSG_Memberships_Integration' => array( - 'version' => 'dev-release/7.8.2', + 'version' => 'dev-release/7.9.0', 'path' => $baseDir . '/includes/gifting/class-wcsg-memberships-integration.php' ), 'WCSG_Privacy' => array( - 'version' => 'dev-release/7.8.2', + 'version' => 'dev-release/7.9.0', 'path' => $baseDir . '/includes/gifting/privacy/class-wcsg-privacy.php' ), 'WCSG_Privacy_Erasers' => array( - 'version' => 'dev-release/7.8.2', + 'version' => 'dev-release/7.9.0', 'path' => $baseDir . '/includes/gifting/privacy/class-wcsg-privacy-erasers.php' ), 'WCSG_Privacy_Exporters' => array( - 'version' => 'dev-release/7.8.2', + 'version' => 'dev-release/7.9.0', 'path' => $baseDir . '/includes/gifting/privacy/class-wcsg-privacy-exporters.php' ), 'WCSG_Product' => array( - 'version' => 'dev-release/7.8.2', + 'version' => 'dev-release/7.9.0', 'path' => $baseDir . '/includes/gifting/class-wcsg-product.php' ), 'WCSG_Query' => array( - 'version' => 'dev-release/7.8.2', + 'version' => 'dev-release/7.9.0', 'path' => $baseDir . '/includes/gifting/class-wcsg-query.php' ), 'WCSG_Recipient_Addresses' => array( - 'version' => 'dev-release/7.8.2', + 'version' => 'dev-release/7.9.0', 'path' => $baseDir . '/includes/gifting/class-wcsg-recipient-addresses.php' ), 'WCSG_Recipient_Details' => array( - 'version' => 'dev-release/7.8.2', + 'version' => 'dev-release/7.9.0', 'path' => $baseDir . '/includes/gifting/class-wcsg-recipient-details.php' ), 'WCSG_Recipient_Management' => array( - 'version' => 'dev-release/7.8.2', + 'version' => 'dev-release/7.9.0', 'path' => $baseDir . '/includes/gifting/class-wcsg-recipient-management.php' ), 'WCSG_Template_Loader' => array( - 'version' => 'dev-release/7.8.2', + 'version' => 'dev-release/7.9.0', 'path' => $baseDir . '/includes/gifting/class-wcsg-template-loader.php' ), 'WCS_Gifting' => array( - 'version' => 'dev-release/7.8.2', + 'version' => 'dev-release/7.9.0', 'path' => $baseDir . '/includes/gifting/class-wcs-gifting.php' ), ); diff --git a/vendor/composer/platform_check.php b/vendor/composer/platform_check.php index 589e9e7..6cd6b53 100644 --- a/vendor/composer/platform_check.php +++ b/vendor/composer/platform_check.php @@ -19,8 +19,7 @@ if ($issues) { echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL; } } - trigger_error( - 'Composer detected issues in your platform: ' . implode(' ', $issues), - E_USER_ERROR + throw new \RuntimeException( + 'Composer detected issues in your platform: ' . implode(' ', $issues) ); } diff --git a/vendor/jetpack-autoloader/class-autoloader-handler.php b/vendor/jetpack-autoloader/class-autoloader-handler.php index 4170b46..c6594ec 100644 --- a/vendor/jetpack-autoloader/class-autoloader-handler.php +++ b/vendor/jetpack-autoloader/class-autoloader-handler.php @@ -5,7 +5,7 @@ * @package automattic/jetpack-autoloader */ -namespace Automattic\Jetpack\Autoloader\jp32625eaf0064549a4f20b6231a37a93c\al5_0_9; +namespace Automattic\Jetpack\Autoloader\jp32625eaf0064549a4f20b6231a37a93c\al5_0_10; // phpcs:ignore diff --git a/vendor/jetpack-autoloader/class-autoloader-locator.php b/vendor/jetpack-autoloader/class-autoloader-locator.php index 36761ca..bc85b91 100644 --- a/vendor/jetpack-autoloader/class-autoloader-locator.php +++ b/vendor/jetpack-autoloader/class-autoloader-locator.php @@ -5,7 +5,7 @@ * @package automattic/jetpack-autoloader */ -namespace Automattic\Jetpack\Autoloader\jp32625eaf0064549a4f20b6231a37a93c\al5_0_9; +namespace Automattic\Jetpack\Autoloader\jp32625eaf0064549a4f20b6231a37a93c\al5_0_10; // phpcs:ignore diff --git a/vendor/jetpack-autoloader/class-autoloader.php b/vendor/jetpack-autoloader/class-autoloader.php index 55bb4f8..5f9bf5a 100644 --- a/vendor/jetpack-autoloader/class-autoloader.php +++ b/vendor/jetpack-autoloader/class-autoloader.php @@ -5,7 +5,7 @@ * @package automattic/jetpack-autoloader */ -namespace Automattic\Jetpack\Autoloader\jp32625eaf0064549a4f20b6231a37a93c\al5_0_9; +namespace Automattic\Jetpack\Autoloader\jp32625eaf0064549a4f20b6231a37a93c\al5_0_10; // phpcs:ignore diff --git a/vendor/jetpack-autoloader/class-container.php b/vendor/jetpack-autoloader/class-container.php index 203ba52..f547865 100644 --- a/vendor/jetpack-autoloader/class-container.php +++ b/vendor/jetpack-autoloader/class-container.php @@ -5,7 +5,7 @@ * @package automattic/jetpack-autoloader */ -namespace Automattic\Jetpack\Autoloader\jp32625eaf0064549a4f20b6231a37a93c\al5_0_9; +namespace Automattic\Jetpack\Autoloader\jp32625eaf0064549a4f20b6231a37a93c\al5_0_10; // phpcs:ignore diff --git a/vendor/jetpack-autoloader/class-hook-manager.php b/vendor/jetpack-autoloader/class-hook-manager.php index 204f807..31f8345 100644 --- a/vendor/jetpack-autoloader/class-hook-manager.php +++ b/vendor/jetpack-autoloader/class-hook-manager.php @@ -5,7 +5,7 @@ * @package automattic/jetpack-autoloader */ -namespace Automattic\Jetpack\Autoloader\jp32625eaf0064549a4f20b6231a37a93c\al5_0_9; +namespace Automattic\Jetpack\Autoloader\jp32625eaf0064549a4f20b6231a37a93c\al5_0_10; // phpcs:ignore diff --git a/vendor/jetpack-autoloader/class-latest-autoloader-guard.php b/vendor/jetpack-autoloader/class-latest-autoloader-guard.php index 62b27cd..dd12d87 100644 --- a/vendor/jetpack-autoloader/class-latest-autoloader-guard.php +++ b/vendor/jetpack-autoloader/class-latest-autoloader-guard.php @@ -5,7 +5,7 @@ * @package automattic/jetpack-autoloader */ -namespace Automattic\Jetpack\Autoloader\jp32625eaf0064549a4f20b6231a37a93c\al5_0_9; +namespace Automattic\Jetpack\Autoloader\jp32625eaf0064549a4f20b6231a37a93c\al5_0_10; // phpcs:ignore diff --git a/vendor/jetpack-autoloader/class-manifest-reader.php b/vendor/jetpack-autoloader/class-manifest-reader.php index 81c9ed8..38b8671 100644 --- a/vendor/jetpack-autoloader/class-manifest-reader.php +++ b/vendor/jetpack-autoloader/class-manifest-reader.php @@ -5,7 +5,7 @@ * @package automattic/jetpack-autoloader */ -namespace Automattic\Jetpack\Autoloader\jp32625eaf0064549a4f20b6231a37a93c\al5_0_9; +namespace Automattic\Jetpack\Autoloader\jp32625eaf0064549a4f20b6231a37a93c\al5_0_10; // phpcs:ignore diff --git a/vendor/jetpack-autoloader/class-path-processor.php b/vendor/jetpack-autoloader/class-path-processor.php index 6132bc8..e70bf26 100644 --- a/vendor/jetpack-autoloader/class-path-processor.php +++ b/vendor/jetpack-autoloader/class-path-processor.php @@ -5,7 +5,7 @@ * @package automattic/jetpack-autoloader */ -namespace Automattic\Jetpack\Autoloader\jp32625eaf0064549a4f20b6231a37a93c\al5_0_9; +namespace Automattic\Jetpack\Autoloader\jp32625eaf0064549a4f20b6231a37a93c\al5_0_10; // phpcs:ignore diff --git a/vendor/jetpack-autoloader/class-php-autoloader.php b/vendor/jetpack-autoloader/class-php-autoloader.php index fe6aea4..89088cb 100644 --- a/vendor/jetpack-autoloader/class-php-autoloader.php +++ b/vendor/jetpack-autoloader/class-php-autoloader.php @@ -5,7 +5,7 @@ * @package automattic/jetpack-autoloader */ -namespace Automattic\Jetpack\Autoloader\jp32625eaf0064549a4f20b6231a37a93c\al5_0_9; +namespace Automattic\Jetpack\Autoloader\jp32625eaf0064549a4f20b6231a37a93c\al5_0_10; // phpcs:ignore diff --git a/vendor/jetpack-autoloader/class-plugin-locator.php b/vendor/jetpack-autoloader/class-plugin-locator.php index 98cc607..8241cda 100644 --- a/vendor/jetpack-autoloader/class-plugin-locator.php +++ b/vendor/jetpack-autoloader/class-plugin-locator.php @@ -5,7 +5,7 @@ * @package automattic/jetpack-autoloader */ -namespace Automattic\Jetpack\Autoloader\jp32625eaf0064549a4f20b6231a37a93c\al5_0_9; +namespace Automattic\Jetpack\Autoloader\jp32625eaf0064549a4f20b6231a37a93c\al5_0_10; // phpcs:ignore diff --git a/vendor/jetpack-autoloader/class-plugins-handler.php b/vendor/jetpack-autoloader/class-plugins-handler.php index febd5ff..55bdc6a 100644 --- a/vendor/jetpack-autoloader/class-plugins-handler.php +++ b/vendor/jetpack-autoloader/class-plugins-handler.php @@ -5,7 +5,7 @@ * @package automattic/jetpack-autoloader */ -namespace Automattic\Jetpack\Autoloader\jp32625eaf0064549a4f20b6231a37a93c\al5_0_9; +namespace Automattic\Jetpack\Autoloader\jp32625eaf0064549a4f20b6231a37a93c\al5_0_10; // phpcs:ignore diff --git a/vendor/jetpack-autoloader/class-shutdown-handler.php b/vendor/jetpack-autoloader/class-shutdown-handler.php index eebd09a..6332d58 100644 --- a/vendor/jetpack-autoloader/class-shutdown-handler.php +++ b/vendor/jetpack-autoloader/class-shutdown-handler.php @@ -5,7 +5,7 @@ * @package automattic/jetpack-autoloader */ -namespace Automattic\Jetpack\Autoloader\jp32625eaf0064549a4f20b6231a37a93c\al5_0_9; +namespace Automattic\Jetpack\Autoloader\jp32625eaf0064549a4f20b6231a37a93c\al5_0_10; // phpcs:ignore diff --git a/vendor/jetpack-autoloader/class-version-loader.php b/vendor/jetpack-autoloader/class-version-loader.php index 537a550..65003c4 100644 --- a/vendor/jetpack-autoloader/class-version-loader.php +++ b/vendor/jetpack-autoloader/class-version-loader.php @@ -5,7 +5,7 @@ * @package automattic/jetpack-autoloader */ -namespace Automattic\Jetpack\Autoloader\jp32625eaf0064549a4f20b6231a37a93c\al5_0_9; +namespace Automattic\Jetpack\Autoloader\jp32625eaf0064549a4f20b6231a37a93c\al5_0_10; // phpcs:ignore diff --git a/vendor/jetpack-autoloader/class-version-selector.php b/vendor/jetpack-autoloader/class-version-selector.php index c314f7d..1e224a9 100644 --- a/vendor/jetpack-autoloader/class-version-selector.php +++ b/vendor/jetpack-autoloader/class-version-selector.php @@ -5,7 +5,7 @@ * @package automattic/jetpack-autoloader */ -namespace Automattic\Jetpack\Autoloader\jp32625eaf0064549a4f20b6231a37a93c\al5_0_9; +namespace Automattic\Jetpack\Autoloader\jp32625eaf0064549a4f20b6231a37a93c\al5_0_10; // phpcs:ignore diff --git a/woocommerce-subscriptions.php b/woocommerce-subscriptions.php index d1e1896..3577225 100644 --- a/woocommerce-subscriptions.php +++ b/woocommerce-subscriptions.php @@ -5,11 +5,11 @@ * Description: Sell products and services with recurring payments in your WooCommerce Store. * Author: WooCommerce * Author URI: https://woocommerce.com/ - * Version: 7.8.2 + * Version: 7.9.0 * Requires Plugins: woocommerce * - * WC requires at least: 9.8.5 - * WC tested up to: 9.9.5 + * WC requires at least: 10.0.0 + * WC tested up to: 10.2.0 * * License: GNU General Public License v3.0 * License URI: http://www.gnu.org/licenses/gpl-3.0.html @@ -74,7 +74,7 @@ class WC_Subscriptions { public static $plugin_file = __FILE__; /** @var string */ - public static $version = '7.8.2'; // WRCS: DEFINED_VERSION. + public static $version = '7.9.0'; // WRCS: DEFINED_VERSION. /** @var string */ public static $wc_minimum_supported_version = '7.7';