diff --git a/.changeset/silent-turtles-walk.md b/.changeset/silent-turtles-walk.md new file mode 100644 index 0000000000..543bf22035 --- /dev/null +++ b/.changeset/silent-turtles-walk.md @@ -0,0 +1,5 @@ +--- +'@adyen/adyen-web': minor +--- + +Feature: New PayTo payment method diff --git a/packages/lib/.size-limit.cjs b/packages/lib/.size-limit.cjs index b0ba0b52f9..d54dd11749 100644 --- a/packages/lib/.size-limit.cjs +++ b/packages/lib/.size-limit.cjs @@ -5,8 +5,8 @@ module.exports = [ { name: 'UMD', path: 'dist/umd/adyen.js', - limit: '110 KB', - running: false, + limit: '120 KB', + running: false }, /** * 'auto' bundle with all Components included, excluding Languages @@ -14,9 +14,9 @@ module.exports = [ { name: 'Auto', path: 'auto/auto.js', - import: "{ AdyenCheckout, Dropin }", - limit: '110 KB', - running: false, + import: '{ AdyenCheckout, Dropin }', + limit: '120 KB', + running: false }, /** * ES modules (tree-shake) @@ -24,22 +24,22 @@ module.exports = [ { name: 'ESM - Core', path: 'dist/es/index.js', - import: "{ AdyenCheckout }", + import: '{ AdyenCheckout }', limit: '30 KB', - running: false, + running: false }, { name: 'ESM - Core + Card', path: 'dist/es/index.js', - import: "{ AdyenCheckout, Card }", + import: '{ AdyenCheckout, Card }', limit: '65 KB', - running: false, + running: false }, { name: 'ESM - Core + Dropin with Card', path: 'dist/es/index.js', - import: "{ AdyenCheckout, Dropin, Card }", + import: '{ AdyenCheckout, Dropin, Card }', limit: '70 KB', - running: false, - }, -] + running: false + } +]; diff --git a/packages/lib/.storybook/main.ts b/packages/lib/.storybook/main.ts index 6c05fa441b..31ae567154 100644 --- a/packages/lib/.storybook/main.ts +++ b/packages/lib/.storybook/main.ts @@ -26,6 +26,8 @@ const config: StorybookConfig = { options: {} }, + // public added for msw: https://github.com/mswjs/msw-storybook-addon?tab=readme-ov-file#start-storybook + // '../storybook/public' staticDirs: ['../storybook/assets'], viteFinal(config) { diff --git a/packages/lib/.storybook/preview.tsx b/packages/lib/.storybook/preview.tsx index 94f316714d..938ce76ffb 100644 --- a/packages/lib/.storybook/preview.tsx +++ b/packages/lib/.storybook/preview.tsx @@ -1,6 +1,12 @@ import './main.css'; import { Preview } from '@storybook/preact'; import { DEFAULT_COUNTRY_CODE, DEFAULT_SHOPPER_LOCALE, DEFAULT_AMOUNT_VALUE, SHOPPER_LOCALES } from '../storybook/config/commonConfig'; +//import { initialize as initializeMSW, mswLoader } from 'msw-storybook-addon'; + +// from the docs: https://github.com/mswjs/msw-storybook-addon +// initializeMSW({ +// onUnhandledRequest: 'bypass' +// }); const preview: Preview = { argTypes: { @@ -28,6 +34,7 @@ const preview: Preview = { amount: DEFAULT_AMOUNT_VALUE, showPayButton: true } + //loaders: [mswLoader] }; export default preview; diff --git a/packages/lib/config/setupTests.ts b/packages/lib/config/setupTests.ts index 727154d458..fe237dc23f 100644 --- a/packages/lib/config/setupTests.ts +++ b/packages/lib/config/setupTests.ts @@ -10,5 +10,6 @@ import './testMocks/analyticsMock'; // eslint-disable-next-line import/no-extraneous-dependencies import 'whatwg-fetch'; import './testMocks/srPanelMock'; +import './testMocks/commonCorePropsMock'; configure({ adapter: new Adapter() }); diff --git a/packages/lib/config/testMocks/commonCorePropsMock.ts b/packages/lib/config/testMocks/commonCorePropsMock.ts new file mode 100644 index 0000000000..6c673ec5d8 --- /dev/null +++ b/packages/lib/config/testMocks/commonCorePropsMock.ts @@ -0,0 +1,6 @@ +global.commonCoreProps = { + clientKey: 'mock_clientKey', + loadingContext: 'https://checkoutshopper-test.adyen.com/checkoutshopper/', + i18n: global.i18n, + modules: { analytics: global.analytics, resources: global.resources, srPanel: global.srPanel } +}; diff --git a/packages/lib/package.json b/packages/lib/package.json index f81df9d888..fdef408e45 100644 --- a/packages/lib/package.json +++ b/packages/lib/package.json @@ -124,6 +124,7 @@ "jest-mock-extended": "3.0.7", "lint-staged": "15.3.0", "msw": "^2.6.4", + "msw-storybook-addon": "^2.0.4", "postcss": "8.4.49", "rollup": "4.29.1", "rollup-plugin-dts": "6.1.1", @@ -154,5 +155,10 @@ "*.{js,jsx,ts,tsx}": "eslint", "*.{scss,css}": "stylelint", "*.{js,jsx,ts,tsx,html,md}": "prettier --write" + }, + "msw": { + "workerDirectory": [ + "storybook/public" + ] } -} +} \ No newline at end of file diff --git a/packages/lib/src/components/MBWay/MBWay.tsx b/packages/lib/src/components/MBWay/MBWay.tsx index 3575aeea5a..cad60dcb21 100644 --- a/packages/lib/src/components/MBWay/MBWay.tsx +++ b/packages/lib/src/components/MBWay/MBWay.tsx @@ -83,6 +83,7 @@ export class MBWayElement extends UIElement { this.componentRef = ref; }} {...this.props} + setComponentRef={this.setComponentRef} onChange={this.setState} onSubmit={this.submit} payButton={this.payButton} diff --git a/packages/lib/src/components/MBWay/components/MBWayInput/MBWayInput.tsx b/packages/lib/src/components/MBWay/components/MBWayInput/MBWayInput.tsx index a609ec195a..3b96ff97e2 100644 --- a/packages/lib/src/components/MBWay/components/MBWayInput/MBWayInput.tsx +++ b/packages/lib/src/components/MBWay/components/MBWayInput/MBWayInput.tsx @@ -3,7 +3,7 @@ import { useState, useRef } from 'preact/hooks'; import { useCoreContext } from '../../../../core/Context/CoreProvider'; import { MBWayInputProps } from './types'; import './MBWayInput.scss'; -import PhoneInput from '../../../internal/PhoneInput'; +import PhoneInputForm from '../../../internal/PhoneInput'; import LoadingWrapper from '../../../internal/LoadingWrapper'; import usePhonePrefixes from '../../../internal/PhoneInput/usePhonePrefixes'; @@ -17,7 +17,6 @@ function MBWayInput(props: MBWayInputProps) { const [status, setStatus] = useState('ready'); this.setStatus = setStatus; - this.showValidation = phoneInputRef?.current?.triggerValidation; const { loadingStatus: prefixLoadingStatus, phonePrefixes } = usePhonePrefixes({ allowedCountries, loadingContext, handleError: props.onError }); @@ -28,7 +27,14 @@ function MBWayInput(props: MBWayInputProps) { return (
- + {props.showPayButton && props.payButton({ status, label: i18n.get('confirmPurchase') })}
diff --git a/packages/lib/src/components/MBWay/components/MBWayInput/types.ts b/packages/lib/src/components/MBWay/components/MBWayInput/types.ts index 704ea04f85..7ccbbbbf9e 100644 --- a/packages/lib/src/components/MBWay/components/MBWayInput/types.ts +++ b/packages/lib/src/components/MBWay/components/MBWayInput/types.ts @@ -1,4 +1,4 @@ -import { UIElementProps } from '../../../internal/UIElement/types'; +import { ComponentMethodsRef, UIElementProps } from '../../../internal/UIElement/types'; export interface MBWayInputData { telephoneNumber?: string; @@ -13,6 +13,7 @@ export interface MBWayInputProps extends UIElementProps { allowedCountries?: string[]; requiredFields?: string[]; phoneNumberKey?: string; + setComponentRef: (ref: ComponentMethodsRef) => void; } export interface MBWayDataState { diff --git a/packages/lib/src/components/PayTo/PayTo.test.ts b/packages/lib/src/components/PayTo/PayTo.test.ts new file mode 100644 index 0000000000..2c9ec92e46 --- /dev/null +++ b/packages/lib/src/components/PayTo/PayTo.test.ts @@ -0,0 +1,271 @@ +import { render, screen } from '@testing-library/preact'; +import PayTo from './PayTo'; +import userEvent from '@testing-library/user-event'; +import getDataset from '../../core/Services/get-dataset'; +import { MandateType } from './types'; +import { setupServer } from 'msw/node'; +import { http, HttpResponse } from 'msw'; + +jest.mock('../../core/Services/get-dataset'); +(getDataset as jest.Mock).mockImplementation( + jest.fn(() => { + return Promise.resolve([{ id: 'AUS', prefix: '+61' }]); + }) +); + +const MOCK_MANDATE: MandateType = { + amount: '4001', // [Mandatory] for PayTo - Mandate Amount field + amountRule: 'exact', // [Mandatory] for PayTo - Needs to be Localised + endsAt: '2024-12-31', // [Mandatory] for PayTo - Date format + frequency: 'adhoc', // [Mandatory] for PayTo - Needs to be Localised + remarks: 'testThroughFlow1', // [Mandatory] for PayTo - Needs to be Localised as "Description" + count: '3', // [Optional] will be returned only if the merchant sends it + startsAt: '2024-11-13' // [Optional] will be returned only if the merchant sends it +}; + +describe('PayTo', () => { + let onSubmitMock; + let user; + + beforeEach(() => { + onSubmitMock = jest.fn(); + user = userEvent.setup(); + }); + + test('should render payment and show PayID page', async () => { + const payTo = new PayTo(global.core, { + i18n: global.i18n, + mandate: MOCK_MANDATE, + loadingContext: 'test', + modules: { resources: global.resources } + }); + + render(payTo.render()); + expect(await screen.findByText(/Enter the PayID and account details that are connected to your Payto account./i)).toBeTruthy(); + expect(await screen.findByLabelText(/Prefix/i)).toBeTruthy(); + expect(await screen.findByLabelText(/Mobile number/i)).toBeTruthy(); + expect(await screen.findByLabelText(/First name/i)).toBeTruthy(); + expect(await screen.findByLabelText(/Last name/i)).toBeTruthy(); + }); + + test('should render continue button', async () => { + const payTo = new PayTo(global.core, { + onSubmit: onSubmitMock, + mandate: MOCK_MANDATE, + i18n: global.i18n, + loadingContext: 'test', + modules: { resources: global.resources } + }); + + render(payTo.render()); + const button = await screen.findByRole('button', { name: 'Continue' }); + + // should not trigger the submit and render validation + await user.click(button); + expect(onSubmitMock).toHaveBeenCalledTimes(0); + + expect(await screen.findByText('Invalid mobile number')).toBeTruthy(); + expect(await screen.findByText('Enter your first name')).toBeTruthy(); + expect(await screen.findByText('Enter your last name')).toBeTruthy(); + }); + + test('should change to different identifier when selected', async () => { + const payTo = new PayTo(global.core, { + onSubmit: onSubmitMock, + mandate: MOCK_MANDATE, + i18n: global.i18n, + loadingContext: 'test', + modules: { resources: global.resources }, + showPayButton: false + }); + + render(payTo.render()); + + await user.click(screen.queryByRole('button', { name: 'Mobile' })); + await user.click(screen.queryByRole('option', { name: /Email/i })); + + expect(screen.queryByLabelText(/Prefix/i)).toBeFalsy(); + expect(screen.getByLabelText(/Email/i)).toBeTruthy(); + }); + + describe('PayTo await screen', () => { + const server = setupServer( + http.post('https://checkoutshopper-test.adyen.com/checkoutshopper/services/PaymentInitiation/v1/status', () => { + return HttpResponse.json({ + payload: 'mockPaymentData', + resultCode: 'pending', + type: 'pending' + }); + }) + ); + + beforeAll(() => server.listen()); + afterEach(() => server.resetHandlers()); + afterAll(() => server.close()); + + test('should render await screen and transaction and mandate amount should be different', async () => { + const payTo = new PayTo(global.core, { + ...global.commonCoreProps, + amount: { + value: '2000', + currency: 'AUD' + }, + mandate: MOCK_MANDATE, + paymentData: 'mockblob', + payee: 'Mock Payee' + }); + + render(payTo.render()); + + // amount from transaction + expect(await screen.findByText('A$20.00')).toBeTruthy(); + + // for context why we are not using roles here: + // https://github.com/testing-library/dom-testing-library/issues/140 + + // eslint-disable-next-line testing-library/no-node-access + const mandateAmount = screen.getByText('Amount').nextSibling; + expect(mandateAmount).toHaveTextContent('A$40.01'); + }); + + test('should render await screen and amount should say up to if amountRule is max', async () => { + const payTo = new PayTo(global.core, { + ...global.commonCoreProps, + amount: { + value: '2000', + currency: 'AUD' + }, + mandate: { + ...MOCK_MANDATE, + amountRule: 'max' + }, + paymentData: 'mockblob', + payee: 'Mock Payee' + }); + + render(payTo.render()); + + // amount from transaction + expect(await screen.findByText('A$20.00')).toBeTruthy(); + + // eslint-disable-next-line testing-library/no-node-access + const mandateAmount = screen.getByText('Amount').nextSibling; + expect(mandateAmount).toHaveTextContent('Up to A$40.01 per transaction'); + }); + + test('should render await screen and show correct frequency (Fortnightly)', async () => { + const payTo = new PayTo(global.core, { + ...global.commonCoreProps, + amount: { + value: '2000', + currency: 'AUD' + }, + mandate: { ...MOCK_MANDATE, frequency: 'biWeekly' }, + paymentData: 'mockblob', + payee: 'Mock Payee' + }); + + render(payTo.render()); + + const mandateFrequency = await screen.findByText('Frequency'); + // eslint-disable-next-line testing-library/no-node-access + expect(mandateFrequency.nextSibling).toHaveTextContent('3 payment(s) Fortnightly'); + }); + + test('should render await screen and show correct frequency (Yearly)', async () => { + const payTo = new PayTo(global.core, { + ...global.commonCoreProps, + amount: { + value: '2000', + currency: 'AUD' + }, + mandate: { ...MOCK_MANDATE, frequency: 'yearly' }, + paymentData: 'mockblob', + payee: 'Mock Payee' + }); + + render(payTo.render()); + + const mandateFrequency = await screen.findByText('Frequency'); + // eslint-disable-next-line testing-library/no-node-access + expect(mandateFrequency.nextSibling).toHaveTextContent('3 payment(s) Yearly'); + }); + + test('should render await screen and show correct frequency adhoc with count', async () => { + const payTo = new PayTo(global.core, { + ...global.commonCoreProps, + amount: { + value: '2000', + currency: 'AUD' + }, + mandate: { ...MOCK_MANDATE, frequency: 'adhoc' }, + paymentData: 'mockblob', + payee: 'Mock Payee' + }); + + render(payTo.render()); + + const mandateFrequency = await screen.findByText('Frequency'); + // eslint-disable-next-line testing-library/no-node-access + expect(mandateFrequency.nextSibling).toHaveTextContent('3 time(s)'); + }); + + test('should render await screen and show correct frequency adhoc without count', async () => { + const payTo = new PayTo(global.core, { + ...global.commonCoreProps, + amount: { + value: '2000', + currency: 'AUD' + }, + mandate: { ...MOCK_MANDATE, count: null, frequency: 'adhoc' }, + paymentData: 'mockblob', + payee: 'Mock Payee' + }); + + render(payTo.render()); + + const mandateFrequency = await screen.findByText('Frequency'); + // eslint-disable-next-line testing-library/no-node-access + expect(mandateFrequency.nextSibling).toHaveTextContent('Ad Hoc'); + }); + + // TODO waiting for feedback for what should be the result of this test case + test.skip('should render await screen and show correct frequency daily without count', async () => { + const payTo = new PayTo(global.core, { + ...global.commonCoreProps, + amount: { + value: '2000', + currency: 'AUD' + }, + mandate: { ...MOCK_MANDATE, count: null, frequency: 'daily' }, + paymentData: 'mockblob', + payee: 'Mock Payee' + }); + + render(payTo.render()); + + const mandateFrequency = await screen.findByText('Frequency'); + // eslint-disable-next-line testing-library/no-node-access + expect(mandateFrequency.nextSibling).toHaveTextContent('Ad Hoc'); + }); + + test('should render await screen and show the correct payee', async () => { + const payTo = new PayTo(global.core, { + ...global.commonCoreProps, + amount: { + value: '2000', + currency: 'AUD' + }, + mandate: { ...MOCK_MANDATE, count: null, frequency: 'daily' }, + paymentData: 'mockblob', + payee: 'Mock Payee' + }); + + render(payTo.render()); + + const mandateFrequency = await screen.findByText('Frequency'); + // eslint-disable-next-line testing-library/no-node-access + expect(mandateFrequency.nextSibling).toHaveTextContent('Ad Hoc'); + }); + }); +}); diff --git a/packages/lib/src/components/PayTo/PayTo.tsx b/packages/lib/src/components/PayTo/PayTo.tsx new file mode 100644 index 0000000000..3a3eda5440 --- /dev/null +++ b/packages/lib/src/components/PayTo/PayTo.tsx @@ -0,0 +1,135 @@ +import { h } from 'preact'; +import UIElement from '../internal/UIElement/UIElement'; +import { CoreProvider } from '../../core/Context/CoreProvider'; +import Await from '../../components/internal/Await'; +import SRPanelProvider from '../../core/Errors/SRPanelProvider'; +import { TxVariants } from '../tx-variants'; +import { PayToIdentifierEnum } from './components/IdentifierSelector'; +import PayToComponent from './components/PayToComponent'; +import { PayToInstructions } from './components/PayToInstructions'; +import MandateSummary from './components/MandateSummary'; +import { PayToConfiguration, PayToData } from './types'; + +/* +Await Config (previously in its own file) + */ +const COUNTDOWN_MINUTES = 15; // min +const THROTTLE_TIME = 60000; // ms +const THROTTLE_INTERVAL = 10000; // ms + +const config = { + COUNTDOWN_MINUTES, + THROTTLE_TIME, + THROTTLE_INTERVAL, + showCountdownTimer: false +}; + +const getAccountIdentifier = (state: PayToData) => { + // if it's BSB Input type merge bankAccount with BSB + if (state.selectedInput === 'bsb-option') { + return `${state.bsb}-${state.bankAccountNumber}`; + } else if (state.selectedInput === 'payid-option') { + // otherwise use the option in the dropdown + switch (state.selectedIdentifier) { + case PayToIdentifierEnum.email: + return state.email; + case PayToIdentifierEnum.abn: + return state.abn; + case PayToIdentifierEnum.orgid: + return state.orgid; + case PayToIdentifierEnum.phone: + // merge the phone prefix and number - see comment in ticket + return `${state.phonePrefix}-${state.phoneNumber}`; + } + } +}; +/** + * + */ +export class PayToElement extends UIElement { + public static readonly type = TxVariants.payto; + + protected static defaultProps = { + placeholders: {} + }; + + formatProps(props) { + return { + ...props, + data: { + ...props.data, + phonePrefix: '+61' // hardcode +61 + } + }; + } + + /** + * Formats the component data output + */ + formatData() { + return { + paymentMethod: { + type: PayToElement.type, + shopperAccountIdentifier: getAccountIdentifier(this.state.data) + }, + shopperName: { + firstName: this.state.data.firstName, + lastName: this.state.data.lastName + }, + mandate: this.props.mandate + }; + } + + get isValid(): boolean { + return !!this.state.isValid; + } + + render() { + if (this.props.paymentData) { + return ( + + + { + this.componentRef = ref; + }} + amount={this.props.amount} + showAmount={true} + instructions={PayToInstructions} + clientKey={this.props.clientKey} + paymentData={this.props.paymentData} + onError={this.props.onError} + onComplete={this.onComplete} + brandLogo={this.icon} + type={this.constructor['type']} + messageText={this.props.i18n.get('payto.confirmPayment')} + awaitText={this.props.i18n.get('payto.await.waitForConfirmation')} + showCountdownTimer={config.showCountdownTimer} + throttleTime={config.THROTTLE_TIME} + throttleInterval={config.THROTTLE_INTERVAL} + onActionHandled={this.onActionHandled} + endSlot={() => ( + + )} + /> + + + ); + } + + return ( + + + + ); + } +} + +export default PayToElement; diff --git a/packages/lib/src/components/PayTo/components/BSBInput.tsx b/packages/lib/src/components/PayTo/components/BSBInput.tsx new file mode 100644 index 0000000000..5bfd5fa021 --- /dev/null +++ b/packages/lib/src/components/PayTo/components/BSBInput.tsx @@ -0,0 +1,98 @@ +import { h } from 'preact'; +import Fieldset from '../../internal/FormFields/Fieldset'; +import { useEffect, useRef } from 'preact/hooks'; +import useForm from '../../../utils/useForm'; +import { getErrorMessage } from '../../../utils/getErrorMessage'; +import Field from '../../internal/FormFields/Field'; +import { useCoreContext } from '../../../core/Context/CoreProvider'; +import InputText from '../../internal/FormFields/InputText'; +import { bsbValidationRules } from './validate'; +import './PayIDInput.scss'; +import { phoneFormatters } from '../../internal/PhoneInput/validate'; +import { ComponentMethodsRef, UIElementStatus } from '../../internal/UIElement/types'; +import PayToNameFields from './PayToNameFields'; +import { PayToPlaceholdersType } from '../types'; + +export interface BSBFormData { + bsb: string; + bankAccountNumber: string; + firstName: string; + lastName: string; +} + +export interface BSBInputProps { + status: UIElementStatus; + setStatus: (status: UIElementStatus) => void; + defaultData: BSBFormData; + placeholders: PayToPlaceholdersType; + onChange: (e) => void; + setComponentRef: (ref: ComponentMethodsRef) => void; +} + +const BASE_SCHEMA = ['bankAccountNumber', 'bsb', 'firstName', 'lastName']; + +export default function BSBInput({ setComponentRef, defaultData, placeholders, onChange, setStatus }: BSBInputProps) { + const { i18n } = useCoreContext(); + + const form = useForm({ + schema: BASE_SCHEMA, + defaultData: defaultData, + rules: bsbValidationRules, + formatters: phoneFormatters + }); + const { handleChangeFor, triggerValidation, data, errors, valid, isValid } = form; + + // standard onChange propagate to parent state + useEffect(() => { + onChange({ data, valid, errors, isValid }); + }, [data, valid, errors, isValid]); + + const payToRef = useRef({ + setStatus: setStatus, + showValidation: triggerValidation + }); + + useEffect(() => { + setComponentRef(payToRef.current); + }, [setComponentRef]); + + return ( +
+ + + + + + + + + +
+ ); +} diff --git a/packages/lib/src/components/PayTo/components/IdentifierSelector.tsx b/packages/lib/src/components/PayTo/components/IdentifierSelector.tsx new file mode 100644 index 0000000000..efa14192fa --- /dev/null +++ b/packages/lib/src/components/PayTo/components/IdentifierSelector.tsx @@ -0,0 +1,78 @@ +import { h } from 'preact'; +import Select from '../../internal/FormFields/Select'; +import { SelectTargetObject } from '../../internal/FormFields/Select/types'; +import Field from '../../internal/FormFields/Field'; +import { useCoreContext } from '../../../core/Context/CoreProvider'; +import Language from '../../../language'; +import { createEnumChecker } from '../../../core/utils'; + +export enum PayToIdentifierEnum { + phone = 'phone', + email = 'email', + abn = 'abn', + orgid = 'orgid' +} + +const payToIdentifierEnumCheck = createEnumChecker(PayToIdentifierEnum); + +export type PayToPayIDInputIdentifierValues = keyof typeof PayToIdentifierEnum; + +type PayIdOptionsType = { id: PayToPayIDInputIdentifierValues; nameKey: string }[]; + +export const PAYID_IDENTIFIER_OPTIONS: PayIdOptionsType = [ + { + id: PayToIdentifierEnum.phone, + nameKey: 'payto.payid.option.phone' + }, + { + id: PayToIdentifierEnum.email, + nameKey: 'payto.payid.option.email' + }, + { + id: PayToIdentifierEnum.abn, + nameKey: 'ABN' + }, + { + id: PayToIdentifierEnum.orgid, + nameKey: 'payto.payid.option.orgid' + } +]; + +interface IdentifierSelectorProps { + classNameModifiers?: string[]; + selectedIdentifier: PayToPayIDInputIdentifierValues; + onSelectedIdentifier: (value: PayToPayIDInputIdentifierValues) => void; +} + +const loadI18nForOptions = (i18n: Language, options: PayIdOptionsType) => + options.map(option => ({ + id: option.id, + name: i18n.get(option.nameKey) + })); + +export default function IdentifierSelector({ selectedIdentifier, onSelectedIdentifier, classNameModifiers }: IdentifierSelectorProps) { + const { i18n } = useCoreContext(); + + const hydratedOptions = loadI18nForOptions(i18n, PAYID_IDENTIFIER_OPTIONS); + + const onChange = (e: { target: SelectTargetObject }) => { + const valueStr = e.target.value + ''; + + if (payToIdentifierEnumCheck(valueStr)) { + onSelectedIdentifier(valueStr); + } + }; + + return ( + + 0} dir={'ltr'} @@ -103,12 +91,6 @@ function PhoneInput(props: PhoneInputProps) { /> )} - + ); } - -PhoneInput.defaultProps = { - phoneLabel: 'telephoneNumber' -}; - -export default PhoneInput; diff --git a/packages/lib/src/components/internal/PhoneInput/PhoneInput.test.tsx b/packages/lib/src/components/internal/PhoneInput/PhoneInputForm.test.tsx similarity index 89% rename from packages/lib/src/components/internal/PhoneInput/PhoneInput.test.tsx rename to packages/lib/src/components/internal/PhoneInput/PhoneInputForm.test.tsx index be3d6df5f9..0884f19a86 100644 --- a/packages/lib/src/components/internal/PhoneInput/PhoneInput.test.tsx +++ b/packages/lib/src/components/internal/PhoneInput/PhoneInputForm.test.tsx @@ -2,13 +2,14 @@ import { h } from 'preact'; import { fireEvent, render, screen } from '@testing-library/preact'; import { CoreProvider } from '../../../core/Context/CoreProvider'; import userEvent from '@testing-library/user-event'; -import PhoneInput from './PhoneInput'; -import { PhoneInputProps } from './types'; +import PhoneInputForm from './PhoneInputForm'; +import { PhoneInputFormProps } from './types'; const items = [{ id: '+44', name: 'United Kingdom', code: 'GB', selectedOptionName: 'United Kingdom' }]; describe('PhoneInput', () => { - const defaultProps: PhoneInputProps = { + const defaultProps: PhoneInputFormProps = { + setComponentRef: () => {}, items, data: { phonePrefix: items[0].id }, onChange: jest.fn(), @@ -16,11 +17,11 @@ describe('PhoneInput', () => { placeholders: {} }; - const renderPhoneInput = (props: PhoneInputProps = defaultProps) => { + const renderPhoneInput = (props: PhoneInputFormProps = defaultProps) => { return render( // @ts-ignore ignore - + ); }; diff --git a/packages/lib/src/components/internal/PhoneInput/PhoneInputForm.tsx b/packages/lib/src/components/internal/PhoneInput/PhoneInputForm.tsx new file mode 100644 index 0000000000..abbe4ecfbe --- /dev/null +++ b/packages/lib/src/components/internal/PhoneInput/PhoneInputForm.tsx @@ -0,0 +1,78 @@ +import { h } from 'preact'; +import { useEffect, useCallback, useRef } from 'preact/hooks'; +import useForm from '../../../utils/useForm'; +import { useCoreContext } from '../../../core/Context/CoreProvider'; +import './PhoneInput.scss'; +import { phoneFormatters, phoneValidationRules } from './validate'; +import { PhoneInputFormProps, PhoneInputSchema } from './types'; +import Fieldset from '../FormFields/Fieldset'; +import PhoneInputFields from './PhoneInputFields'; +import { ComponentMethodsRef } from '../UIElement/types'; + +/** + * + * @param PhoneInputFormProps + * @constructor + */ +function PhoneInputForm(props: PhoneInputFormProps) { + const { i18n } = useCoreContext(); + + const schema = props.requiredFields || [...(props?.items?.length ? ['phonePrefix'] : []), 'phoneNumber']; + const showPrefix = schema.includes('phonePrefix') && !!props?.items?.length; + const showNumber = schema.includes('phoneNumber'); + + const form = useForm({ + i18n, + ...props, + schema, + defaultData: props.data, + rules: phoneValidationRules, + formatters: phoneFormatters + }); + + useEffect(() => { + form.setSchema(schema); + }, [schema.toString()]); + + const { data, valid, errors, isValid, triggerValidation } = form; + + useEffect(() => { + props.onChange({ data, valid, errors, isValid }); + }, [data, valid, errors, isValid]); + + const componentRef = useRef({ + showValidation: triggerValidation + }); + + useEffect(() => { + props.setComponentRef(componentRef.current); + }, [props.setComponentRef]); + + // This is here for MBWay, prob should be moved up + // MBWay has a weird way of loading its error messages + // They come form the prop phoneNumberErrorKey: 'mobileNumber.invalid' + // Strangely it's defined as invalidPhoneNumber in the validation rules + const getPhoneFieldError = useCallback( + (field: string) => { + if (errors[field]) { + const propsField = field === 'phoneNumber' ? 'phoneNumberErrorKey' : 'phonePrefixErrorKey'; + const key = props[propsField] ? props[propsField] : errors[field].errorMessage; + return i18n.get(key) ?? null; + } + return null; + }, + [errors] + ); + + return ( +
+ +
+ ); +} + +PhoneInputForm.defaultProps = { + phoneLabel: 'telephoneNumber' +}; + +export default PhoneInputForm; diff --git a/packages/lib/src/components/internal/PhoneInput/index.ts b/packages/lib/src/components/internal/PhoneInput/index.ts index 341afad36b..2e5ec13567 100644 --- a/packages/lib/src/components/internal/PhoneInput/index.ts +++ b/packages/lib/src/components/internal/PhoneInput/index.ts @@ -1 +1 @@ -export { default } from './PhoneInput'; +export { default } from './PhoneInputForm'; diff --git a/packages/lib/src/components/internal/PhoneInput/types.ts b/packages/lib/src/components/internal/PhoneInput/types.ts index 707d5b5a5f..9617cbeb86 100644 --- a/packages/lib/src/components/internal/PhoneInput/types.ts +++ b/packages/lib/src/components/internal/PhoneInput/types.ts @@ -1,11 +1,12 @@ import { DataSet, DataSetItem } from '../../../core/Services/data-set'; +import { ComponentMethodsRef } from '../UIElement/types'; export interface PhoneInputSchema { phoneNumber?: string; phonePrefix?: string; } -export interface PhoneInputProps { +export interface PhoneInputFormProps { items: DataSet; requiredFields?: string[]; data: PhoneInputSchema; @@ -15,6 +16,7 @@ export interface PhoneInputProps { phoneNumberErrorKey?: string; placeholders?: PhoneInputSchema; ref?; + setComponentRef: (ref: ComponentMethodsRef) => void; } export interface PhonePrefixes { diff --git a/packages/lib/src/components/internal/QRLoader/QRLoader.scss b/packages/lib/src/components/internal/QRLoader/QRLoader.scss index 41b9fe5bd4..7735552dd6 100644 --- a/packages/lib/src/components/internal/QRLoader/QRLoader.scss +++ b/packages/lib/src/components/internal/QRLoader/QRLoader.scss @@ -110,6 +110,11 @@ margin-top: token(spacer-100); } +.adyen-checkout__await__instructions { + display: flex; + justify-content: center; +} + @media (max-width: 1024px) { .adyen-checkout__qr-loader__app-link { display: block; diff --git a/packages/lib/src/components/internal/SegmentedControl/SegmentedControl.tsx b/packages/lib/src/components/internal/SegmentedControl/SegmentedControl.tsx index 61a509a845..da3213622a 100644 --- a/packages/lib/src/components/internal/SegmentedControl/SegmentedControl.tsx +++ b/packages/lib/src/components/internal/SegmentedControl/SegmentedControl.tsx @@ -2,14 +2,43 @@ import { h } from 'preact'; import cx from 'classnames'; import './SegmentedControl.scss'; +export interface SegmentedControlOption { + label: string; + value: T; + htmlProps: { + id: string; + 'aria-expanded': boolean; + 'aria-controls': string; + }; +} +export type SegmentedControlOptions = Array>; + export interface SegmentedControlProps { classNameModifiers?: string[]; selectedValue: T; disabled?: boolean; - options: Array<{ label: string; value: T; htmlProps?: any }>; + options: SegmentedControlOptions; onChange(value: T, event: MouseEvent): void; } +/** + * + * example: + * + * + * @param classNameModifiers + * @param selectedValue + * @param disabled + * @param options + * @param onChange + * @constructor + */ function SegmentedControl({ classNameModifiers = [], selectedValue, disabled = false, options, onChange }: SegmentedControlProps) { if (!options || options.length === 0) { return null; diff --git a/packages/lib/src/components/internal/Voucher/Voucher.scss b/packages/lib/src/components/internal/Voucher/Voucher.scss index 8da2fc9797..b061b81446 100644 --- a/packages/lib/src/components/internal/Voucher/Voucher.scss +++ b/packages/lib/src/components/internal/Voucher/Voucher.scss @@ -153,37 +153,6 @@ line-height: 1.2; } -.adyen-checkout__voucher-result__details { - list-style: none; - padding: 0; - margin: -1px auto 0; -} - -.adyen-checkout__voucher-result__details__item { - display: flex; - justify-content: space-between; - font-size: token(text-body-font-size); - color: token(color-label-primary); - padding: token(spacer-070) token(spacer-090); - border-top: 1px solid token(color-separator-primary); - word-break: break-word; -} - -.adyen-checkout__voucher-result__details__item:last-child { - margin-bottom: 0; -} - -.adyen-checkout__voucher-result__details__label { - max-width: 50%; - text-align: left; -} - -.adyen-checkout__voucher-result__details__value { - max-width: 50%; - text-align: right; - font-weight: bold; -} - .adyen-checkout__voucher-result__actions { margin: 0 auto token(spacer-100); max-width: 100%; diff --git a/packages/lib/src/components/internal/Voucher/Voucher.tsx b/packages/lib/src/components/internal/Voucher/Voucher.tsx index 16ff7bb142..919d93d829 100644 --- a/packages/lib/src/components/internal/Voucher/Voucher.tsx +++ b/packages/lib/src/components/internal/Voucher/Voucher.tsx @@ -8,6 +8,7 @@ import './Voucher.scss'; import { VoucherProps } from './types'; import useImage from '../../../core/Context/useImage'; import { PREFIX } from '../Icon/constants'; +import DetailsTable from '../DetailsTable'; export default function Voucher({ voucherDetails = [], className = '', ...props }: VoucherProps) { const { i18n } = useCoreContext(); @@ -115,16 +116,7 @@ export default function Voucher({ voucherDetails = [], className = '', ...props )} -
    - {voucherDetails - .filter(({ label, value }) => !!label && !!value) - .map(({ label, value }, index) => ( -
  • - {label} - {value} -
  • - ))} -
+ ); diff --git a/packages/lib/src/components/tx-variants.ts b/packages/lib/src/components/tx-variants.ts index 549a9cb81e..501028b810 100644 --- a/packages/lib/src/components/tx-variants.ts +++ b/packages/lib/src/components/tx-variants.ts @@ -141,6 +141,7 @@ export enum TxVariants { blik = 'blik', mbway = 'mbway', ancv = 'ancv', + payto = 'payto', upi = 'upi', // also QR upi_qr = 'upi_qr', // also QR upi_collect = 'upi_collect', // also QR diff --git a/packages/lib/src/components/types.ts b/packages/lib/src/components/types.ts index f32534ed20..a382ef67cc 100644 --- a/packages/lib/src/components/types.ts +++ b/packages/lib/src/components/types.ts @@ -27,6 +27,7 @@ export * from './Redirect/types'; export * from './Sepa/types'; export * from './ThreeDS2/types'; export * from './UPI/types'; +export * from './PayTo/types'; /** * Helpers diff --git a/packages/lib/src/core/utils.ts b/packages/lib/src/core/utils.ts index 3e7bc075db..68dbd16502 100644 --- a/packages/lib/src/core/utils.ts +++ b/packages/lib/src/core/utils.ts @@ -76,3 +76,14 @@ export function assertConfigurationPropertiesAreValid(propsSetByMerchant: CoreCo } }); } + +/** + * TODO: Check if this is correct place + * Type guard for enums, helpful to make sure strings keep enum value + * Comes from this: https://github.com/microsoft/TypeScript/issues/30611#issuecomment-570773496 + * @param enumVariable + */ +export function createEnumChecker(enumVariable: { [key in T]: TEnumValue }) { + const enumValues = Object.values(enumVariable); + return (value: string): value is TEnumValue => enumValues.includes(value); +} diff --git a/packages/lib/src/utils/Validator/ValidationRuleResult.ts b/packages/lib/src/utils/Validator/ValidationRuleResult.ts index 5ed858ed2e..72f72e8f1b 100644 --- a/packages/lib/src/utils/Validator/ValidationRuleResult.ts +++ b/packages/lib/src/utils/Validator/ValidationRuleResult.ts @@ -1,4 +1,4 @@ -import { ErrorMessageObject } from './types'; +import { ErrorMessageObject, ValidatorRule, ValidatorMode } from './types'; /** * Holds the result of a validation @@ -8,7 +8,7 @@ export class ValidationRuleResult { public isValid: boolean; public errorMessage: string | ErrorMessageObject; - constructor(rule, value, mode, context) { + constructor(rule: ValidatorRule, value: string, mode: ValidatorMode, context) { this.shouldValidate = rule.modes.includes(mode); this.isValid = rule.validate(value, context); this.errorMessage = rule.errorMessage; diff --git a/packages/lib/src/utils/Validator/Validator.ts b/packages/lib/src/utils/Validator/Validator.ts index 6b5cac5b9c..314f98819e 100644 --- a/packages/lib/src/utils/Validator/Validator.ts +++ b/packages/lib/src/utils/Validator/Validator.ts @@ -66,6 +66,10 @@ class Validator { */ validate({ key, value, mode = 'blur' }: FieldData, context?: FieldContext) { const fieldRules = this.getRulesFor(key); + // create an ValidationRuleResult, we run the actual validation inside of it + // validate is called in the constructor of ValidationRuleResult + // line rule.validate(value, context); + // const validationRulesResult = fieldRules.map(rule => new ValidationRuleResult(rule, value, mode, context)); return new ValidationResult(validationRulesResult); diff --git a/packages/lib/src/utils/Validator/types.ts b/packages/lib/src/utils/Validator/types.ts index cf9807a653..80152ff8e7 100644 --- a/packages/lib/src/utils/Validator/types.ts +++ b/packages/lib/src/utils/Validator/types.ts @@ -1,7 +1,7 @@ import { ValidationRuleResult } from './ValidationRuleResult'; import { Formatter } from '../useForm/types'; -type ValidatorMode = 'blur' | 'input'; +export type ValidatorMode = 'blur' | 'input'; export type ErrorMessageObject = { translationKey: string; @@ -20,8 +20,10 @@ export type FormatRules = { [field: string]: Formatter }; export type CountryFormatRules = { [country: string]: FormatRules }; +export type ValidateFunction = (value: string, context) => boolean; + export interface ValidatorRule { - validate: (value, context?) => boolean; + validate: ValidateFunction; errorMessage?: string | ErrorMessageObject; modes: ValidatorMode[]; } diff --git a/packages/lib/src/utils/useForm/types.ts b/packages/lib/src/utils/useForm/types.ts index 69c879146b..a368a3c033 100644 --- a/packages/lib/src/utils/useForm/types.ts +++ b/packages/lib/src/utils/useForm/types.ts @@ -30,8 +30,10 @@ export type FormProps = { [key: string]: any; }; +export type HandleChangeForModeType = 'input' | 'blur'; + export interface Form extends FormState { - handleChangeFor: (key: string, mode?: string) => (e: any) => void; + handleChangeFor: (key: string, mode?: HandleChangeForModeType) => (e: any) => void; triggerValidation: (schema?: any) => void; setSchema: (schema: any) => void; setData: (key: string, value: any) => void; diff --git a/packages/lib/storybook/stories/components/PayTo.stories.tsx b/packages/lib/storybook/stories/components/PayTo.stories.tsx new file mode 100644 index 0000000000..ead7751c5b --- /dev/null +++ b/packages/lib/storybook/stories/components/PayTo.stories.tsx @@ -0,0 +1,90 @@ +import { Meta, StoryObj } from '@storybook/preact'; +import { PaymentMethodStoryProps } from '../types'; +import { ComponentContainer } from '../ComponentContainer'; +import { Checkout } from '../Checkout'; +import PayTo from '../../../src/components/PayTo/PayTo'; +// import { http, HttpResponse } from 'msw'; +import { MandateType, PayToConfiguration } from '../../../src/components/PayTo/types'; + +// extend the default story args so we can change mandate top level +interface ExtendedStoryArgs extends PaymentMethodStoryProps { + mandate: MandateType; + payee: string; +} +type PayToStory = StoryObj; + +const MANDATE_EXAMPLE: MandateType = { + amount: '100000', // [Mandatory] for PayTo - Mandate Amount field + amountRule: 'exact', // [Mandatory] for PayTo - Needs to be Localised + endsAt: '2025-12-31', // [Mandatory] for PayTo - Date format + frequency: 'monthly', // [Mandatory] for PayTo - Needs to be Localised + remarks: 'testThroughFlow1', // [Mandatory] for PayTo - Needs to be Localised as "Description" + count: '3' // [Optional] will be returned only if the merchant sends it + //startsAt: '2025-02-01' // [Optional] will be returned only if the merchant sends it +}; + +const meta: Meta> = { + title: 'Components/PayTo' +}; + +export const Default: PayToStory = { + render: ({ componentConfiguration, mandate, ...checkoutConfig }) => ( + + {checkout => ( + + )} + + ), + args: { + countryCode: 'AU', + useSessions: false, + mandate: MANDATE_EXAMPLE + } +}; + +export const PayToAwaitScreen: PayToStory = { + args: { + countryCode: 'AU', + shopperLocale: 'en-US', + mandate: MANDATE_EXAMPLE, + payee: 'Cool Merchant Ltd' + }, + parameters: { + // msw: { + // handlers: [ + // http.post('https://checkoutshopper-test.adyen.com/checkoutshopper/services/PaymentInitiation/v1/status', () => { + // return HttpResponse.json({ + // payload: '', + // resultCode: 'pending', + // type: 'pending' + // }); + // }) + // ] + // } + }, + render: ({ componentConfiguration, mandate, payee, ...checkoutConfig }) => ( + + {checkout => ( + { const meta: Meta = { title: 'Internals/PhoneInput', - component: PhoneInput + component: PhoneInputForm }; export const Default: StoryObj = { render: args => { return ( - console.log({ item })} diff --git a/packages/server/translations/ar.json b/packages/server/translations/ar.json index c5ee0cf61d..616a243cdd 100644 --- a/packages/server/translations/ar.json +++ b/packages/server/translations/ar.json @@ -323,5 +323,34 @@ "paynow.mobileViewInstruction.step2": "افتح تطبيق بنك PayNow أو تطبيق الدفع.", "paynow.mobileViewInstruction.step3": "ابحث عن أداة قراءة رمز الاستجابة السريعة وشغلها.", "paynow.mobileViewInstruction.step4": "خدد خيار تحميل QR، ثم حدد لقطة الشاشة.", - "paynow.mobileViewInstruction.step5": "أكمل المعاملة." + "paynow.mobileViewInstruction.step5": "أكمل المعاملة.", + "payto.payid.description": "أدخل معرف PayID وتفاصيل الحساب المرتبطة بحساب Payto الخاص بك.", + "payto.payid.label.identifier": "المعرف", + "payto.payid.label.orgid": "معرف المنظمة", + "payto.payid.option.phone": "الهاتف المحمول", + "payto.payid.option.email": "البريد الإلكتروني", + "payto.payid.option.orgid": "معرف المنظمة", + "payto.bsb.description": "أدخل رقم الحساب المصرفي وفرع البنك في الولاية المرتبط بحسابك للمتابعة", + "payto.bsb.label.bankAccountNumber": "رقم الحساب البنكي", + "payto.instructions.steps": "سجّل الدخول إلى تطبيق PayTo المصرفي@وافق على اتفاقية PayTo@اعتمد شروط الدفع@أكمل المعاملة.", + "payto.confirmPayment": "نشكرك على عملية الشراء هذه، وفضلًا أكمل عملية الدفع باتباع التعليمات المبينة أدناه.", + "payto.mandate.amount.label": "المبلغ", + "payto.mandate.frequency.label": "التكرار", + "payto.mandate.remarks.label": "الوصف", + "payto.mandate.startsAt.label": "تاريخ أول دفعة", + "payto.mandate.endsAt.label": "تاريخ الانتهاء", + "payto.mandate.payee.label": "المدفوع له", + "payto.mandate.amount.max": "ما يصل إلى {amount}% لكل معاملة", + "payto.mandate.frequency.adhoc-no-count": "مخصص", + "payto.mandate.frequency.adhoc": "%{count} مرة (مرات)", + "payto.mandate.frequency.daily": "%{count} عملية (عمليات) دفع يوميًا", + "payto.mandate.frequency.weekly": "%{count} عملية (عمليات) دفع أسبوعيًا", + "payto.mandate.frequency.biWeekly": "%{count} عملية (عمليات) دفع كل أسبوعين", + "payto.mandate.frequency.monthly": "%{count} عملية (عمليات) دفع شهريًا", + "payto.mandate.frequency.quarterly": "%{count} عملية (عمليات) دفع ربع سنوية", + "payto.mandate.frequency.halfYearly": "%{count} عملية (عمليات) دفع نصف سنوية", + "payto.mandate.frequency.yearly": "%{count} عملية (عمليات) دفع سنويًا", + "payto.label.firstName": "الاسم الأول لصاحب الحساب", + "payto.label.lastName": "اسم العائلة لصاحب الحساب", + "payto.await.waitForConfirmation": "في انتظار موافقتكم" } \ No newline at end of file diff --git a/packages/server/translations/bg-BG.json b/packages/server/translations/bg-BG.json index 44ad4a1a98..8bbcff8d9e 100644 --- a/packages/server/translations/bg-BG.json +++ b/packages/server/translations/bg-BG.json @@ -324,5 +324,34 @@ "paynow.mobileViewInstruction.step2": "Отворете банката или приложението за плащане PayNow.", "paynow.mobileViewInstruction.step3": "Изберете опцията за сканиране на QR код.", "paynow.mobileViewInstruction.step4": "Изберете опцията за качване на QR код и след това изберете екранната снимка.", - "paynow.mobileViewInstruction.step5": "Извършете транзакцията." + "paynow.mobileViewInstruction.step5": "Извършете транзакцията.", + "payto.payid.description": "Въведете PayID и данните за сметката, които са свързани с Вашия Payto акаунт.", + "payto.payid.label.identifier": "Идентификатор", + "payto.payid.label.orgid": "OrganizationID", + "payto.payid.option.phone": "Мобилно устройство", + "payto.payid.option.email": "Имейл", + "payto.payid.option.orgid": "OrganizationID", + "payto.bsb.description": "Въведете номера на банковата сметка и банковия клон, които са свързани с вашия акаунт, за да продължите", + "payto.bsb.label.bankAccountNumber": "Номер на банкова сметка", + "payto.instructions.steps": "Влезте в приложението за банкиране PayTo@Приемете споразумението с PayTo@Одобрете условията на плащането@Завършете транзакцията", + "payto.confirmPayment": "Благодарим Ви за покупката, завършете плащането, като следвате инструкциите по-долу.", + "payto.mandate.amount.label": "Сума", + "payto.mandate.frequency.label": "Честота", + "payto.mandate.remarks.label": "Описание", + "payto.mandate.startsAt.label": "Първа дата за плащане", + "payto.mandate.endsAt.label": "Крайна дата", + "payto.mandate.payee.label": "Получател по плащането", + "payto.mandate.amount.max": "До %{amount} на транзакция", + "payto.mandate.frequency.adhoc-no-count": "Ad Hoc", + "payto.mandate.frequency.adhoc": "%{count} път(и)", + "payto.mandate.frequency.daily": "%{count} плащания дневно", + "payto.mandate.frequency.weekly": "%{count} плащания седмично", + "payto.mandate.frequency.biWeekly": "%{count} плащания на две седмици", + "payto.mandate.frequency.monthly": "%{count} плащания месечно", + "payto.mandate.frequency.quarterly": "%{count} плащания на тримесечие", + "payto.mandate.frequency.halfYearly": "%{count} плащания на шест месеца", + "payto.mandate.frequency.yearly": "%{count} плащания годишно", + "payto.label.firstName": "Име на титуляра на сметката", + "payto.label.lastName": "Фамилия на титуляра на сметката", + "payto.await.waitForConfirmation": "Очакваме Вашето одобрение" } \ No newline at end of file diff --git a/packages/server/translations/ca-ES.json b/packages/server/translations/ca-ES.json index d5b92271b6..6185bcfc0e 100644 --- a/packages/server/translations/ca-ES.json +++ b/packages/server/translations/ca-ES.json @@ -324,5 +324,34 @@ "paynow.mobileViewInstruction.step2": "Obriu PayNow o l'aplicació de pagament.", "paynow.mobileViewInstruction.step3": "Seleccioneu l'opció d'escanejar un codi QR.", "paynow.mobileViewInstruction.step4": "Trieu l'opció per carregar un QR i seleccioneu la captura de pantalla.", - "paynow.mobileViewInstruction.step5": "Completeu la transacció." + "paynow.mobileViewInstruction.step5": "Completeu la transacció.", + "payto.payid.description": "Introduïu el PayID i les dades del compte que estan connectades al vostre compte Payto.", + "payto.payid.label.identifier": "Identificador", + "payto.payid.label.orgid": "Identificació de l'organització", + "payto.payid.option.phone": "Mòbil", + "payto.payid.option.email": "Correu electrònic", + "payto.payid.option.orgid": "Identificació de l'organització", + "payto.bsb.description": "Introduïu el número de compte bancari i la sucursal bancària estatal que està associada al vostre compte per continuar", + "payto.bsb.label.bankAccountNumber": "Número de compte bancari", + "payto.instructions.steps": "Inicieu sessió a la vostra aplicació bancària PayTo @Autoritzeu l'acord PayTo @Aproveu els termes de pagament @Completeu la transacció", + "payto.confirmPayment": "Gràcies per la seva compra, completeu el vostre pagament seguint les instruccions següents.", + "payto.mandate.amount.label": "Import", + "payto.mandate.frequency.label": "Freqüència", + "payto.mandate.remarks.label": "Descripció", + "payto.mandate.startsAt.label": "Data del primer pagament", + "payto.mandate.endsAt.label": "Data de finalització", + "payto.mandate.payee.label": "Beneficiari", + "payto.mandate.amount.max": "Fins a %{amount} per transacció", + "payto.mandate.frequency.adhoc-no-count": "Ad Hoc", + "payto.mandate.frequency.adhoc": "%{count} vegada(es)", + "payto.mandate.frequency.daily": "%{count} pagament(s) diariament", + "payto.mandate.frequency.weekly": "%{count} pagament(s) setmanal(s)", + "payto.mandate.frequency.biWeekly": "%{count} pagament(s) cada quinze dies", + "payto.mandate.frequency.monthly": "%{count} pagament(s) mensual(s)", + "payto.mandate.frequency.quarterly": "%{count} pagament(s) trimestral(s)", + "payto.mandate.frequency.halfYearly": "%{count} pagament(s) bianual(s)", + "payto.mandate.frequency.yearly": "%{count} pagament(s) anual(s)", + "payto.label.firstName": "Nom del titular del compte", + "payto.label.lastName": "Cognom del titular del compte", + "payto.await.waitForConfirmation": "Esperant la vostra aprovació" } \ No newline at end of file diff --git a/packages/server/translations/cs-CZ.json b/packages/server/translations/cs-CZ.json index feffd04651..78a8d2b718 100644 --- a/packages/server/translations/cs-CZ.json +++ b/packages/server/translations/cs-CZ.json @@ -322,5 +322,34 @@ "paynow.mobileViewInstruction.step2": "Otevřete PayNow nebo platební aplikaci.", "paynow.mobileViewInstruction.step3": "Zvolte možnost naskenovat QR kód.", "paynow.mobileViewInstruction.step4": "Klikněte na možnost QR kód a vyberte snímek obrazovky.", - "paynow.mobileViewInstruction.step5": "Dokončete transakci." + "paynow.mobileViewInstruction.step5": "Dokončete transakci.", + "payto.payid.description": "Zadejte PayID a údaje o účtu, které jsou propojeny s vaším účtem Payto.", + "payto.payid.label.identifier": "Identifikátor", + "payto.payid.label.orgid": "ID organizace", + "payto.payid.option.phone": "Mobil", + "payto.payid.option.email": "E-mail", + "payto.payid.option.orgid": "ID organizace", + "payto.bsb.description": "Pro pokračování zadejte číslo bankovního účtu a kód BSB (Bank State Branch) spojený s vaším účtem", + "payto.bsb.label.bankAccountNumber": "Číslo bankovního účtu", + "payto.instructions.steps": "Přihlaste se do bankovní aplikace PayTo@Potvrďte smlouvu s PayTo@Schvalte platební podmínky@Dokončete transakci", + "payto.confirmPayment": "Děkujeme za váš nákup, dokončete platbu podle níže uvedených pokynů.", + "payto.mandate.amount.label": "Částka", + "payto.mandate.frequency.label": "Frekvence", + "payto.mandate.remarks.label": "Popis", + "payto.mandate.startsAt.label": "Datum první platby", + "payto.mandate.endsAt.label": "Datum ukončení", + "payto.mandate.payee.label": "Příjemce platby", + "payto.mandate.amount.max": "Až %{amount} na jednu transakci", + "payto.mandate.frequency.adhoc-no-count": "Ad Hoc", + "payto.mandate.frequency.adhoc": "%{count}krát", + "payto.mandate.frequency.daily": "%{count} platba/platby/plateb denně", + "payto.mandate.frequency.weekly": "%{count} platba/platby/plateb týdně", + "payto.mandate.frequency.biWeekly": "%{count} platba/platby/plateb co 14 dní", + "payto.mandate.frequency.monthly": "%{count} platba/platby/plateb měsíčně", + "payto.mandate.frequency.quarterly": "%{count} platba/platby/plateb čtvrtletně", + "payto.mandate.frequency.halfYearly": "%{count} platba/platby/plateb půlročně", + "payto.mandate.frequency.yearly": "%{count} platba/platby/plateb ročně", + "payto.label.firstName": "Křestní jméno držitele účtu", + "payto.label.lastName": "Příjmení držitele účtu", + "payto.await.waitForConfirmation": "Čekáme na vaše schválení" } \ No newline at end of file diff --git a/packages/server/translations/da-DK.json b/packages/server/translations/da-DK.json index c307fc0950..75c2d2a938 100644 --- a/packages/server/translations/da-DK.json +++ b/packages/server/translations/da-DK.json @@ -323,5 +323,34 @@ "paynow.mobileViewInstruction.step2": "Åbn PayNow-banken eller betalingsappen.", "paynow.mobileViewInstruction.step3": "Vælg muligheden for at scanne en QR-kode.", "paynow.mobileViewInstruction.step4": "Vælg muligheden for at uploade en QR-kode og vælg skærmbilledet.", - "paynow.mobileViewInstruction.step5": "Gennemfør transaktionen." + "paynow.mobileViewInstruction.step5": "Gennemfør transaktionen.", + "payto.payid.description": "Indtast PayID og kontooplysninger, der er knyttet til din PayTo-konto.", + "payto.payid.label.identifier": "Identifikator", + "payto.payid.label.orgid": "Organisations-id", + "payto.payid.option.phone": "Mobil", + "payto.payid.option.email": "E-mail", + "payto.payid.option.orgid": "Organisations-id", + "payto.bsb.description": "Indtast bankkontonummeret og bankafdeling (Bank State Branch, BSB), der er knyttet til din konto, for at fortsætte", + "payto.bsb.label.bankAccountNumber": "Bankkontonummer", + "payto.instructions.steps": "Log ind på din PayTo-bankapp@Godkend PayTo-aftalen@Godkend betalingsbetingelserne@Fuldfør transaktionen", + "payto.confirmPayment": "Tak for dit køb! Fuldfør din betaling ved at følge instruktionerne nedenfor.", + "payto.mandate.amount.label": "Beløb", + "payto.mandate.frequency.label": "Hyppighed", + "payto.mandate.remarks.label": "Beskrivelse", + "payto.mandate.startsAt.label": "Første betalingsdato", + "payto.mandate.endsAt.label": "Slutdato", + "payto.mandate.payee.label": "Betalingsmodtager", + "payto.mandate.amount.max": "Op til %{amount} pr. transaktion", + "payto.mandate.frequency.adhoc-no-count": "Ad hoc", + "payto.mandate.frequency.adhoc": "%{count} gang(e)", + "payto.mandate.frequency.daily": "%{count} betaling(er) dagligt", + "payto.mandate.frequency.weekly": "%{count} betaling(er) ugentligt", + "payto.mandate.frequency.biWeekly": "%{count} betaling(er) hver 2. uge", + "payto.mandate.frequency.monthly": "%{count} betaling(er) månedligt", + "payto.mandate.frequency.quarterly": "%{count} betaling(er) kvartalsvis", + "payto.mandate.frequency.halfYearly": "%{count} betaling(er) halvårlig", + "payto.mandate.frequency.yearly": "%{count} betaling(er) årligt", + "payto.label.firstName": "Kontohavers fornavn", + "payto.label.lastName": "Kontohavers efternavn", + "payto.await.waitForConfirmation": "Afventer din godkendelse" } \ No newline at end of file diff --git a/packages/server/translations/de-DE.json b/packages/server/translations/de-DE.json index e42f67c134..5b210d7afa 100644 --- a/packages/server/translations/de-DE.json +++ b/packages/server/translations/de-DE.json @@ -322,5 +322,34 @@ "paynow.mobileViewInstruction.step2": "Öffnen Sie die PayNow-Bank- oder Zahlungs-App.", "paynow.mobileViewInstruction.step3": "Wählen Sie die Option, um einen QR-Code zu scannen.", "paynow.mobileViewInstruction.step4": "Wählen Sie die Option zum Hochladen eines QR-Codes und wählen Sie den Screenshot aus.", - "paynow.mobileViewInstruction.step5": "Schließen Sie die Transaktion ab." + "paynow.mobileViewInstruction.step5": "Schließen Sie die Transaktion ab.", + "payto.payid.description": "Geben Sie die PayID und die Kontodaten ein, die mit Ihrem Payto-Konto verknüpft sind.", + "payto.payid.label.identifier": "Kennung", + "payto.payid.label.orgid": "Organisations-ID", + "payto.payid.option.phone": "Mobil", + "payto.payid.option.email": "E-Mail-Adresse", + "payto.payid.option.orgid": "Organisations-ID", + "payto.bsb.description": "Geben Sie die Bankkontonummer und die dazugehörige Bankleitzahl ein, um fortzufahren", + "payto.bsb.label.bankAccountNumber": "Bankkontonummer", + "payto.instructions.steps": "Melden Sie sich bei Ihrer PayTo-Banking-App an@Genehmigen Sie die PayTo-Vereinbarung@Stimmen Sie den Zahlungsbedingungen zu@Schließen Sie die Transaktion ab", + "payto.confirmPayment": "Vielen Dank für Ihren Kauf. Bitte schließen Sie Ihre Zahlung ab, indem Sie die nachstehenden Anweisungen befolgen.", + "payto.mandate.amount.label": "Betrag", + "payto.mandate.frequency.label": "Häufigkeit", + "payto.mandate.remarks.label": "Beschreibung", + "payto.mandate.startsAt.label": "Erstes Zahlungsdatum", + "payto.mandate.endsAt.label": "Enddatum", + "payto.mandate.payee.label": "Zahlungsempfänger", + "payto.mandate.amount.max": "Bis zu %{amount} pro Transaktion", + "payto.mandate.frequency.adhoc-no-count": "Ad Hoc", + "payto.mandate.frequency.adhoc": "%{count} Mal", + "payto.mandate.frequency.daily": "%{count} Zahlung(en) täglich", + "payto.mandate.frequency.weekly": "%{count} Zahlung(en) wöchentlich", + "payto.mandate.frequency.biWeekly": "%{count} Zahlung(en) vierzehntägig", + "payto.mandate.frequency.monthly": "%{count} Zahlung(en) monatlich", + "payto.mandate.frequency.quarterly": "%{count} Zahlung(en) vierteljährlich", + "payto.mandate.frequency.halfYearly": "%{count} Zahlung(en) halbjährlich", + "payto.mandate.frequency.yearly": "%{count} Zahlung(en) jährlich", + "payto.label.firstName": "Vorname des Kontoinhabers", + "payto.label.lastName": "Nachname des Kontoinhabers", + "payto.await.waitForConfirmation": "Wir warten auf Ihre Genehmigung" } \ No newline at end of file diff --git a/packages/server/translations/el-GR.json b/packages/server/translations/el-GR.json index bff5068f64..45972645dd 100644 --- a/packages/server/translations/el-GR.json +++ b/packages/server/translations/el-GR.json @@ -322,5 +322,34 @@ "paynow.mobileViewInstruction.step2": "Ανοίξτε την τράπεζα PayNow ή την εφαρμογή πληρωμών.", "paynow.mobileViewInstruction.step3": "Επιλέξτε τη δυνατότητα σάρωσης ενός κωδικού QR.", "paynow.mobileViewInstruction.step4": "Επιλέξτε τη δυνατότητα μεταφόρτωσης ενός QR και επιλέξτε το στιγμιότυπο οθόνης.", - "paynow.mobileViewInstruction.step5": "Ολοκληρώστε τη συναλλαγή." + "paynow.mobileViewInstruction.step5": "Ολοκληρώστε τη συναλλαγή.", + "payto.payid.description": "Εισαγάγετε το PayID και τα στοιχεία λογαριασμού που είναι συνδεδεμένα με τον λογαριασμό Payto που διαθέτετε.", + "payto.payid.label.identifier": "Αναγνωριστικό", + "payto.payid.label.orgid": "Αναγνωριστικό οργανισμού", + "payto.payid.option.phone": "Κινητό", + "payto.payid.option.email": "Email", + "payto.payid.option.orgid": "Αναγνωριστικό οργανισμού", + "payto.bsb.description": "Εισαγάγετε τον αριθμό τραπεζικού λογαριασμού και το υποκατάστημα της τράπεζας που συνδέεται με τον λογαριασμό σας για να συνεχίσετε.", + "payto.bsb.label.bankAccountNumber": "Αριθμός τραπεζικού λογαριασμού", + "payto.instructions.steps": "Συνδεθείτε στην εφαρμογή τραπεζικής σας PayTo@Εξουσιοδοτήστε τη συμφωνία PayTo@Εγκρίνετε τους όρους πληρωμής@Ολοκληρώστε τη συναλλαγή", + "payto.confirmPayment": "Σας ευχαριστούμε για την αγορά σας. Ολοκληρώστε την πληρωμή σας ακολουθώντας τις παρακάτω οδηγίες.", + "payto.mandate.amount.label": "Ποσό", + "payto.mandate.frequency.label": "Συχνότητα", + "payto.mandate.remarks.label": "Περιγραφή", + "payto.mandate.startsAt.label": "Ημερομηνία πρώτης πληρωμής", + "payto.mandate.endsAt.label": "Ημερομηνία λήξης", + "payto.mandate.payee.label": "Δικαιούχος", + "payto.mandate.amount.max": "Έως %{amount} ανά συναλλαγή", + "payto.mandate.frequency.adhoc-no-count": "Ad Hoc", + "payto.mandate.frequency.adhoc": "%{count} φορά(-ές)", + "payto.mandate.frequency.daily": "%{count} πληρωμή(-ές) καθημερινά", + "payto.mandate.frequency.weekly": "%{count} πληρωμή(-ές) εβδομαδιαίως", + "payto.mandate.frequency.biWeekly": "%{count} πληρωμή(-ές) ανά δεκαπενθήμερο", + "payto.mandate.frequency.monthly": "%{count} πληρωμή(-ές) μηνιαίως", + "payto.mandate.frequency.quarterly": "%{count} πληρωμή(-ές) ανά τρίμηνο", + "payto.mandate.frequency.halfYearly": "%{count} πληρωμή(-ές) ανά εξάμηνο", + "payto.mandate.frequency.yearly": "%{count} πληρωμή(-ές) ετησίως", + "payto.label.firstName": "Όνομα κατόχου λογαριασμού", + "payto.label.lastName": "Επώνυμο κατόχου λογαριασμού", + "payto.await.waitForConfirmation": "Αναμονή για την έγκρισή σας" } \ No newline at end of file diff --git a/packages/server/translations/en-US.json b/packages/server/translations/en-US.json index d61909117a..316c5af602 100644 --- a/packages/server/translations/en-US.json +++ b/packages/server/translations/en-US.json @@ -324,5 +324,34 @@ "paynow.mobileViewInstruction.step2": "Open the PayNow bank or payment app.", "paynow.mobileViewInstruction.step3": "Select the option to scan a QR code.", "paynow.mobileViewInstruction.step4": "Choose the option to upload a QR and select the screenshot.", - "paynow.mobileViewInstruction.step5": "Complete the transaction." + "paynow.mobileViewInstruction.step5": "Complete the transaction.", + "payto.payid.description": "Enter the PayID and account details that are connected to your Payto account.", + "payto.payid.label.identifier": "Identifier", + "payto.payid.label.orgid": "Organization ID", + "payto.payid.option.phone": "Mobile", + "payto.payid.option.email": "Email", + "payto.payid.option.orgid": "Organization ID", + "payto.bsb.description": "Enter the bank account number and the Bank State Branch that is connected to your account to continue", + "payto.bsb.label.bankAccountNumber": "Bank account number", + "payto.instructions.steps": "Log into your PayTo banking app@Authorize the PayTo agreement@Approve the payment terms@Complete the transaction", + "payto.confirmPayment": "Thank you for your purchase, complete your payment by following the instructions below.", + "payto.mandate.amount.label": "Amount", + "payto.mandate.frequency.label": "Frequency", + "payto.mandate.remarks.label": "Description", + "payto.mandate.startsAt.label": "First payment date", + "payto.mandate.endsAt.label": "End date", + "payto.mandate.payee.label": "Payee", + "payto.mandate.amount.max": "Up to %{amount} per transaction", + "payto.mandate.frequency.adhoc-no-count": "Ad Hoc", + "payto.mandate.frequency.adhoc": "%{count} time(s)", + "payto.mandate.frequency.daily": "%{count} payment(s) Daily", + "payto.mandate.frequency.weekly": "%{count} payment(s) Weekly", + "payto.mandate.frequency.biWeekly": "%{count} payment(s) Fortnightly", + "payto.mandate.frequency.monthly": "%{count} payment(s) Monthly", + "payto.mandate.frequency.quarterly": "%{count} payment(s) Quarterly", + "payto.mandate.frequency.halfYearly": "%{count} payment(s) Bi-Annual", + "payto.mandate.frequency.yearly": "%{count} payment(s) Yearly", + "payto.label.firstName": "Account holder first name", + "payto.label.lastName": "Account holder last name", + "payto.await.waitForConfirmation": "Awaiting your approval" } \ No newline at end of file diff --git a/packages/server/translations/es-ES.json b/packages/server/translations/es-ES.json index d7dbcefa20..d1956292c6 100644 --- a/packages/server/translations/es-ES.json +++ b/packages/server/translations/es-ES.json @@ -320,5 +320,34 @@ "paynow.mobileViewInstruction.step2": "Abra la aplicación bancaria o de pago PayNow.", "paynow.mobileViewInstruction.step3": "Seleccione la opción de escanear un código QR.", "paynow.mobileViewInstruction.step4": "Elija la opción de subir un QR y seleccione la captura de pantalla.", - "paynow.mobileViewInstruction.step5": "Complete la transacción." + "paynow.mobileViewInstruction.step5": "Complete la transacción.", + "payto.payid.description": "Introduzca el PayID y los detalles de la cuenta que están conectados a su cuenta Payto.", + "payto.payid.label.identifier": "Identificador", + "payto.payid.label.orgid": "ID de la organización", + "payto.payid.option.phone": "Teléfono móvil", + "payto.payid.option.email": "Correo electrónico", + "payto.payid.option.orgid": "ID de la organización", + "payto.bsb.description": "Introduzca el número de cuenta bancaria y la sucursal del banco estatal que está vinculada a su cuenta para continuar", + "payto.bsb.label.bankAccountNumber": "Número de cuenta bancaria", + "payto.instructions.steps": "Inicie sesión en su aplicación bancaria PayTo@Autorice el acuerdo de PayTo@Apruebe las condiciones de pago @Complete la transacción", + "payto.confirmPayment": "Gracias por su compra. Complete su pago siguiendo las instrucciones a continuación.", + "payto.mandate.amount.label": "Cantidad", + "payto.mandate.frequency.label": "Frecuencia", + "payto.mandate.remarks.label": "Descripción", + "payto.mandate.startsAt.label": "Fecha del primer pago", + "payto.mandate.endsAt.label": "Fecha de finalización", + "payto.mandate.payee.label": "Beneficiario", + "payto.mandate.amount.max": "Hasta %{amount} por transacción", + "payto.mandate.frequency.adhoc-no-count": "Ad Hoc", + "payto.mandate.frequency.adhoc": "%{count} vez/veces", + "payto.mandate.frequency.daily": "%{count} pago(s) diariamente", + "payto.mandate.frequency.weekly": "%{count} pago(s) semanalmente", + "payto.mandate.frequency.biWeekly": "%{count} pago(s) quincenal(es)", + "payto.mandate.frequency.monthly": "%{count} pago(s) mensual(es)", + "payto.mandate.frequency.quarterly": "%{count} pago(s) trimestralmente", + "payto.mandate.frequency.halfYearly": "%{count} pago(s) semestralmente", + "payto.mandate.frequency.yearly": "%{count} pago(s) anualmente", + "payto.label.firstName": "Nombre del titular de la cuenta", + "payto.label.lastName": "Apellidos del titular de la cuenta", + "payto.await.waitForConfirmation": "Esperando su aprobación" } \ No newline at end of file diff --git a/packages/server/translations/et-EE.json b/packages/server/translations/et-EE.json index b6d8b8873a..7d9bdc695d 100644 --- a/packages/server/translations/et-EE.json +++ b/packages/server/translations/et-EE.json @@ -324,5 +324,34 @@ "paynow.mobileViewInstruction.step2": "Avage pank või makserakendus PayNow.", "paynow.mobileViewInstruction.step3": "Valige QR-koodi skannimise valik.", "paynow.mobileViewInstruction.step4": "Valige QR-koodi üleslaadimise valik ja valige kuvatõmmis.", - "paynow.mobileViewInstruction.step5": "Viige kanne lõpule." + "paynow.mobileViewInstruction.step5": "Viige kanne lõpule.", + "payto.payid.description": "Sisestage PayID ja teie Payto kontoga ühendatud konto andmed.", + "payto.payid.label.identifier": "Tunnus", + "payto.payid.label.orgid": "Organisatsiooni ID", + "payto.payid.option.phone": "Mobiil", + "payto.payid.option.email": "E-post", + "payto.payid.option.orgid": "Organisatsiooni ID", + "payto.bsb.description": "Jätkamiseks sisestage pangakonto number ja teie kontoga seotud panga riiklik filiaal", + "payto.bsb.label.bankAccountNumber": "Pangakonto number", + "payto.instructions.steps": "Logige sisse oma PayTo pangarakendusse@Kinnitage PayTo leping@Kinnitage maksetingimused@Lõpetage kanne", + "payto.confirmPayment": "Täname teid ostu eest, täitke makse allpool toodud juhiseid järgides.", + "payto.mandate.amount.label": "Summa", + "payto.mandate.frequency.label": "Sagedus", + "payto.mandate.remarks.label": "Kirjeldus", + "payto.mandate.startsAt.label": "Esimese makse kuupäev", + "payto.mandate.endsAt.label": "Lõppkuupäev", + "payto.mandate.payee.label": "Makse saaja", + "payto.mandate.amount.max": "Kuni %{amount} tehingu kohta", + "payto.mandate.frequency.adhoc-no-count": "Ad Hoc", + "payto.mandate.frequency.adhoc": "%{count} kord(a)", + "payto.mandate.frequency.daily": "%{count} makse(t) päevas", + "payto.mandate.frequency.weekly": "%{count} makse(t) nädalas", + "payto.mandate.frequency.biWeekly": "%{count} makse(t) iga kahe nädala tagant", + "payto.mandate.frequency.monthly": "%{count} makse(t) kuus", + "payto.mandate.frequency.quarterly": "%{count} makse(t) kvartalis", + "payto.mandate.frequency.halfYearly": "%{count} makse(t) kaks korda aastas", + "payto.mandate.frequency.yearly": "%{count} makse(t) aastas", + "payto.label.firstName": "Konto omaniku eesnimi", + "payto.label.lastName": "Konto omaniku perekonnanimi", + "payto.await.waitForConfirmation": "Teie heakskiidu ootel" } \ No newline at end of file diff --git a/packages/server/translations/fi-FI.json b/packages/server/translations/fi-FI.json index 3df07a0e76..e30c12fda8 100644 --- a/packages/server/translations/fi-FI.json +++ b/packages/server/translations/fi-FI.json @@ -322,5 +322,34 @@ "paynow.mobileViewInstruction.step2": "Avaa PayNow-pankkisovellus tai -maksusovellus.", "paynow.mobileViewInstruction.step3": "Valitse QR-koodin skannaustoiminto.", "paynow.mobileViewInstruction.step4": "Valitse QR-koodin lataustoiminto ja valitse ottamasi näyttökuva.", - "paynow.mobileViewInstruction.step5": "Suorita maksutapahtuma loppuun." + "paynow.mobileViewInstruction.step5": "Suorita maksutapahtuma loppuun.", + "payto.payid.description": "Anna Payto-tilisi PayID ja tilitiedot", + "payto.payid.label.identifier": "Tunniste", + "payto.payid.label.orgid": "Organisaatiotunnus", + "payto.payid.option.phone": "Matkapuhelinnumero", + "payto.payid.option.email": "Sähköposti", + "payto.payid.option.orgid": "Organisaation tunnus", + "payto.bsb.description": "Jotta voit jatkaa, lisää tiliisi yhdistetty pankkitilin numero ja BSB-numero (pankkikonttorin tunnus)", + "payto.bsb.label.bankAccountNumber": "Pankkitilinumero", + "payto.instructions.steps": "Kirjaudu PayTo-pankkisovellukseesi@Hyväksy PayTo-sopimus@Hyväksy maksuehdot@Viimeistele maksutapahtuma", + "payto.confirmPayment": "Kiitos ostoksestasi. Suorita maksu alla annettujen ohjeiden mukaisesti.", + "payto.mandate.amount.label": "Summa", + "payto.mandate.frequency.label": "Maksuaikataulu", + "payto.mandate.remarks.label": "Kuvaus", + "payto.mandate.startsAt.label": "Ensimmäinen maksupäivä", + "payto.mandate.endsAt.label": "Päättymispäivämäärä", + "payto.mandate.payee.label": "Maksunsaaja", + "payto.mandate.amount.max": "Jopa %{amount} per maksutapahtuma", + "payto.mandate.frequency.adhoc-no-count": "Ad Hoc", + "payto.mandate.frequency.adhoc": "%{count} kertaa", + "payto.mandate.frequency.daily": "%{count} maksua päivittäin", + "payto.mandate.frequency.weekly": "%{count} maksua viikoittain", + "payto.mandate.frequency.biWeekly": "%{count} maksu kahdessa viikossa", + "payto.mandate.frequency.monthly": "%{count} maksua kuukausittain", + "payto.mandate.frequency.quarterly": "%{count} maksua neljännesvuosittain", + "payto.mandate.frequency.halfYearly": "%{count} maksu(a) puolivuosittain", + "payto.mandate.frequency.yearly": "%{count} maksua vuosittain", + "payto.label.firstName": "Tilinhaltijan etunimi", + "payto.label.lastName": "Tilinhaltijan sukunimi", + "payto.await.waitForConfirmation": "Odottaa hyväksyntääsi" } \ No newline at end of file diff --git a/packages/server/translations/fr-FR.json b/packages/server/translations/fr-FR.json index e6d25519ae..6d62d7a3b5 100644 --- a/packages/server/translations/fr-FR.json +++ b/packages/server/translations/fr-FR.json @@ -322,5 +322,34 @@ "paynow.mobileViewInstruction.step2": "Ouvrez l'application bancaire ou de paiement PayNow.", "paynow.mobileViewInstruction.step3": "Sélectionnez l'option permettant de scanner un code QR.", "paynow.mobileViewInstruction.step4": "Choisissez l'option pour télécharger un code QR et sélectionnez la capture d'écran.", - "paynow.mobileViewInstruction.step5": "Complétez la transaction." + "paynow.mobileViewInstruction.step5": "Complétez la transaction.", + "payto.payid.description": "Veuillez saisir le PayID et les détails du compte qui sont connectés à votre compte Payto.", + "payto.payid.label.identifier": "Identifiant", + "payto.payid.label.orgid": "Identifiant de l'organisation", + "payto.payid.option.phone": "Portable", + "payto.payid.option.email": "E-mail", + "payto.payid.option.orgid": "Identifiant de l'organisation", + "payto.bsb.description": "Saisissez le numéro de compte bancaire et la succursale bancaire qui est liée à votre compte pour continuer.", + "payto.bsb.label.bankAccountNumber": "Numéro du compte bancaire", + "payto.instructions.steps": "Connectez-vous à votre application bancaire PayTo@Autorisez l'accord PayTo@Approuvez les conditions de paiement@Finalisez la transaction", + "payto.confirmPayment": "Nous vous remercions de votre achat. Veuillez finaliser votre paiement en suivant les instructions ci-dessous.", + "payto.mandate.amount.label": "Montant", + "payto.mandate.frequency.label": "Fréquence", + "payto.mandate.remarks.label": "Description", + "payto.mandate.startsAt.label": "Date du premier paiement", + "payto.mandate.endsAt.label": "Date de fin", + "payto.mandate.payee.label": "Bénéficiaire", + "payto.mandate.amount.max": "Jusqu'à %{amount} par transaction", + "payto.mandate.frequency.adhoc-no-count": "Ad Hoc", + "payto.mandate.frequency.adhoc": "%{count} fois", + "payto.mandate.frequency.daily": "%{count} paiement(s) par jour", + "payto.mandate.frequency.weekly": "%{count} paiement(s) par semaine", + "payto.mandate.frequency.biWeekly": "%{count} paiement(s) toutes les deux semaines", + "payto.mandate.frequency.monthly": "%{count} paiement(s) mensuel(s)", + "payto.mandate.frequency.quarterly": "%{count} paiement(s) par trimestre", + "payto.mandate.frequency.halfYearly": "%{count} paiement(s) par semestre", + "payto.mandate.frequency.yearly": "%{count} paiement(s) par an", + "payto.label.firstName": "Prénom du titulaire du compte", + "payto.label.lastName": "Nom de famille du titulaire du compte", + "payto.await.waitForConfirmation": "En attente de votre approbation" } \ No newline at end of file diff --git a/packages/server/translations/hr-HR.json b/packages/server/translations/hr-HR.json index e18030904a..c4b9512a30 100644 --- a/packages/server/translations/hr-HR.json +++ b/packages/server/translations/hr-HR.json @@ -322,5 +322,34 @@ "paynow.mobileViewInstruction.step2": "Otvorite PayNow banku ili aplikaciju za plaćanje.", "paynow.mobileViewInstruction.step3": "Odaberite opciju skeniranja QR kôda.", "paynow.mobileViewInstruction.step4": "Odaberite opciju za prijenos QR-a i odaberite snimku zaslona.", - "paynow.mobileViewInstruction.step5": "Dovršite transakciju." + "paynow.mobileViewInstruction.step5": "Dovršite transakciju.", + "payto.payid.description": "Unesite PayID i podatke o računu koji su povezani s vašim Payto računom.", + "payto.payid.label.identifier": "Identifikator", + "payto.payid.label.orgid": "ID organizacije", + "payto.payid.option.phone": "Mobilni telefon", + "payto.payid.option.email": "E-pošta", + "payto.payid.option.orgid": "ID organizacije", + "payto.bsb.description": "Unesite broj bankovnog računa i državnu podružnicu banke koja je povezana s vašim računom kako biste nastavili", + "payto.bsb.label.bankAccountNumber": "Broj bankovnog računa", + "payto.instructions.steps": "Prijavite se u svoju PayTo bankarsku aplikaciju kako biste@autorizirali ugovor PayTo @odobrili uvjete plaćanja@dovršili transakciju", + "payto.confirmPayment": "Zahvaljujemo vam na kupnji, dovršite uplatu slijedeći upute u nastavku.", + "payto.mandate.amount.label": "Iznos", + "payto.mandate.frequency.label": "Učestalost", + "payto.mandate.remarks.label": "Opis", + "payto.mandate.startsAt.label": "Datum prve uplate", + "payto.mandate.endsAt.label": "Datum završetka", + "payto.mandate.payee.label": "Primatelj uplate", + "payto.mandate.amount.max": "Do %{amount} po transakciji", + "payto.mandate.frequency.adhoc-no-count": "Ad Hoc", + "payto.mandate.frequency.adhoc": "%{count} puta", + "payto.mandate.frequency.daily": "Dnevnih uplata: %{count}", + "payto.mandate.frequency.weekly": "Tjednih uplata: %{count}", + "payto.mandate.frequency.biWeekly": "Dvotjednih uplata: %{count}", + "payto.mandate.frequency.monthly": "Mjesečnih uplata: %{count}", + "payto.mandate.frequency.quarterly": "Kvartalnih uplata: %{count}", + "payto.mandate.frequency.halfYearly": "%{count}", + "payto.mandate.frequency.yearly": "Godišnjih uplata: %{count}", + "payto.label.firstName": "Ime vlasnika računa", + "payto.label.lastName": "Prezime vlasnika računa", + "payto.await.waitForConfirmation": "Čekamo vaše odobrenje" } \ No newline at end of file diff --git a/packages/server/translations/hu-HU.json b/packages/server/translations/hu-HU.json index 9715c90ac0..075a9a10b2 100644 --- a/packages/server/translations/hu-HU.json +++ b/packages/server/translations/hu-HU.json @@ -322,5 +322,34 @@ "paynow.mobileViewInstruction.step2": "Nyissa meg a PayNow banki vagy fizetési alkalmazást.", "paynow.mobileViewInstruction.step3": "Válassza ki a QR-kód beolvasásának lehetőségét.", "paynow.mobileViewInstruction.step4": "Válassza ki a QR-feltöltés lehetőségét, és jelölje ki a képernyőképet.", - "paynow.mobileViewInstruction.step5": "Fejezze be a tranzakciót." + "paynow.mobileViewInstruction.step5": "Fejezze be a tranzakciót.", + "payto.payid.description": "Adja meg a Payto-fiókjához kapcsolódó PayID-t és a számlaadatait.", + "payto.payid.label.identifier": "Azonosító", + "payto.payid.label.orgid": "Szervezeti azonosító", + "payto.payid.option.phone": "Mobiltelefon", + "payto.payid.option.email": "E-mail-cím", + "payto.payid.option.orgid": "Szervezeti azonosító", + "payto.bsb.description": "A folytatáshoz adja meg a bankszámlaszámot és a számlájához kapcsolódó bankfiók azonosító (BSB) kódját", + "payto.bsb.label.bankAccountNumber": "Bankszámlaszám", + "payto.instructions.steps": "Jelentkezzen be PayTo banki alkalmazásába@Hagyja jóvá a PayTo megállapodást@Fogadja el a fizetési feltételeket@Fejezze be a tranzakciót", + "payto.confirmPayment": "Köszönjük vásárlást! Fejezze be a fizetést az alábbi utasításokat követve.", + "payto.mandate.amount.label": "Összeg", + "payto.mandate.frequency.label": "Gyakoriság", + "payto.mandate.remarks.label": "Leírás", + "payto.mandate.startsAt.label": "Első fizetési dátum", + "payto.mandate.endsAt.label": "Befejező dátum", + "payto.mandate.payee.label": "Kedvezményezett", + "payto.mandate.amount.max": "Tranzakciónként legfeljebb %{amount}", + "payto.mandate.frequency.adhoc-no-count": "Eseti", + "payto.mandate.frequency.adhoc": "%{count} alkalommal", + "payto.mandate.frequency.daily": "%{count} fizetés naponta", + "payto.mandate.frequency.weekly": "%{count} fizetés hetente", + "payto.mandate.frequency.biWeekly": "%{count} fizetés kéthetente", + "payto.mandate.frequency.monthly": "%{count} fizetés havonta", + "payto.mandate.frequency.quarterly": "%{count} fizetés negyedévente", + "payto.mandate.frequency.halfYearly": "%{count} fizetés kétévente", + "payto.mandate.frequency.yearly": "%{count} fizetés évente", + "payto.label.firstName": "Számlatulajdonos utóneve", + "payto.label.lastName": "Számlatulajdonos vezetékneve", + "payto.await.waitForConfirmation": "Várakozás az Ön jóváhagyására" } \ No newline at end of file diff --git a/packages/server/translations/is-IS.json b/packages/server/translations/is-IS.json index f01b99b0cb..74257a70e4 100644 --- a/packages/server/translations/is-IS.json +++ b/packages/server/translations/is-IS.json @@ -324,5 +324,34 @@ "paynow.mobileViewInstruction.step2": "Opnaðu PayNow-banka- eða greiðsluapp.", "paynow.mobileViewInstruction.step3": "Veldu valkostinn til að skanna QR-kóða.", "paynow.mobileViewInstruction.step4": "Veldu valkostinn til að hlaða upp QR-kóða og veldu skjámyndina.", - "paynow.mobileViewInstruction.step5": "Ljúktu færslunni." + "paynow.mobileViewInstruction.step5": "Ljúktu færslunni.", + "payto.payid.description": "Sláðu inn PayID og reikningsupplýsingar sem eru tengjast Payto-reikningnum þínum.", + "payto.payid.label.identifier": "Auðkenni", + "payto.payid.label.orgid": "Auðkenni fyrirtækis", + "payto.payid.option.phone": "Farsími", + "payto.payid.option.email": "Netfang", + "payto.payid.option.orgid": "Auðkenni fyrirtækis", + "payto.bsb.description": "Sláðu inn bankareikningsnúmerið og bankaútibúið sem er tengt við reikninginn til að halda áfram", + "payto.bsb.label.bankAccountNumber": "Bankareikningsnúmer", + "payto.instructions.steps": "Skráðu þig inn á PayTo-bankaforritið@Samþykktu PayTo-samninginn@Samþykktu greiðsluskilmálana@Ljúktu við færsluna", + "payto.confirmPayment": "Takk fyrir kaupin, ljúktu við greiðsluna með því að fylgja leiðbeiningunum hér fyrir neðan.", + "payto.mandate.amount.label": "Upphæð", + "payto.mandate.frequency.label": "Tíðni", + "payto.mandate.remarks.label": "Lýsing", + "payto.mandate.startsAt.label": "Fyrsti greiðsludagur", + "payto.mandate.endsAt.label": "Lokadagsetning", + "payto.mandate.payee.label": "Greiðsluþegi", + "payto.mandate.amount.max": "Allt að %{amount} fyrir hverja færslu", + "payto.mandate.frequency.adhoc-no-count": "Sértækt", + "payto.mandate.frequency.adhoc": "%{count} skipti", + "payto.mandate.frequency.daily": "%{count} greiðsla/greiðslur daglega", + "payto.mandate.frequency.weekly": "%{count} greiðsla/greiðslur vikulega", + "payto.mandate.frequency.biWeekly": "%{count} greiðsla/greiðslur á tveggja vikna fresti", + "payto.mandate.frequency.monthly": "%{count} greiðsla/greiðslur á mánuði", + "payto.mandate.frequency.quarterly": "%{count} greiðsla/greiðslur ársfjórðungslega", + "payto.mandate.frequency.halfYearly": "%{count} greiðsla/greiðslur á sex mánaða fresti", + "payto.mandate.frequency.yearly": "%{count} greiðsla/greiðslur árlega", + "payto.label.firstName": "Fornafn reikningshafa", + "payto.label.lastName": "Eftirnafn reikningshafa", + "payto.await.waitForConfirmation": "Bíður samþykkis" } \ No newline at end of file diff --git a/packages/server/translations/it-IT.json b/packages/server/translations/it-IT.json index e89f0ca172..f7ad7b57d6 100644 --- a/packages/server/translations/it-IT.json +++ b/packages/server/translations/it-IT.json @@ -322,5 +322,34 @@ "paynow.mobileViewInstruction.step2": "Apri PayNow o l'app di pagamento.", "paynow.mobileViewInstruction.step3": "Seleziona l'opzione per scansionare un codice QR.", "paynow.mobileViewInstruction.step4": "Scegli l'opzione per caricare un QR e seleziona lo screenshot.", - "paynow.mobileViewInstruction.step5": "Completa la transazione." + "paynow.mobileViewInstruction.step5": "Completa la transazione.", + "payto.payid.description": "Immettere la PayID e i dettagli del conto collegati al conto Payto.", + "payto.payid.label.identifier": "Identificatore", + "payto.payid.label.orgid": "ID organizzazione", + "payto.payid.option.phone": "Cellulare", + "payto.payid.option.email": "E-mail", + "payto.payid.option.orgid": "ID dell'organizzazione", + "payto.bsb.description": "Per continuare, immettere il numero di conto bancario e la filiale della banca collegata al tuo conto", + "payto.bsb.label.bankAccountNumber": "Numero di conto bancario", + "payto.instructions.steps": "Accedere all'app bancaria PayTo@Autorizzare il contratto PayTo@Approvare i termini di pagamento@Completare la transazione", + "payto.confirmPayment": "Grazie per l'acquisto, completare il pagamento seguendo le istruzioni riportate di seguito.", + "payto.mandate.amount.label": "Somma", + "payto.mandate.frequency.label": "Frequenza", + "payto.mandate.remarks.label": "Descrizione", + "payto.mandate.startsAt.label": "Data del primo pagamento", + "payto.mandate.endsAt.label": "Data di fine", + "payto.mandate.payee.label": "Beneficiario", + "payto.mandate.amount.max": "Fino a %{amount} per transazione", + "payto.mandate.frequency.adhoc-no-count": "Ad Hoc", + "payto.mandate.frequency.adhoc": "%{count} volta(e)", + "payto.mandate.frequency.daily": "%{count} pagamento(i) giornaliero(i)", + "payto.mandate.frequency.weekly": "%{count} pagamento(i) settimanale(i)", + "payto.mandate.frequency.biWeekly": "%{count} pagamento/i ogni quindici giorni", + "payto.mandate.frequency.monthly": "%{count} pagamento/i mensile(i)", + "payto.mandate.frequency.quarterly": "%{count} pagamento/i trimestrale(i)", + "payto.mandate.frequency.halfYearly": "%{count} pagamento(i) semestrale(i)", + "payto.mandate.frequency.yearly": "%{count} pagamento/i all'anno", + "payto.label.firstName": "Nome del titolare del conto", + "payto.label.lastName": "Cognome del titolare del conto", + "payto.await.waitForConfirmation": "In attesa della tua approvazione" } \ No newline at end of file diff --git a/packages/server/translations/ja-JP.json b/packages/server/translations/ja-JP.json index dde1ea6343..4e7c068150 100644 --- a/packages/server/translations/ja-JP.json +++ b/packages/server/translations/ja-JP.json @@ -322,5 +322,34 @@ "paynow.mobileViewInstruction.step2": "PayNow銀行または支払アプリを開きます。", "paynow.mobileViewInstruction.step3": "QRコードをスキャンするオプションを選択します。", "paynow.mobileViewInstruction.step4": "QRをアップロードするオプションを選択し、スクリーンショットを選択します。", - "paynow.mobileViewInstruction.step5": "取引を完了します。" + "paynow.mobileViewInstruction.step5": "取引を完了します。", + "payto.payid.description": "Paytoアカウントに接続されているPayIDとアカウントの詳細を入力してください。", + "payto.payid.label.identifier": "識別子", + "payto.payid.label.orgid": "組織ID", + "payto.payid.option.phone": "携帯", + "payto.payid.option.email": "メールアドレス", + "payto.payid.option.orgid": "組織ID", + "payto.bsb.description": "アカウントに接続されている銀行口座番号と銀行支店コードを入力して、続行してください。", + "payto.bsb.label.bankAccountNumber": "銀行口座番号", + "payto.instructions.steps": "PayTo銀行アプリにログインしてPayTo契約を承認し、支払い条件を確認して、取引を完了してください", + "payto.confirmPayment": "お買い上げありがとうございます。以下の指示に従って、支払いを完了してください。", + "payto.mandate.amount.label": "金額", + "payto.mandate.frequency.label": "頻度", + "payto.mandate.remarks.label": "説明", + "payto.mandate.startsAt.label": "初回支払日", + "payto.mandate.endsAt.label": "終了日", + "payto.mandate.payee.label": "受取人", + "payto.mandate.amount.max": "取引ごとに最大%{amount}", + "payto.mandate.frequency.adhoc-no-count": "アドホック", + "payto.mandate.frequency.adhoc": "%{count}回", + "payto.mandate.frequency.daily": "%{count}件の支払を毎日", + "payto.mandate.frequency.weekly": "%{count}件の支払を毎週", + "payto.mandate.frequency.biWeekly": "%{count}件の支払を隔週", + "payto.mandate.frequency.monthly": "%{count}件の支払を毎月", + "payto.mandate.frequency.quarterly": "%{count}件の支払を毎四半期", + "payto.mandate.frequency.halfYearly": "%{count}件の支払を半年毎", + "payto.mandate.frequency.yearly": "%{count}件の支払を毎年", + "payto.label.firstName": "口座名義人の名", + "payto.label.lastName": "口座名義人の姓", + "payto.await.waitForConfirmation": "承認待ち" } \ No newline at end of file diff --git a/packages/server/translations/ko-KR.json b/packages/server/translations/ko-KR.json index 2cdbe796d5..5e11790efb 100644 --- a/packages/server/translations/ko-KR.json +++ b/packages/server/translations/ko-KR.json @@ -322,5 +322,34 @@ "paynow.mobileViewInstruction.step2": "PayNow 은행 또는 결제 앱을 여세요.", "paynow.mobileViewInstruction.step3": "QR 코드 스캔 옵션을 선택하세요.", "paynow.mobileViewInstruction.step4": "QR 업로드 옵션으로 들어가 스크린샷을 선택하세요.", - "paynow.mobileViewInstruction.step5": "거래를 완료하세요." + "paynow.mobileViewInstruction.step5": "거래를 완료하세요.", + "payto.payid.description": "Payto 계정에 연결된 PayID와 계정 세부 정보를 입력하세요.", + "payto.payid.label.identifier": "식별자", + "payto.payid.label.orgid": "조직 ID", + "payto.payid.option.phone": "휴대폰", + "payto.payid.option.email": "이메일", + "payto.payid.option.orgid": "조직 ID", + "payto.bsb.description": "계속하려면 계정에 연결된 은행 계좌 번호와 은행 지점을 입력하세요.", + "payto.bsb.label.bankAccountNumber": "계좌 번호", + "payto.instructions.steps": "PayTo 뱅킹 앱에 로그인하세요@PayTo 이용 약관을 승인하세요@결제 조건을 승인하세요@거래를 완료하세요", + "payto.confirmPayment": "구매해 주셔서 감사드리며, 아래 안내에 따라 결제를 완료하세요.", + "payto.mandate.amount.label": "금액", + "payto.mandate.frequency.label": "빈도", + "payto.mandate.remarks.label": "설명", + "payto.mandate.startsAt.label": "첫 번째 결제 날짜", + "payto.mandate.endsAt.label": "종료일", + "payto.mandate.payee.label": "수취인", + "payto.mandate.amount.max": "거래당 최대 %{amount}", + "payto.mandate.frequency.adhoc-no-count": "Ad Hoc", + "payto.mandate.frequency.adhoc": "%{count}건", + "payto.mandate.frequency.daily": "일별 결제 %{count}건", + "payto.mandate.frequency.weekly": "주별 결제 %{count}건", + "payto.mandate.frequency.biWeekly": "2주마다 결제 %{count}건", + "payto.mandate.frequency.monthly": "월별 결제 %{count}건", + "payto.mandate.frequency.quarterly": "분기별 결제 %{count}건", + "payto.mandate.frequency.halfYearly": "반년마다 결제 %{count}건", + "payto.mandate.frequency.yearly": "연간 결제 %{count}건", + "payto.label.firstName": "계좌 소유자 이름(이름)", + "payto.label.lastName": "계좌 소유자 성", + "payto.await.waitForConfirmation": "승인 대기 중" } \ No newline at end of file diff --git a/packages/server/translations/lt-LT.json b/packages/server/translations/lt-LT.json index a36b770469..45881a5bd0 100644 --- a/packages/server/translations/lt-LT.json +++ b/packages/server/translations/lt-LT.json @@ -324,5 +324,34 @@ "paynow.mobileViewInstruction.step2": "Atidarykite „PayNow“ banko arba mokėjimo programėlę.", "paynow.mobileViewInstruction.step3": "Pasirinkite QR kodo nuskaitymo parinktį.", "paynow.mobileViewInstruction.step4": "Pasirinkite parinktį įkelti QR kodą ir pasirinkite ekrano nuotrauką.", - "paynow.mobileViewInstruction.step5": "Užbaikite operaciją." + "paynow.mobileViewInstruction.step5": "Užbaikite operaciją.", + "payto.payid.description": "Įveskite „PayID“ ir sąskaitos duomenis, susietus su jūsų „Payto“ sąskaita.", + "payto.payid.label.identifier": "Identifikatorius", + "payto.payid.label.orgid": "Organizacijos identifikatorius", + "payto.payid.option.phone": "Mobilusis telefonas", + "payto.payid.option.email": "El. paštas", + "payto.payid.option.orgid": "Organizacijos ID", + "payto.bsb.description": "Įveskite banko sąskaitos numerį ir banko filialo kodą, susietą su jūsų sąskaita, kad galėtumėte tęsti", + "payto.bsb.label.bankAccountNumber": "Banko sąskaitos numeris", + "payto.instructions.steps": "Prisijunkite prie „PayTo“ banko programėlės@Autorizuokite „PayTo“ sutartį@Patvirtinkite mokėjimo sąlygas@Užbaikite operaciją", + "payto.confirmPayment": "Dėkojame už pirkinį, atlikite mokėjimą vadovaudamiesi toliau pateiktais nurodymais.", + "payto.mandate.amount.label": "Suma", + "payto.mandate.frequency.label": "Dažnis", + "payto.mandate.remarks.label": "Aprašymas", + "payto.mandate.startsAt.label": "Pirmojo mokėjimo data", + "payto.mandate.endsAt.label": "Pabaigos data", + "payto.mandate.payee.label": "Gavėjas", + "payto.mandate.amount.max": "Iki %{amount} vienai operacijai", + "payto.mandate.frequency.adhoc-no-count": "Ad Hoc", + "payto.mandate.frequency.adhoc": "%{count} kartas (-ai; -ų)", + "payto.mandate.frequency.daily": "%{count} mokėjimas (-ai; -ų) kasdien", + "payto.mandate.frequency.weekly": "%{count} mokėjimas (-ai; -ų) kas savaitę", + "payto.mandate.frequency.biWeekly": "%{count} mokėjimas (-ai; -ų) kas dvi savaites", + "payto.mandate.frequency.monthly": "%{count} mokėjimas (-ai; -ų) kas mėnesį", + "payto.mandate.frequency.quarterly": "%{count} mokėjimas (-ai; -ų) kas ketvirtį", + "payto.mandate.frequency.halfYearly": "%{count} mokėjimas (-ai; -ų) kas pusmetį", + "payto.mandate.frequency.yearly": "%{count} mokėjimas (-ai; -ų) kas metus", + "payto.label.firstName": "Sąskaitos turėtojo vardas", + "payto.label.lastName": "Sąskaitos turėtojo pavardė", + "payto.await.waitForConfirmation": "Laukiama jūsų patvirtinimo" } \ No newline at end of file diff --git a/packages/server/translations/lv-LV.json b/packages/server/translations/lv-LV.json index b9bfd9ea3f..b3f290e84e 100644 --- a/packages/server/translations/lv-LV.json +++ b/packages/server/translations/lv-LV.json @@ -324,5 +324,34 @@ "paynow.mobileViewInstruction.step2": "Atveriet PayNow banku vai maksājumu lietotni.", "paynow.mobileViewInstruction.step3": "Atlasiet opciju skenēt QR kodu.", "paynow.mobileViewInstruction.step4": "Izvēlieties opciju augšupielādēt QR kodu un veiciet ekrānuzņēmumu.", - "paynow.mobileViewInstruction.step5": "Pabeidziet darījumu." + "paynow.mobileViewInstruction.step5": "Pabeidziet darījumu.", + "payto.payid.description": "Ievadiet PayID un konta informāciju, kas ir savienota ar Jūsu Payto kontu.", + "payto.payid.label.identifier": "Identifikators", + "payto.payid.label.orgid": "Organizācijas ID", + "payto.payid.option.phone": "Mobilais", + "payto.payid.option.email": "E-pasts", + "payto.payid.option.orgid": "Organizācijas ID", + "payto.bsb.description": "Ievadiet bankas konta numuru un bankas valsts filiāli, kas ir saistīta ar jūsu kontu, lai turpinātu", + "payto.bsb.label.bankAccountNumber": "Bankas konta numurs", + "payto.instructions.steps": "Pierakstieties PayTo bankas lietotnē@Autorizējiet PayTo līgumu@Apstipriniet maksājuma noteikumus@Pabeidziet transakciju.", + "payto.confirmPayment": "Paldies par pirkumu, lūdzu, pabeidziet maksājumu, ievērojot tālāk sniegtos norādījumus.", + "payto.mandate.amount.label": "Summa", + "payto.mandate.frequency.label": "Biežums", + "payto.mandate.remarks.label": "Apraksts", + "payto.mandate.startsAt.label": "Pirmā maksājuma datums", + "payto.mandate.endsAt.label": "Beigu datums", + "payto.mandate.payee.label": "Saņēmējs", + "payto.mandate.amount.max": "Līdz %{amount} par vienu darījumu", + "payto.mandate.frequency.adhoc-no-count": "Speciāli", + "payto.mandate.frequency.adhoc": "%{count} reize(s)", + "payto.mandate.frequency.daily": "%{count} maksājums(-i) katru dienu", + "payto.mandate.frequency.weekly": "%{count} maksājums(-i) nedēļā", + "payto.mandate.frequency.biWeekly": "%{count} maksājums(-i) ik pēc divām nedēļām", + "payto.mandate.frequency.monthly": "%{count} maksājums(-i) mēnesī", + "payto.mandate.frequency.quarterly": "%{count} maksājums(-i) ceturksnī", + "payto.mandate.frequency.halfYearly": "%{count} maksājums(-i) divreiz gadā", + "payto.mandate.frequency.yearly": "%{count} maksājums(-i) gadā", + "payto.label.firstName": "Konta īpašnieka vārds", + "payto.label.lastName": "Konta īpašnieka uzvārds", + "payto.await.waitForConfirmation": "Gaida jūsu apstiprinājumu" } \ No newline at end of file diff --git a/packages/server/translations/nl-NL.json b/packages/server/translations/nl-NL.json index 692dee1f4e..8d3282f255 100644 --- a/packages/server/translations/nl-NL.json +++ b/packages/server/translations/nl-NL.json @@ -322,5 +322,34 @@ "paynow.mobileViewInstruction.step2": "Open de bank- of betaalapp van PayNow.", "paynow.mobileViewInstruction.step3": "Selecteer de optie om een QR-code te scannen.", "paynow.mobileViewInstruction.step4": "Kies de optie om een QR-code te uploaden en selecteer de schermafbeelding.", - "paynow.mobileViewInstruction.step5": "Voltooi de transactie." + "paynow.mobileViewInstruction.step5": "Voltooi de transactie.", + "payto.payid.description": "Voer de PayID en accountgegevens in die gekoppeld zijn aan uw Payto-account.", + "payto.payid.label.identifier": "Identificator", + "payto.payid.label.orgid": "Organisatie-ID", + "payto.payid.option.phone": "Mobiele telefoon", + "payto.payid.option.email": "E-mail", + "payto.payid.option.orgid": "Organisatie-ID", + "payto.bsb.description": "Voer het bankrekeningnummer en BSB in die aan uw rekening zijn gekoppeld om door te gaan", + "payto.bsb.label.bankAccountNumber": "Bankrekeningnummer", + "payto.instructions.steps": "Log in op uw PayTo-bankapp@Autoriseer de PayTo-overeenkomst@Keur de betalingsvoorwaarden goed@Voltooi de transactie", + "payto.confirmPayment": "Bedankt voor uw aankoop. Volg de onderstaande instructies om uw betaling te voltooien.", + "payto.mandate.amount.label": "Bedrag", + "payto.mandate.frequency.label": "Frequentie", + "payto.mandate.remarks.label": "Beschrijving", + "payto.mandate.startsAt.label": "Eerste betalingsdatum", + "payto.mandate.endsAt.label": "Einddatum", + "payto.mandate.payee.label": "Begunstigde", + "payto.mandate.amount.max": "Tot %{amount} per transactie toegestaan", + "payto.mandate.frequency.adhoc-no-count": "Ad hoc", + "payto.mandate.frequency.adhoc": "%{count} keer", + "payto.mandate.frequency.daily": "%{count} betaling(en) per dag", + "payto.mandate.frequency.weekly": "%{count} betaling(en) per week", + "payto.mandate.frequency.biWeekly": "%{count} betaling(en) om de twee weken", + "payto.mandate.frequency.monthly": "%{count} betaling(en) per maand", + "payto.mandate.frequency.quarterly": "%{count} betaling(en) per kwartaal", + "payto.mandate.frequency.halfYearly": "%{count} betaling(en) per half jaar", + "payto.mandate.frequency.yearly": "%{count} betaling(en) per jaar", + "payto.label.firstName": "Voornaam rekeninghouder", + "payto.label.lastName": "Achternaam rekeninghouder", + "payto.await.waitForConfirmation": "In afwachting van uw goedkeuring" } \ No newline at end of file diff --git a/packages/server/translations/no-NO.json b/packages/server/translations/no-NO.json index d80c3f0c45..9da87e4be1 100644 --- a/packages/server/translations/no-NO.json +++ b/packages/server/translations/no-NO.json @@ -322,5 +322,34 @@ "paynow.mobileViewInstruction.step2": "Åpne PayNow-banken eller betalingsappen.", "paynow.mobileViewInstruction.step3": "Velg alternativet å skanne en QR-kode.", "paynow.mobileViewInstruction.step4": "Velg alternativet å laste opp en QR-kode og velge skjermbildet.", - "paynow.mobileViewInstruction.step5": "Fullfør transaksjonen." + "paynow.mobileViewInstruction.step5": "Fullfør transaksjonen.", + "payto.payid.description": "Skriv inn PayID og kontoopplysningene som er tilknyttet PayTo-kontoen din.", + "payto.payid.label.identifier": "Identifikator", + "payto.payid.label.orgid": "Organisasjons-ID", + "payto.payid.option.phone": "Mobil", + "payto.payid.option.email": "E-postadresse", + "payto.payid.option.orgid": "Organisasjons-ID", + "payto.bsb.description": "Skriv inn bankkontonummeret og Bank State Branch som er knyttet til kontoen din, for å fortsette", + "payto.bsb.label.bankAccountNumber": "Bankkontonummer", + "payto.instructions.steps": "Logg inn i PayTo-bankappen@Autoriser PayTo-avtalen@Godkjenn betalingsvilkårene@Fullfør transaksjonen", + "payto.confirmPayment": "Takk for kjøpet. Følg instruksjonene nedenfor for å fullføre betalingen.", + "payto.mandate.amount.label": "Beløp", + "payto.mandate.frequency.label": "Hyppighet", + "payto.mandate.remarks.label": "Beskrivelse", + "payto.mandate.startsAt.label": "Første betalingsdato", + "payto.mandate.endsAt.label": "Sluttdato", + "payto.mandate.payee.label": "Betalingsmottaker", + "payto.mandate.amount.max": "Opptil %{amount} per transaksjon", + "payto.mandate.frequency.adhoc-no-count": "Ad hoc", + "payto.mandate.frequency.adhoc": "%{count} gang(er)", + "payto.mandate.frequency.daily": "%{count} betaling(er) per dag", + "payto.mandate.frequency.weekly": "%{count} betaling(er) per uke", + "payto.mandate.frequency.biWeekly": "%{count} betaling(er) annenhver uke", + "payto.mandate.frequency.monthly": "%{count} betaling(er) per måned", + "payto.mandate.frequency.quarterly": "%{count} betaling(er) per kvartal", + "payto.mandate.frequency.halfYearly": "%{count} betaling(er) per halvår", + "payto.mandate.frequency.yearly": "%{count} betaling(er) per år", + "payto.label.firstName": "Kontoinnehaverens fornavn", + "payto.label.lastName": "Kontoinnehaverens etternavn", + "payto.await.waitForConfirmation": "Venter på godkjenningen din" } \ No newline at end of file diff --git a/packages/server/translations/pl-PL.json b/packages/server/translations/pl-PL.json index 4a31d7d4bc..ca0758e5d5 100644 --- a/packages/server/translations/pl-PL.json +++ b/packages/server/translations/pl-PL.json @@ -322,5 +322,34 @@ "paynow.mobileViewInstruction.step2": "Otwórz aplikację bankową lub płatniczą PayNow.", "paynow.mobileViewInstruction.step3": "Wybierz opcję zeskanowania kodu QR.", "paynow.mobileViewInstruction.step4": "Wybierz opcję przesłania kodu QR i wybierz zrzut ekranu.", - "paynow.mobileViewInstruction.step5": "Sfinalizuj transakcję." + "paynow.mobileViewInstruction.step5": "Sfinalizuj transakcję.", + "payto.payid.description": "Wprowadź PayID i dane konta powiązane z Twoim kontem Payto.", + "payto.payid.label.identifier": "Identyfikator", + "payto.payid.label.orgid": "Identyfikator organizacji", + "payto.payid.option.phone": "Telefon komórkowy", + "payto.payid.option.email": "E-mail", + "payto.payid.option.orgid": "Identyfikator organizacji", + "payto.bsb.description": "Aby kontynuować, wprowadź numer konta bankowego i oddział banku, który jest powiązany z Twoim kontem", + "payto.bsb.label.bankAccountNumber": "Numer rachunku", + "payto.instructions.steps": "Zaloguj się do aplikacji bankowej PayTo@Autoryzuj umowę PayTo@Zatwierdź warunki płatności@Dokończ transakcję", + "payto.confirmPayment": "Dziękujemy za zakup, dokończ płatność, postępując zgodnie z poniższymi instrukcjami.", + "payto.mandate.amount.label": "Kwota", + "payto.mandate.frequency.label": "Częstotliwość", + "payto.mandate.remarks.label": "Opis", + "payto.mandate.startsAt.label": "Data pierwszej płatności", + "payto.mandate.endsAt.label": "Data zakończenia", + "payto.mandate.payee.label": "Odbiorca", + "payto.mandate.amount.max": "Do %{amount} na transakcję", + "payto.mandate.frequency.adhoc-no-count": "Ad Hoc", + "payto.mandate.frequency.adhoc": "%{count} raz(y)", + "payto.mandate.frequency.daily": "%{count} płatności dziennie", + "payto.mandate.frequency.weekly": "%{count} płatności tygodniowo", + "payto.mandate.frequency.biWeekly": "%{count} płatności co dwa tygodnie", + "payto.mandate.frequency.monthly": "%{count} płatności miesięcznie", + "payto.mandate.frequency.quarterly": "%{count} płatności kwartalnie", + "payto.mandate.frequency.halfYearly": "%{count} płatności co pół roku", + "payto.mandate.frequency.yearly": "%{count} płatności rocznie", + "payto.label.firstName": "Imię posiadacza rachunku", + "payto.label.lastName": "Nazwisko posiadacza rachunku", + "payto.await.waitForConfirmation": "Oczekiwanie na Twoją zgodę" } \ No newline at end of file diff --git a/packages/server/translations/pt-BR.json b/packages/server/translations/pt-BR.json index 7ce2386a10..3a351f6379 100644 --- a/packages/server/translations/pt-BR.json +++ b/packages/server/translations/pt-BR.json @@ -323,5 +323,34 @@ "paynow.mobileViewInstruction.step2": "Abra o banco PayNow ou o aplicativo de pagamento.", "paynow.mobileViewInstruction.step3": "Selecione a opção para escanear um código QR.", "paynow.mobileViewInstruction.step4": "Escolha a opção para carregar um QR e selecione a captura de tela.", - "paynow.mobileViewInstruction.step5": "Conclua a transação." + "paynow.mobileViewInstruction.step5": "Conclua a transação.", + "payto.payid.description": "Digite o PayID e as informações da conta associados à sua conta Payto.", + "payto.payid.label.identifier": "Identificador", + "payto.payid.label.orgid": "ID da organização", + "payto.payid.option.phone": "Dispositivo móvel", + "payto.payid.option.email": "E-mail", + "payto.payid.option.orgid": "ID da organização", + "payto.bsb.description": "Informe o número da conta bancária e a agência bancária estadual associada à sua conta para continuar", + "payto.bsb.label.bankAccountNumber": "Número da conta bancária", + "payto.instructions.steps": "Faça login no seu aplicativo bancário PayTo para@Autorizar o acordo PayTo@Aprovar os termos de pagamentos@Concluir a transação", + "payto.confirmPayment": "Obrigado pela sua compra! Siga as instruções abaixo para concluir o pagamento.", + "payto.mandate.amount.label": "Valor", + "payto.mandate.frequency.label": "Frequência", + "payto.mandate.remarks.label": "Descrição", + "payto.mandate.startsAt.label": "Primeira data de pagamento", + "payto.mandate.endsAt.label": "Data de término", + "payto.mandate.payee.label": "Beneficiário", + "payto.mandate.amount.max": "Até %{amount} por transação", + "payto.mandate.frequency.adhoc-no-count": "Ad Hoc", + "payto.mandate.frequency.adhoc": "%{count} vezes", + "payto.mandate.frequency.daily": "%{count} pagamento(s) por dia", + "payto.mandate.frequency.weekly": "%{count} pagamento(s) por semana", + "payto.mandate.frequency.biWeekly": "%{count} pagamento(s) por quinzena", + "payto.mandate.frequency.monthly": "%{count} pagamento(s) por mês", + "payto.mandate.frequency.quarterly": "%{count} pagamento(s) por trimestre", + "payto.mandate.frequency.halfYearly": "%{count} pagamento(s) por biênio", + "payto.mandate.frequency.yearly": "%{count} pagamento(s) por ano", + "payto.label.firstName": "Nome do titular da conta", + "payto.label.lastName": "Sobrenome do titular da conta", + "payto.await.waitForConfirmation": "Aguardando sua aprovação" } \ No newline at end of file diff --git a/packages/server/translations/pt-PT.json b/packages/server/translations/pt-PT.json index ab54f80830..7a274b192a 100644 --- a/packages/server/translations/pt-PT.json +++ b/packages/server/translations/pt-PT.json @@ -324,5 +324,34 @@ "paynow.mobileViewInstruction.step2": "Abra a aplicação bancária ou de pagamento da PayNow.", "paynow.mobileViewInstruction.step3": "Selecione a opção para ler um código QR.", "paynow.mobileViewInstruction.step4": "Escolha a opção para carregar um QR e selecione a captura de ecrã.", - "paynow.mobileViewInstruction.step5": "Conclua a transação." + "paynow.mobileViewInstruction.step5": "Conclua a transação.", + "payto.payid.description": "Introduza o PayID e os dados da conta que estão ligados à sua conta Payto.", + "payto.payid.label.identifier": "Identificador", + "payto.payid.label.orgid": "ID da Organização", + "payto.payid.option.phone": "Celular", + "payto.payid.option.email": "E-mail", + "payto.payid.option.orgid": "ID da Organização", + "payto.bsb.description": "Para continuar, insira o número da conta e a agência bancária associadas à sua conta", + "payto.bsb.label.bankAccountNumber": "Número da conta bancária", + "payto.instructions.steps": "Inicie sessão na sua aplicação bancária PayTo@Autorize o contrato PayTo@Aprove os termos de pagamento@Conclua a transação", + "payto.confirmPayment": "Agradecemos a sua compra, conclua o pagamento ao seguir as instruções abaixo.", + "payto.mandate.amount.label": "Valor", + "payto.mandate.frequency.label": "Frequência", + "payto.mandate.remarks.label": "Descrição", + "payto.mandate.startsAt.label": "Data do primeiro pagamento", + "payto.mandate.endsAt.label": "Data de fim", + "payto.mandate.payee.label": "Beneficiário", + "payto.mandate.amount.max": "Até %{amount} por transação", + "payto.mandate.frequency.adhoc-no-count": "Ad Hoc", + "payto.mandate.frequency.adhoc": "%{count} vez(es)", + "payto.mandate.frequency.daily": "%{count} pagamentos diários", + "payto.mandate.frequency.weekly": "%{count} pagamentos semanais", + "payto.mandate.frequency.biWeekly": "%{count} pagamentos quinzenais", + "payto.mandate.frequency.monthly": "%{count} pagamentos mensais", + "payto.mandate.frequency.quarterly": "%{count} pagamentos trimestrais", + "payto.mandate.frequency.halfYearly": "%{count} pagamentos semestrais", + "payto.mandate.frequency.yearly": "%{count} pagamentos anuais", + "payto.label.firstName": "Nome próprio do titular da conta", + "payto.label.lastName": "Sobrenome do titular da conta", + "payto.await.waitForConfirmation": "Aguardando sua aprovação" } \ No newline at end of file diff --git a/packages/server/translations/ro-RO.json b/packages/server/translations/ro-RO.json index 733266aecd..32c1a0cf2a 100644 --- a/packages/server/translations/ro-RO.json +++ b/packages/server/translations/ro-RO.json @@ -322,5 +322,34 @@ "paynow.mobileViewInstruction.step2": "Deschideți aplicația bancară sau de plată PayNow.", "paynow.mobileViewInstruction.step3": "Selectați opțiunea pentru a scana un cod QR.", "paynow.mobileViewInstruction.step4": "Alegeți opțiunea de a încărca un QR și selectați captura de ecran.", - "paynow.mobileViewInstruction.step5": "Finalizați tranzacția." + "paynow.mobileViewInstruction.step5": "Finalizați tranzacția.", + "payto.payid.description": "Completați PayID și detaliile contului care sunt conectate la contul dvs. Payto.", + "payto.payid.label.identifier": "Identificator", + "payto.payid.label.orgid": "ID organizație", + "payto.payid.option.phone": "Mobil", + "payto.payid.option.email": "E-mail", + "payto.payid.option.orgid": "ID organizație", + "payto.bsb.description": "Pentru a continua, introduceți numărul contului bancar și sucursala băncii de stat care este asociată cu contul dvs.", + "payto.bsb.label.bankAccountNumber": "Numărul contului bancar", + "payto.instructions.steps": "Conectați-vă la aplicația dvs. bancară PayTo. Acceptați acordul PayTo. Aprobați condițiile de plată. Finalizați tranzacția.", + "payto.confirmPayment": "Vă mulțumim pentru achiziție, finalizați plata urmând instrucțiunile de mai jos.", + "payto.mandate.amount.label": "Sumă", + "payto.mandate.frequency.label": "Frecvență", + "payto.mandate.remarks.label": "Descriere", + "payto.mandate.startsAt.label": "Data primei plăți", + "payto.mandate.endsAt.label": "Data de sfârșit", + "payto.mandate.payee.label": "Beneficiarul plății", + "payto.mandate.amount.max": "Până la %{amount} per tranzacție", + "payto.mandate.frequency.adhoc-no-count": "Ad-hoc", + "payto.mandate.frequency.adhoc": "%{count} dată/dăți", + "payto.mandate.frequency.daily": "%{count} plată/plăți zilnice", + "payto.mandate.frequency.weekly": "%{count} plată/plăți săptămânale", + "payto.mandate.frequency.biWeekly": "%{count} plată/plăți bilunare", + "payto.mandate.frequency.monthly": "%{count} plată/plăți lunare", + "payto.mandate.frequency.quarterly": "%{count} plată/plăți trimestriale", + "payto.mandate.frequency.halfYearly": "%{count} plată/plăți semestriale", + "payto.mandate.frequency.yearly": "%{count} plată/plăți anuale", + "payto.label.firstName": "Prenumele titularului de cont", + "payto.label.lastName": "Numele de familie al titularului de cont", + "payto.await.waitForConfirmation": "Se așteaptă aprobarea dvs." } \ No newline at end of file diff --git a/packages/server/translations/ru-RU.json b/packages/server/translations/ru-RU.json index 0cf75394fa..3dd0aba1bb 100644 --- a/packages/server/translations/ru-RU.json +++ b/packages/server/translations/ru-RU.json @@ -320,5 +320,34 @@ "paynow.mobileViewInstruction.step2": "Откройте банковское или платежное приложение PayNow.", "paynow.mobileViewInstruction.step3": "Выберите опцию сканирования QR-кода.", "paynow.mobileViewInstruction.step4": "Выберите опцию загрузки QR-кода и скриншот.", - "paynow.mobileViewInstruction.step5": "Завершите транзакцию." + "paynow.mobileViewInstruction.step5": "Завершите транзакцию.", + "payto.payid.description": "Введите PayID и данные счета, которые связаны с вашей учетной записью Payto.", + "payto.payid.label.identifier": "Идентификатор", + "payto.payid.label.orgid": "Идентификатор организации", + "payto.payid.option.phone": "Мобильный", + "payto.payid.option.email": "Эл. почта", + "payto.payid.option.orgid": "Идентификатор организации", + "payto.bsb.description": "Введите номер банковского счета и отделение банка, связанное с вашим счетом, чтобы продолжить", + "payto.bsb.label.bankAccountNumber": "Номер банковского счета", + "payto.instructions.steps": "Войдите в банковское приложение PayTo@Подпишите соглашение PayTo@Одобрите условия оплаты@Завершите транзакцию", + "payto.confirmPayment": "Благодарим за покупку. Завершите оплату, следуя инструкциям ниже.", + "payto.mandate.amount.label": "Сумма", + "payto.mandate.frequency.label": "Частота", + "payto.mandate.remarks.label": "Описание", + "payto.mandate.startsAt.label": "Дата первого платежа", + "payto.mandate.endsAt.label": "Дата окончания", + "payto.mandate.payee.label": "Получатель", + "payto.mandate.amount.max": "До %{amount} на одну транзакцию", + "payto.mandate.frequency.adhoc-no-count": "По необходимости", + "payto.mandate.frequency.adhoc": "%{count} раз(а)", + "payto.mandate.frequency.daily": "Платежей за день: %{count}", + "payto.mandate.frequency.weekly": "Платежей за неделю: %{count}", + "payto.mandate.frequency.biWeekly": "Платежей за две недели: %{count}", + "payto.mandate.frequency.monthly": "Платежей за месяц %{count}", + "payto.mandate.frequency.quarterly": "Платежей за квартал: %{count}", + "payto.mandate.frequency.halfYearly": "Платежей за полгода: %{count}", + "payto.mandate.frequency.yearly": "Платежей за год: %{count}", + "payto.label.firstName": "Имя владельца счета", + "payto.label.lastName": "Фамилия владельца счета", + "payto.await.waitForConfirmation": "В ожидании вашего одобрения" } \ No newline at end of file diff --git a/packages/server/translations/sk-SK.json b/packages/server/translations/sk-SK.json index a319f80ed4..f9a041a723 100644 --- a/packages/server/translations/sk-SK.json +++ b/packages/server/translations/sk-SK.json @@ -322,5 +322,34 @@ "paynow.mobileViewInstruction.step2": "Otvorte banku alebo platobnú aplikáciu PayNow.", "paynow.mobileViewInstruction.step3": "Vyberte možnosť na nasnímanie QR kódu.", "paynow.mobileViewInstruction.step4": "Vyberte možnosť nahrať QR kód a vyberte snímku obrazovky.", - "paynow.mobileViewInstruction.step5": "Dokončite transakciu." + "paynow.mobileViewInstruction.step5": "Dokončite transakciu.", + "payto.payid.description": "Zadajte PayID a údaje o účte, ktoré sú pripojené k vášmu účtu Payto.", + "payto.payid.label.identifier": "Identifikátor", + "payto.payid.label.orgid": "ID organizácie", + "payto.payid.option.phone": "Mobilný telefón", + "payto.payid.option.email": "E-mail", + "payto.payid.option.orgid": "ID organizácie", + "payto.bsb.description": "Pokračujte zadaním čísla bankového účtu a pobočky banky, ktorá je pripojená k vášmu účtu", + "payto.bsb.label.bankAccountNumber": "Číslo bankového účtu", + "payto.instructions.steps": "Prihláste sa do svojej bankovej aplikácie PayTo@Autorizujte zmluvu s PayTo@Schváľte podmienky platby@Dokončite transakciu", + "payto.confirmPayment": "Ďakujeme vám za nákup, dokončite platbu podľa nižšie uvedených pokynov.", + "payto.mandate.amount.label": "Čiastka", + "payto.mandate.frequency.label": "Frekvencia", + "payto.mandate.remarks.label": "Opis", + "payto.mandate.startsAt.label": "Dátum prvej platby", + "payto.mandate.endsAt.label": "Dátum ukončenia", + "payto.mandate.payee.label": "Príjemca", + "payto.mandate.amount.max": "Maximálne %{amount} na jednu transakciu", + "payto.mandate.frequency.adhoc-no-count": "Ad Hoc", + "payto.mandate.frequency.adhoc": "%{count} krát", + "payto.mandate.frequency.daily": "%{count} platba(y/ieb) denne", + "payto.mandate.frequency.weekly": "%{count} platba(y/ieb) týždenne", + "payto.mandate.frequency.biWeekly": "%{count} platba(y/ieb) každé dva týždne", + "payto.mandate.frequency.monthly": "%{count} platba(y/ieb) mesačne", + "payto.mandate.frequency.quarterly": "%{count} platba(y/ieb) štvrťročne", + "payto.mandate.frequency.halfYearly": "%{count} platba(y/ieb) polročne", + "payto.mandate.frequency.yearly": "%{count} platba(y/ieb) ročne", + "payto.label.firstName": "Krstné meno majiteľa účtu", + "payto.label.lastName": "Priezvisko majiteľa účtu", + "payto.await.waitForConfirmation": "Čakáme na váš súhlas" } \ No newline at end of file diff --git a/packages/server/translations/sl-SI.json b/packages/server/translations/sl-SI.json index 6fc565d231..c4211a0848 100644 --- a/packages/server/translations/sl-SI.json +++ b/packages/server/translations/sl-SI.json @@ -322,5 +322,34 @@ "paynow.mobileViewInstruction.step2": "Odprite banko PayNow ali aplikacijo za plačevanje.", "paynow.mobileViewInstruction.step3": "Izberite možnost za skeniranje kode QR.", "paynow.mobileViewInstruction.step4": "Izberite možnost za nalaganje QR in izberite posnetek zaslona.", - "paynow.mobileViewInstruction.step5": "Zaključite transakcijo." + "paynow.mobileViewInstruction.step5": "Zaključite transakcijo.", + "payto.payid.description": "Vnesite PayID in podrobnosti o računu, ki so povezani z vašim računom PayTo.", + "payto.payid.label.identifier": "Identifikator", + "payto.payid.label.orgid": "ID organizacije", + "payto.payid.option.phone": "Mobilni telefon", + "payto.payid.option.email": "E-pošta", + "payto.payid.option.orgid": "ID organizacije", + "payto.bsb.description": "Za nadaljevanje vnesite številko bančnega računa in podružnico banke, ki sta povezani z vašim računom", + "payto.bsb.label.bankAccountNumber": "Številka bančnega računa", + "payto.instructions.steps": "Prijavite se v bančno aplikacijo PayTo@Sprejmite pogodbo PayTo@Potrdite plačilne pogoje@Zaključite transakcijo", + "payto.confirmPayment": "Zahvaljujemo se vam za nakup. Izvedite plačilo po spodnjih navodilih.", + "payto.mandate.amount.label": "Znesek", + "payto.mandate.frequency.label": "Pogostost", + "payto.mandate.remarks.label": "Opis", + "payto.mandate.startsAt.label": "Datum prvega plačila", + "payto.mandate.endsAt.label": "Končni datum", + "payto.mandate.payee.label": "Prejemnik plačila", + "payto.mandate.amount.max": "Do %{amount} na transakcijo", + "payto.mandate.frequency.adhoc-no-count": "Enkratno plačilo", + "payto.mandate.frequency.adhoc": "%{count}-krat", + "payto.mandate.frequency.daily": "Št. plačil na dan: %{count}", + "payto.mandate.frequency.weekly": "Št. plačil na teden: %{count}", + "payto.mandate.frequency.biWeekly": "Št. plačil na 14 dni: %{count}", + "payto.mandate.frequency.monthly": "Št. plačil na mesec: %{count}", + "payto.mandate.frequency.quarterly": "Št. plačil na četrtletje: %{count}", + "payto.mandate.frequency.halfYearly": "Št. plačil na polletje: %{count}", + "payto.mandate.frequency.yearly": "Št. plačil na leto: %{count}", + "payto.label.firstName": "Ime imetnika računa", + "payto.label.lastName": "Priimek imetnika računa", + "payto.await.waitForConfirmation": "Čakanje na vašo odobritev" } \ No newline at end of file diff --git a/packages/server/translations/sv-SE.json b/packages/server/translations/sv-SE.json index f79eab59d9..e63ca5304c 100644 --- a/packages/server/translations/sv-SE.json +++ b/packages/server/translations/sv-SE.json @@ -322,5 +322,34 @@ "paynow.mobileViewInstruction.step2": "Öppna PayNow-banken eller betalningsappen.", "paynow.mobileViewInstruction.step3": "Välj alternativet för att skanna en QR-kod.", "paynow.mobileViewInstruction.step4": "Välj alternativet att ladda upp en QR och välj skärmdumpen.", - "paynow.mobileViewInstruction.step5": "Slutför transaktionen." + "paynow.mobileViewInstruction.step5": "Slutför transaktionen.", + "payto.payid.description": "Ange PayID och kontouppgifter för Payto-kontot.", + "payto.payid.label.identifier": "Identifierare", + "payto.payid.label.orgid": "Organisations-id", + "payto.payid.option.phone": "Mobil", + "payto.payid.option.email": "E-postadress", + "payto.payid.option.orgid": "Organisations-id", + "payto.bsb.description": "Ange bankkontonumret och det bankkontor som är kopplat till ditt konto för att fortsätta", + "payto.bsb.label.bankAccountNumber": "Bankkontonummer", + "payto.instructions.steps": "Logga in på din PayTo-bankapp@Godkänn PayTo-avtalet@Godkänn betalningsvillkoren@Slutför transaktionen", + "payto.confirmPayment": "Tack för ditt köp. Slutför betalningen genom att följa instruktionerna nedan.", + "payto.mandate.amount.label": "Belopp", + "payto.mandate.frequency.label": "Frekvens", + "payto.mandate.remarks.label": "Beskrivning", + "payto.mandate.startsAt.label": "Första betalningsdatum", + "payto.mandate.endsAt.label": "Slutdatum", + "payto.mandate.payee.label": "Betalningsmottagare", + "payto.mandate.amount.max": "Upp till %{amount} per transaktion", + "payto.mandate.frequency.adhoc-no-count": "Ad hoc", + "payto.mandate.frequency.adhoc": "%{count} gång(er)", + "payto.mandate.frequency.daily": "%{count} betalning(ar) dagligen", + "payto.mandate.frequency.weekly": "%{count} betalning(ar) varje vecka", + "payto.mandate.frequency.biWeekly": "%{count} betalning(ar) varannan vecka", + "payto.mandate.frequency.monthly": "%{count} betalning(ar) i månaden", + "payto.mandate.frequency.quarterly": "%{count} betalning(ar) kvartalsvis", + "payto.mandate.frequency.halfYearly": "%{count} betalning(ar) halvårsvis", + "payto.mandate.frequency.yearly": "%{count} betalning(ar) om året", + "payto.label.firstName": "Kontoinnehavarens förnamn", + "payto.label.lastName": "Kontoinnehavarens efternamn", + "payto.await.waitForConfirmation": "Väntar på ditt godkännande" } \ No newline at end of file diff --git a/packages/server/translations/zh-CN.json b/packages/server/translations/zh-CN.json index 215e396ecd..e26f6179d5 100644 --- a/packages/server/translations/zh-CN.json +++ b/packages/server/translations/zh-CN.json @@ -322,5 +322,34 @@ "paynow.mobileViewInstruction.step2": "打开 PayNow 银行或支付应用程序。", "paynow.mobileViewInstruction.step3": "选择扫描二维码的选项。", "paynow.mobileViewInstruction.step4": "选择上传二维码选项并选择截图。", - "paynow.mobileViewInstruction.step5": "完成交易。" + "paynow.mobileViewInstruction.step5": "完成交易。", + "payto.payid.description": "请输入与您的 Payto 账户关联的 PayID 和账户详细信息。", + "payto.payid.label.identifier": "标识符", + "payto.payid.label.orgid": "组织 ID", + "payto.payid.option.phone": "移动设备", + "payto.payid.option.email": "电子邮件", + "payto.payid.option.orgid": "组织 ID", + "payto.bsb.description": "请输入银行账号和与您的账户关联的银行州分行以继续", + "payto.bsb.label.bankAccountNumber": "银行账号", + "payto.instructions.steps": "登录您的 PayTo 银行应用程序@授权 PayTo 协议@批准支付条款@完成交易", + "payto.confirmPayment": "感谢您的购买,请按照以下说明完成支付。", + "payto.mandate.amount.label": "金额", + "payto.mandate.frequency.label": "频率", + "payto.mandate.remarks.label": "描述", + "payto.mandate.startsAt.label": "首次支付日期", + "payto.mandate.endsAt.label": "结束日期", + "payto.mandate.payee.label": "收款人", + "payto.mandate.amount.max": "每笔交易的最大金额为 %{amount}", + "payto.mandate.frequency.adhoc-no-count": "临时", + "payto.mandate.frequency.adhoc": "%{count} 次", + "payto.mandate.frequency.daily": "每日 %{count} 笔付款", + "payto.mandate.frequency.weekly": "每周 %{count} 笔付款", + "payto.mandate.frequency.biWeekly": "每每两周 %{count} 笔付款", + "payto.mandate.frequency.monthly": "每月 %{count} 笔付款", + "payto.mandate.frequency.quarterly": "每季度 %{count} 笔付款", + "payto.mandate.frequency.halfYearly": "每每半年 %{count} 笔付款", + "payto.mandate.frequency.yearly": "每年 %{count} 笔付款", + "payto.label.firstName": "账户持有人名字", + "payto.label.lastName": "账户持有人姓氏", + "payto.await.waitForConfirmation": "等待您的批准…" } \ No newline at end of file diff --git a/packages/server/translations/zh-TW.json b/packages/server/translations/zh-TW.json index 378159e0ce..68af07079f 100644 --- a/packages/server/translations/zh-TW.json +++ b/packages/server/translations/zh-TW.json @@ -322,5 +322,34 @@ "paynow.mobileViewInstruction.step2": "開啟 PayNow 銀行或支付應用程式。", "paynow.mobileViewInstruction.step3": "選取掃描 QR 代碼的選項。", "paynow.mobileViewInstruction.step4": "選擇上傳 QR 代碼的選項並選取此螢幕擷取畫面。", - "paynow.mobileViewInstruction.step5": "完成此交易。" + "paynow.mobileViewInstruction.step5": "完成此交易。", + "payto.payid.description": "請輸入與 Payto 帳戶相連的 PayID 和帳戶詳情。", + "payto.payid.label.identifier": "識別碼", + "payto.payid.label.orgid": "組織 ID", + "payto.payid.option.phone": "手機", + "payto.payid.option.email": "電子郵件", + "payto.payid.option.orgid": "組織 ID", + "payto.bsb.description": "請輸入銀行帳號以及您帳戶的銀行分行代碼以繼續至下一步", + "payto.bsb.label.bankAccountNumber": "銀行帳戶號碼", + "payto.instructions.steps": "登入您的 PayTo 金融應用程式@授權《PayTo 協議》@同意《付款條款》@完成交易", + "payto.confirmPayment": "感謝您的購買,敬請依照以下的指示來完成付款。", + "payto.mandate.amount.label": "金額", + "payto.mandate.frequency.label": "頻率", + "payto.mandate.remarks.label": "說明", + "payto.mandate.startsAt.label": "首次付款日期", + "payto.mandate.endsAt.label": "結束日期", + "payto.mandate.payee.label": "受款人", + "payto.mandate.amount.max": "每筆交易的金額上限為 %{amount}", + "payto.mandate.frequency.adhoc-no-count": "隨選", + "payto.mandate.frequency.adhoc": "%{count} 次", + "payto.mandate.frequency.daily": "每日 %{count} 筆付款", + "payto.mandate.frequency.weekly": "%{count} 筆付款(每週)", + "payto.mandate.frequency.biWeekly": "每兩週 %{count} 筆付款", + "payto.mandate.frequency.monthly": "每月 %{count} 筆付款", + "payto.mandate.frequency.quarterly": "每季 %{count} 筆付款", + "payto.mandate.frequency.halfYearly": "每半年 %{count} 筆付款", + "payto.mandate.frequency.yearly": "每年 %{count} 筆付款", + "payto.label.firstName": "帳戶持有人名字", + "payto.label.lastName": "帳戶持有人的姓氏", + "payto.await.waitForConfirmation": "正在等待您的核准" } \ No newline at end of file