- Get Started
- Guides
- Integrations
- References
- API Reference
- Basic Payment
- Forex
- Authentication
- Card Account
- Apple Pay
- Virtual Account
- Bank Account
- Token Account
- Customer
- Billing Address
- Merchant Billing Address
- Shipping Address
- Merchant Shipping Address
- Merchant
- Corporate
- Recipient
- Marketplace & Cart
- Airline
- Lodging
- Passenger
- Tokenization
- Recurring Migration
- 3D Secure
- Custom Parameters
- Async Payments
- Webhook notifications
- Job
- Risk
- Response Parameters
- Card On File
- Chargeback
- Result Codes
- Payment Methods
- Transaction Flows
- Regression Testing
- Data Retention Policy
- API Reference
- Support
SDK Internationalization
iOS
Android
Ready-to-use UI currently supports the following languages:
- English (enen_US)
- Arabic (arar_AR)
- Basque (eu-ESeu_ES)
- Catalan (caca_ES)
- Chinese Simplified (zh-Hanszh_CN)
- Croatian (hrhr_HR)
- Czech (cscs_CZ)
- Danish (dada_DK)
- Dutch (nlnl_NL)
- Dutch Belgium (nl-BEnl_BE)
- Finnish (fifi_FI)
- French (fr-FRfr_FR)
- French Belgium (fr-BEfr_BE)
- French Canada (fr-CAfr_CA)
- Galician (gl-ESgl_ES)
- German (dede_DE)
- German Austria (de-ATde_AT)
- Hungarian (huhu_HU)
- Italian (itit_IT)
- Italian (Switzerland) (it-CHit_CH)
- Japanese (jaja_JA)
- Korean (koko_KR)
- Norwegian Bokmål (nbnb_NO)
- Polish (plpl_PL)
- Portuguese (ptpt_PT)
- Romanian (roro_RO)
- Russian (ruru_RU)
- Serbian (srsr_RS)
- Slovak (sksk_SK)
- Slovenian (slsl_SL)
- Spanish (eses_ES)
- Swedish (svsv_SE)
- Thai (thth_TH)
Set the Checkout language
By default checkout will use the user's preferred language, if available. Otherwise English will be used.
You can also set checkout language within OPPCheckoutSettings
configuration (use the two-letter ISO 639-1 standard). Do not set this property to use default language.
OPPCheckoutSettings *settings = [[OPPCheckoutSettings alloc] init];
settings.language = @"de";
let settings = OPPCheckoutSettings()
settings.language = "de"
Set up the locale in the CheckoutSettings
and start the CheckoutActivity
. For example:
CheckoutSettings checkoutSettings = new CheckoutSettings(checkoutId, paymentBrands, providerMode);
checkoutSettings.setLocale("de_DE");
Intent intent = checkoutSettings.createCheckoutActivityIntent(this);
startActivityForResult(intent, CheckoutActivity.REQUEST_CODE_CHECKOUT);
val checkoutSettings = CheckoutSettings(checkoutId, paymentParams, providerMode)
checkoutSettings.locale = "de_DE"
intent = checkoutSettings.createCheckoutActivityIntent(this)
startActivityForResult(intent, CheckoutActivity.REQUEST_CODE_CHECKOUT)
Change the translation for supported languages
Since version 3.0.0 you can easily change any label of Ready-to-use UI by overriding them in your app.
If you still use an older version, you should change string files in the
OPPWAMobile-Resources.bundle
.Create OPPCheckout.strings file in your project:
- In Xcode, select File > New > File....
- Then select Strings File from the iOS Resource category and click Next.
- Name the file OPPCheckout and click Create.
Add new strings which should be changed into this file with the specific keys like in the sample below (base language):
See the full list of available keys at the end of this guide."VIEW_CONTROLLER_TITLE_PAYMENT_METHOD_SELECTION" = "Select Payment Method"; "VIEW_CONTROLLER_TITLE_PAYMENT_DETAILS" = "Payment Details"; "VIEW_CONTROLLER_TITLE_PROCESSING" = "Processing";
Customize strings for other languages:
If you need to support multiple locations, select your OPPCheckout.strings file, and click Localize in the right pane. You will see Localization options with all project languages. When you select the missing language, a new variant of
OPPCheckout.strings
will be created for it. Add translations in the new created file. It's not required to override all the labels, if you miss something, it will be fetched from the corresponding SDK strings files.NOTE: If you don't see required language in Localization options, make sure you added the language to the project.
You can simply override string resources by adding the string with the same key to your app res/values/strings.xml
file.
You will find full list of localizable strings at the end of this guide.
<string name="checkout_transaction_run">Please wait</string>
<string name="checkout_payment_details">Payment Details</string>
<string name="checkout_processing">Processing</string>
....
Add a new language
This is pretty much the same as customizing existing strings file for a specific language.
Add missing language for the OPPCheckout.strings file in Localization options and fill it with the all required translations. Note that English strings will be used for the missing keys.
Add a new language for checkout by creating a new folder for translation values with appropriate locale in /res/
folder. For example see the French language folder: /res/values-fr/
.
Add default strings.xml
there. It can be found in the default folder: /res/values/
Localization of payment method labels
You can localize label for any payment method you need. Just add a translation with an appropriate key which is concatenation of prefix PAYMENT_METHOD_TYPE_
and brand constant, e.g. MASTER
.
"PAYMENT_METHOD_TYPE_MASTER" = "MasterCard";
"PAYMENT_METHOD_TYPE_AMEX" = "American Express";
You can localize label for any payment method you need. Just add a translation with an appropriate key which is brand constant in lowercase, e.g. master
.
<string name="master">MasterCard</string>
<string name="amex">American Express</string>
Localizable strings
/// View controller titles
"VIEW_CONTROLLER_TITLE_PAYMENT_METHOD_SELECTION" = "Select Payment Method";
"VIEW_CONTROLLER_TITLE_PAYMENT_DETAILS" = "Payment Details";
"VIEW_CONTROLLER_TITLE_PROCESSING" = "Processing";
"VIEW_CONTROLLER_TITLE_ADDRESS" = "Billing Address";
/// Form titles
"FORM_TITLE_PAYMENT_INFO" = "Payment Info";
/// Labels
"LABEL_TOTAL_AMOUNT" = "Total Amount";
"LABEL_MBWAY_PUSH_NOTIFICATION" = "A push notification will be sent to your device.";
"LABEL_MBWAY_ACCEPT_PIN" = "Please accept the transaction with your PIN MB WAY.";
"LABEL_TERMS_AND_CONDITIONS" = "Terms and Conditions";
"LABEL_TERMS_AND_CONDITIONS_AGREEMENT" = "I have read and agree the Terms and Conditions";
"LABEL_SWEDISH" = "Swedish";
"LABEL_FINNISH" = "Finnish";
"LABEL_STC_PAY_SELECT_PAYMENT_METHOD" = "Please select your preferred payment method:";
/// Messages
"MESSAGE_PLEASE_WAIT" = "Please wait";
/// Device owner authentication
"DEVICE_AUTH_REASON" = "To confirm payment";
/// Button titles
"BUTTON_TITLE_PAY" = "Pay Now";
"BUTTON_TITLE_PAY_AMOUNT" = "Pay %@";
"BUTTON_TITLE_REGISTER" = "Register";
"BUTTON_TITLE_CANCEL" = "Cancel";
"BUTTON_TITLE_BACK" = "Change";
"BUTTON_TITLE_DONE" = "Done";
/// Text field label names
"FIELD_LABEL_CARD_HOLDER_NAME" = "Name of Card Holder";
"FIELD_LABEL_CREDIT_CARD_NUMBER" = "Credit Card Number";
"FIELD_LABEL_EXPIRY_DATE" = "Expiration Date";
"FIELD_LABEL_CVV" = "Security Code or CVV";
"FIELD_LABEL_MOBILE_PHONE_NUMBER" = "Mobile Phone Number";
"FIELD_LABEL_QRCODE" = "QR-Code";
"FIELD_LABEL_BANK_ACCOUNT_HOLDER_NAME" = "Account Holder";
"FIELD_LABEL_IBAN" = "IBAN";
"FIELD_LABEL_IBAN_OR_ACCOUNT_NUMBER" = "IBAN or Account Number";
"FIELD_LABEL_BIC_OR_BANK_CODE" = "BIC or Bank Code";
"FIELD_LABEL_SELECT_COUNTRY" = "Select Country";
"FIELD_LABEL_SELECT_BANK" = "Select Bank";
"FIELD_LABEL_STORE_PAYMENT_DETAILS" = "Store payment details for future use";
"FIELD_LABEL_STORE_CARD_TYPE" = "Choose Card Type";
"FIELD_LABEL_NUMBER_OF_INSTALLMENTS" = "Number of installments";
"FIELD_LABEL_EMAIL" = "Email";
"FIELD_LABEL_COUNTRY_CODE" = "Country Code";
"FIELD_LABEL_NATIONAL_IDENTIFIER" = "National Identifier";
"FIELD_LABEL_ACCOUNT_NUMBER" = "Account Number";
"FIELD_LABEL_ACCOUNT_VERIFICATION" = "Account Verification";
"FIELD_LABEL_DATE_OF_BIRTH" = "Date of birth";
/// Text field placeholders
"FIELD_PLACEHOLDER_CARD_HOLDER_NAME" = "Name as it appears on card";
"FIELD_PLACEHOLDER_CARD_NUMBER" = "Long number on the front of your card";
"FIELD_PLACEHOLDER_EXPIRY_DATE" = "MM/YY or MM/YYYY";
"FIELD_PLACEHOLDER_CVV_3_DIGITS" = "3-digit code";
"FIELD_PLACEHOLDER_CVV_4_DIGITS" = "4-digit code";
"FIELD_PLACEHOLDER_BANK_ACCOUNT_HOLDER_NAME" = "Account Holder Name";
"FIELD_PLACEHOLDER_IBAN" = "International Bank Account Number";
"FIELD_PLACEHOLDER_IBAN_OR_ACCOUNT_NUMBER" = "IBAN or Account Number";
"FIELD_PLACEHOLDER_BIC_OR_BANK_CODE" = "BIC or Bank Code";
"FIELD_PLACEHOLDER_COUNTRY_CODE" = "+xxx";
"FIELD_PLACEHOLDER_MOBILE_PHONE_NUMBER" = "xxxxxxxxx";
"FIELD_PLACEHOLDER_EMAIL" = "Email";
"FIELD_PLACEHOLDER_NATIONAL_IDENTIFIER" = "National Identifier";
"FIELD_PLACEHOLDER_ACCOUNT_NUMBER" = "Account Number";
"FIELD_PLACEHOLDER_ACCOUNT_VERIFICATION" = "Account Verification";
"FIELD_PLACEHOLDER_STREET1" = "Street";
"FIELD_PLACEHOLDER_STREET2" = "Address Line 2";
"FIELD_PLACEHOLDER_CITY" = "City";
"FIELD_PLACEHOLDER_STATE" = "State";
"FIELD_PLACEHOLDER_COUNTRY" = "Country";
"FIELD_PLACEHOLDER_POSTCODE" = "Post Code";
"FIELD_PLACEHOLDER_OPTIONAL" = "(Optional)";
"FIELD_PLACEHOLDER_DATE_OF_BIRTH" = "DD.MM.YYYY";
/// Text field errors
"FIELD_ERROR_CARD_HOLDER_NAME_INVALID" = "Card holder name is not valid";
"FIELD_ERROR_CARD_NUMBER_INVALID" = "Card number entered is not valid";
"FIELD_ERROR_CARD_EXPIRY_DATE_INVALID" = "Card expiration date is not valid, use MM/YY or MM/YYYY format";
"FIELD_ERROR_CARD_EXPIRED" = "Card is expired";
"FIELD_ERROR_CARD_CVV_3_DIGITS_INVALID" = "Security code must contain last 3 digits on the back of your card";
"FIELD_ERROR_CARD_CVV_4_DIGITS_INVALID" = "Security code must contain 4-digit number on the front of your card";
"FIELD_ERROR_BANK_ACCOUNT_HOLDER_INVALID" = "Account holder name is not valid";
"FIELD_ERROR_IBAN_INVALID" = "IBAN is not valid";
"FIELD_ERROR_IBAN_OR_ACCOUNT_NUMBER_INVALID" = "IBAN or Account Number is not valid";
"FIELD_ERROR_BIC_OR_BANK_CODE_INVALID" = "BIC or Bank Code is not valid";
"FIELD_ERROR_EMAIL_INVALID" = "Invalid email";
"FIELD_ERROR_MOBILE_PHONE_INVALID" = "Invalid mobile number";
"FIELD_ERROR_NATIONAL_IDENTIFIER_INVALID" = "Invalid National Identifier";
"FIELD_ERROR_ACCOUNT_NUMBER_INVALID" = "Invalid account number";
"FIELD_ERROR_ACCOUNT_EXPIRY_DATE_INVALID" = "Expiration date is not valid, use MM/YY or MM/YYYY format";
"FIELD_ERROR_ACCOUNT_EXPIRED" = "Account is expired";
"FIELD_ERROR_ADDRESS_INVALID" = "Click here for Billing Address";
"FIELD_ERROR_DATE_OF_BIRTH_INVALID" = "Invalid birth date. DD.MM.YYYY expected";
/// Payment method groups are displayed if tokens are received
"PAYMENT_METHOD_GROUP_STORED" = "Stored Payment Methods";
"PAYMENT_METHOD_GROUP_OTHER" = "Other Payment Methods";
"PAYMENT_METHOD_GROUP_CARDS" = "Credit / Debit Cards";
/// Copy And Pay widget localisable strings
"FIELD_PLACEHOLDER_EXPIRY_DATE_WEB" = "Use MM/YY format";
"FIELD_PLACEHOLDER_CVV_WEB" = "Use 3 or 4 digit code";
"FIELD_ERROR_CARD_EXPIRY_DATE_INVALID_WEB" = "Card expiration date is not valid, use MM/YY format";
"FIELD_ERROR_CARD_CVV_INVALID_WEB" = "Security code must contain 3 or 4 digits";
/// Card scanning
"ALERT_TITLE_CARD_SCANNING_FAILED" = "Scanning failed";
"LABEL_CARD_SCAN_HOLD_HERE" = "Hold here";
"BUTTON_TITLE_OK" = "OK";
/// Accessibility strings
"ACCESSIBILITY_PAY_WITH" = "Pay with";
"ACCESSIBILITY_CANCEL_CHECKOUT" = "Cancel checkout";
"ACCESSIBILITY_SCAN_CARD" = "Scan a card";
"ACCESSIBILITY_PAY_WITH_STORED_PAYMENT_METHOD" = "Pay with stored payment method";
<!-- content -->
<string name="checkout_transaction_run">Please wait</string>
<string name="checkout_payment_details">Payment Details</string>
<string name="checkout_processing">Processing</string>
<string name="checkout_order_review">Order Review</string>
<string name="checkout_layout_text_payment_info">Payment Info</string>
<string name="checkout_layout_text_total_amount">Total Amount</string>
<string name="checkout_layout_text_select_payment_method">Payment Methods</string>
<string name="checkout_layout_text_stored_payment_methods">Stored Payment Methods</string>
<string name="checkout_layout_text_cards_payment_methods">Credit / Debit Cards</string>
<string name="checkout_layout_text_other_payment_methods">Other Payment Methods</string>
<string name="checkout_layout_text_select_country">Select Country</string>
<string name="checkout_layout_text_select_bank">Select Bank</string>
<string name="checkout_choose_card_type">Choose card type</string>
<string name="checkout_layout_text_pay">Pay Now</string>
<string name="checkout_layout_text_pay_amount">Pay %s</string>
<string name="checkout_layout_text_register">Register</string>
<string name="checkout_layout_text_header_amount" formatted="false">%.2f %s</string>
<string name="checkout_tokenization_checkbox">Store payment details for future use</string>
<string name="checkout_number_of_installments">Number of installments</string>
<string name="checkout_layout_text_push_notification_sent">A push notification will be sent to your device.</string>
<string name="checkout_layout_text_accept_mbway_pin">Please accept the transaction with your PIN MB WAY.</string>
<string name="checkout_layout_text_terms_and_conditions">Terms and Conditions</string>
<string name="checkout_layout_text_terms_and_conditions_agreement">I have read and agree the Terms and Conditions</string>
<string name="checkout_layout_text_swedish">Swedish</string>
<string name="checkout_layout_text_finnish">Finnish</string>
<string name="checkout_layout_text_pay_with">Pay with</string>
<string name="checkout_layout_text_ship_to">Ship to</string>
<string name="checkout_layout_text_order_summary">Order summary</string>
<string name="checkout_layout_text_order_total">TOTAL</string>
<string name="checkout_layout_text_stcpay_method_select">Please select your preferred payment method:</string>
<string name="checkout_layout_text_qr_code">QR-Code</string>
<!-- hints -->
<string name="checkout_layout_hint_card_holder">Name of Card Holder</string>
<string name="checkout_layout_hint_card_number">Credit Card Number</string>
<string name="checkout_layout_hint_card_expiration_date">Expiration Date</string>
<string name="checkout_layout_hint_card_cvv">Security Code or CVV</string>
<string name="checkout_layout_hint_phone_number">Mobile Phone Number</string>
<string name="checkout_layout_hint_direct_debit_sepa_account_holder">Account Holder</string>
<string name="checkout_layout_hint_direct_debit_sepa_iban">IBAN</string>
<string name="checkout_layout_hint_email">Email</string>
<string name="checkout_layout_hint_country_code">Country Code</string>
<string name="checkout_layout_hint_national_identifier">National Identifier</string>
<string name="checkout_layout_hint_account_number">Account Number</string>
<string name="checkout_layout_hint_account_verification">Account Verification</string>
<string name="checkout_layout_hint_date_of_birth">Date of birth</string>
<!-- helpers -->
<string name="checkout_helper_card_holder">Name as it appears on card</string>
<string name="checkout_helper_card_number">Long number on the front of your card</string>
<string name="checkout_helper_expiration_date">Use MM/YY or MM/YYYY format</string>
<string name="checkout_helper_expiry_date">Use MM/YY format</string>
<string name="checkout_helper_security_code">Last 3 digits on the back of your card</string>
<string name="checkout_helper_security_code_amex">4-digit code on the front of your card</string>
<string name="checkout_helper_cvv">Use 3 or 4 digit code</string>
<string name="checkout_helper_country_code">+xxx</string>
<string name="checkout_helper_phone_number">xxxxxxxxx</string>
<string name="checkout_helper_iban">The IBAN (International Bank Account Number) associated with the bank account</string>
<string name="checkout_helper_iban_account_number">IBAN or Account Number</string>
<string name="checkout_helper_bic_bank_code">BIC or Bank Code</string>
<string name="checkout_helper_national_identifier">National Identifier</string>
<string name="checkout_helper_account_number">Account Number</string>
<string name="checkout_helper_account_verification">Account Verification</string>
<string name="checkout_helper_birth_date">Use DD.MM.YYYY</string>
<!-- errors -->
<string name="checkout_error_card_holder_invalid">Card holder name is not valid</string>
<string name="checkout_error_card_number_invalid">Card number entered is not valid</string>
<string name="checkout_error_expiration_date_invalid">Card expiration date is not valid, use MM/YY or MM/YYYY format</string>
<string name="checkout_error_expiry_date_invalid">Card expiration date is not valid, use MM/YY format</string>
<string name="checkout_error_expiration_date">Card is expired</string>
<string name="checkout_error_security_code_invalid">Security code must contain last 3 digits on the back of your card</string>
<string name="checkout_error_security_code_invalid_amex">Security code must contain 4-digit number on the front of your card</string>
<string name="checkout_error_cvv_invalid">Security code must contain 3 or 4 digits</string>
<string name="checkout_error_mobile_phone_number_invalid">Invalid mobile number</string>
<string name="checkout_error_account_holder_invalid">Account holder name is not valid</string>
<string name="checkout_error_iban_invalid">IBAN is not valid</string>
<string name="checkout_error_iban_account_number_invalid">IBAN or Account Number is not valid</string>
<string name="checkout_error_bic_bank_code_invalid">BIC or Bank Code is not valid</string>
<string name="checkout_error_email_invalid">Invalid email</string>
<string name="checkout_error_national_identifier_invalid">Invalid National Identifier</string>
<string name="checkout_error_account_number_invalid">Invalid account number</string>
<string name="checkout_error_account_expiration_date_invalid">Expiration date is not valid, use MM/YY or MM/YYYY format</string>
<string name="checkout_error_account_expired">Account is expired</string>
<string name="checkout_error_date_of_birth">Invalid birth date. DD.MM.YYYY expected</string>
<!-- device auth -->
<string name="checkout_auth_confirm_payment">To confirm payment</string>
<string name="checkout_fingerprint_touch_sensor">Touch sensor</string>
<string name="checkout_fingerprint_success">Fingerprint recognized</string>
<string name="checkout_fingerprint_not_recognized">Fingerprint not recognized, try again</string>
<string name="checkout_fingerprint_enter_pin">Enter PIN</string>
<string name="checkout_fingerprint_cancel">Cancel</string>
<!-- billing address -->
<string name="checkout_billing_address_fragment_title">Click here for Billing Address</string>
<string name="checkout_billing_address_title">Billing Address</string>
<string name="checkout_billing_address_optional">%s (Optional)</string>
<!-- billing address hints -->
<string name="checkout_billing_address_country_spinner_hint">Select country</string>
<string name="checkout_billing_address_state_hint">State</string>
<string name="checkout_billing_address_state_spinner_hint">Select state</string>
<string name="checkout_billing_address_city_hint">City</string>
<string name="checkout_billing_address_post_code_hint">ZIP/Postal Code</string>
<string name="checkout_billing_address_street1_hint">Street Address Line 1</string>
<string name="checkout_billing_address_street2_hint">Street Address Line 2</string>
<!-- billing address errors -->
<string name="checkout_billing_address_country_required_error">Country is required</string>
<string name="checkout_billing_address_state_required_error">State is required</string>
<string name="checkout_billing_address_city_required_error">City is required</string>
<string name="checkout_billing_address_post_code_required_error">ZIP/Postal Code is required</string>
<string name="checkout_billing_address_street_required_error">Street is required</string>
<!-- nfc card reader -->
<string name="oppwa_nfc_card_reader_enable_nfc_button_label">Enable NFC</string>
<string name="oppwa_nfc_card_reader_enable_nfc_description">Enable NFC to read the card</string>
<string name="oppwa_nfc_card_reader_helper_description">Hold the card on the back of your phone to read it</string>
<string name="oppwa_nfc_card_reader_progress_description">Reading card</string>
<string name="oppwa_nfc_card_reader_error_generic">An error occurred</string>
<string name="oppwa_nfc_card_reader_error_card_removed_too_fast">Card was removed too fast</string>
<!-- accessibility -->
<string name="checkout_layout_text_scan_fingerprint">Scan fingerprint</string>
<string name="checkout_layout_text_scan_card">Scan a card</string>
<string name="checkout_layout_text_cancel_checkout">Cancel checkout</string>
<string name="checkout_layout_text_back">Back</string>
<string name="checkout_layout_text_selected">selected</string>
<string name="checkout_layout_text_pay_with_stored_payment_method">Pay with stored payment method %s</string>