spree_core 6.0.0.beta3 → 6.0.0.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/app/helpers/spree/images_helper.rb +0 -57
- data/app/jobs/spree/base_job.rb +21 -0
- data/app/jobs/spree/carts/reap_expired_job.rb +2 -2
- data/app/jobs/spree/collections/regenerate_time_based_job.rb +6 -3
- data/app/jobs/spree/orders/finalize_stale_drafts_job.rb +8 -5
- data/app/jobs/spree/payments/cancel_unused_sessions_job.rb +61 -0
- data/app/jobs/spree/seller_payouts/sweep_seller_job.rb +2 -0
- data/app/mailers/spree/admin_user_mailer.rb +4 -19
- data/app/mailers/spree/base_mailer.rb +96 -13
- data/app/mailers/spree/email_template_mailer.rb +27 -0
- data/app/mailers/spree/export_mailer.rb +3 -4
- data/app/mailers/spree/import_mailer.rb +3 -4
- data/app/mailers/spree/invitation_mailer.rb +24 -7
- data/app/mailers/spree/seller_user_mailer.rb +4 -16
- data/app/mailers/spree/webhook_mailer.rb +2 -2
- data/app/models/concerns/spree/acted_by.rb +1 -1
- data/app/models/concerns/spree/admin_user_methods.rb +13 -1
- data/app/models/concerns/spree/api_typed.rb +91 -0
- data/app/models/concerns/spree/calculator/tiers.rb +76 -0
- data/app/models/concerns/spree/customer_methods.rb +15 -14
- data/app/models/concerns/spree/email_template_identity.rb +52 -0
- data/app/models/concerns/spree/parameterizable_name.rb +2 -0
- data/app/models/concerns/spree/payment_session_transitions.rb +8 -2
- data/app/models/concerns/spree/post_sale/taxation.rb +54 -0
- data/app/models/concerns/spree/post_sale/taxed_line.rb +51 -0
- data/app/models/concerns/spree/preference_schema.rb +4 -12
- data/app/models/concerns/spree/product_scopes.rb +11 -1
- data/app/models/concerns/spree/provider_listing.rb +41 -0
- data/app/models/concerns/spree/publishable.rb +82 -14
- data/app/models/concerns/spree/purchase/addresses.rb +23 -10
- data/app/models/concerns/spree/purchase/currency.rb +1 -1
- data/app/models/concerns/spree/purchase/deprecated_aliases.rb +87 -0
- data/app/models/concerns/spree/purchase/gift_cards.rb +10 -4
- data/app/models/concerns/spree/purchase/locale.rb +1 -1
- data/app/models/concerns/spree/purchase/payment_processing.rb +7 -3
- data/app/models/concerns/spree/purchase/purchase_order.rb +2 -2
- data/app/models/concerns/spree/purchase/totals.rb +49 -1
- data/app/models/concerns/spree/receivable.rb +1 -1
- data/app/models/concerns/spree/searchable.rb +0 -4
- data/app/models/concerns/spree/secret_preferences.rb +59 -0
- data/app/models/concerns/spree/single_store_resource.rb +1 -1
- data/app/models/concerns/spree/stores/email_branding.rb +31 -0
- data/app/models/concerns/spree/type_labels.rb +38 -0
- data/app/models/concerns/spree/typed_adjustment_line.rb +1 -1
- data/app/models/concerns/spree/typed_associations.rb +6 -0
- data/app/models/spree/address.rb +11 -1
- data/app/models/spree/adjusters/promotion.rb +1 -15
- data/app/models/spree/allowed_origin.rb +0 -1
- data/app/models/spree/api_key.rb +5 -6
- data/app/models/spree/authentication/strategies/oidc_strategy.rb +5 -5
- data/app/models/spree/base.rb +70 -22
- data/app/models/spree/calculator/flat_percent_item_total.rb +1 -3
- data/app/models/spree/calculator/flat_rate.rb +1 -3
- data/app/models/spree/calculator/flexi_rate.rb +1 -3
- data/app/models/spree/calculator/percent_on_line_item.rb +1 -1
- data/app/models/spree/calculator/price_sack.rb +1 -3
- data/app/models/spree/calculator/shipping/digital_delivery.rb +1 -3
- data/app/models/spree/calculator/shipping/flat_percent_item_total.rb +1 -3
- data/app/models/spree/calculator/shipping/flat_rate.rb +1 -3
- data/app/models/spree/calculator/shipping/flexi_rate.rb +1 -3
- data/app/models/spree/calculator/shipping/per_item.rb +1 -3
- data/app/models/spree/calculator/shipping/price_sack.rb +1 -3
- data/app/models/spree/calculator/tiered_flat_rate.rb +6 -23
- data/app/models/spree/calculator/tiered_percent.rb +7 -25
- data/app/models/spree/cart.rb +78 -18
- data/app/models/spree/channel/gating.rb +1 -1
- data/app/models/spree/channel.rb +4 -4
- data/app/models/spree/claim.rb +21 -1
- data/app/models/spree/claim_line_item.rb +41 -6
- data/app/models/spree/collection.rb +0 -1
- data/app/models/spree/collection_rule.rb +5 -21
- data/app/models/spree/commission_line.rb +1 -1
- data/app/models/spree/commission_rate.rb +2 -3
- data/app/models/spree/commission_rate_value.rb +1 -1
- data/app/models/spree/commission_rule.rb +4 -11
- data/app/models/spree/commission_rules/product_rule.rb +1 -1
- data/app/models/spree/company_invitation.rb +1 -0
- data/app/models/spree/consent_record.rb +0 -1
- data/app/models/spree/credit_card.rb +1 -1
- data/app/models/spree/current.rb +23 -0
- data/app/models/spree/custom_field.rb +2 -2
- data/app/models/spree/custom_field_definition.rb +9 -23
- data/app/models/spree/custom_fields/boolean.rb +1 -1
- data/app/models/spree/custom_fields/json.rb +1 -1
- data/app/models/spree/data_feed/google.rb +0 -2
- data/app/models/spree/data_request.rb +1 -1
- data/app/models/spree/delivery_method.rb +30 -13
- data/app/models/spree/delivery_method_rule.rb +4 -11
- data/app/models/spree/delivery_rate.rb +4 -5
- data/app/models/spree/delivery_rate_provider/base.rb +1 -0
- data/app/models/spree/delivery_zone.rb +0 -1
- data/app/models/spree/delivery_zone_member.rb +4 -4
- data/app/models/spree/digital_asset.rb +7 -0
- data/app/models/spree/digital_asset_provider/base.rb +2 -0
- data/app/models/spree/digital_link.rb +2 -5
- data/app/models/spree/discount.rb +1 -1
- data/app/models/spree/email_template.rb +25 -0
- data/app/models/spree/email_template_draft.rb +13 -0
- data/app/models/spree/email_template_revision.rb +17 -0
- data/app/models/spree/email_templates/entry.rb +118 -0
- data/app/models/spree/email_templates/sample_record.rb +16 -0
- data/app/models/spree/emails/branding.rb +80 -0
- data/app/models/spree/exchange.rb +15 -1
- data/app/models/spree/exchange_line_item.rb +121 -5
- data/app/models/spree/export.rb +0 -1
- data/app/models/spree/exports/products.rb +10 -1
- data/app/models/spree/exports/report.rb +1 -1
- data/app/models/spree/fee.rb +4 -2
- data/app/models/spree/fulfillment.rb +53 -27
- data/app/models/spree/fulfillment_changer.rb +2 -2
- data/app/models/spree/fulfillment_item.rb +0 -4
- data/app/models/spree/fulfillment_provider/base.rb +1 -0
- data/app/models/spree/gateway/bogus.rb +4 -0
- data/app/models/spree/gateway/custom_payment_source_method.rb +5 -0
- data/app/models/spree/gateway.rb +5 -1
- data/app/models/spree/gift_card.rb +12 -1
- data/app/models/spree/gift_card_batch.rb +0 -1
- data/app/models/spree/import.rb +2 -7
- data/app/models/spree/import_mapping.rb +1 -2
- data/app/models/spree/import_row.rb +2 -2
- data/app/models/spree/import_schemas/products.rb +1 -0
- data/app/models/spree/integration.rb +8 -18
- data/app/models/spree/invitation.rb +5 -5
- data/app/models/spree/line_item.rb +13 -2
- data/app/models/spree/locale.rb +11 -8
- data/app/models/spree/market.rb +1 -0
- data/app/models/spree/newsletter_subscriber.rb +3 -0
- data/app/models/spree/order.rb +56 -138
- data/app/models/spree/order_group.rb +11 -2
- data/app/models/spree/order_inventory.rb +10 -5
- data/app/models/spree/order_promotion.rb +1 -1
- data/app/models/spree/order_routing/has_strategy_preference.rb +1 -1
- data/app/models/spree/order_routing/strategy/base.rb +4 -2
- data/app/models/spree/order_routing/strategy/rules.rb +1 -1
- data/app/models/spree/order_routing_rule.rb +6 -22
- data/app/models/spree/package_type.rb +1 -2
- data/app/models/spree/payment/gateway_options.rb +14 -52
- data/app/models/spree/payment/processing.rb +2 -4
- data/app/models/spree/payment.rb +20 -5
- data/app/models/spree/payment_method/session_instrumentation.rb +1 -0
- data/app/models/spree/payment_method/store_credit.rb +4 -4
- data/app/models/spree/payment_method.rb +36 -4
- data/app/models/spree/payment_session.rb +5 -1
- data/app/models/spree/payment_setup_session.rb +1 -0
- data/app/models/spree/payout_provider/base.rb +3 -1
- data/app/models/spree/pickup_point_provider/base.rb +2 -0
- data/app/models/spree/price_list.rb +1 -2
- data/app/models/spree/price_rules/channel_rule.rb +1 -1
- data/app/models/spree/price_rules/customer_group_rule.rb +1 -1
- data/app/models/spree/product.rb +31 -7
- data/app/models/spree/product_submission.rb +0 -12
- data/app/models/spree/product_type.rb +0 -1
- data/app/models/spree/promotion/actions/create_line_items.rb +27 -17
- data/app/models/spree/promotion/rules/category.rb +0 -4
- data/app/models/spree/promotion/rules/channel.rb +0 -4
- data/app/models/spree/promotion/rules/country.rb +0 -4
- data/app/models/spree/promotion/rules/currency.rb +0 -4
- data/app/models/spree/promotion/rules/customer_group.rb +0 -4
- data/app/models/spree/promotion/rules/first_order.rb +0 -4
- data/app/models/spree/promotion/rules/item_total.rb +4 -8
- data/app/models/spree/promotion/rules/market.rb +0 -4
- data/app/models/spree/promotion/rules/one_use_per_user.rb +0 -4
- data/app/models/spree/promotion/rules/option_value.rb +0 -3
- data/app/models/spree/promotion/rules/product.rb +0 -4
- data/app/models/spree/promotion/rules/user.rb +0 -4
- data/app/models/spree/promotion/rules/user_logged_in.rb +0 -4
- data/app/models/spree/promotion.rb +35 -6
- data/app/models/spree/promotion_action.rb +7 -14
- data/app/models/spree/promotion_action_line_item.rb +1 -1
- data/app/models/spree/promotion_handler/coupon.rb +59 -27
- data/app/models/spree/promotion_rule.rb +7 -14
- data/app/models/spree/purchase_order.rb +1 -0
- data/app/models/spree/quantity_rule.rb +1 -1
- data/app/models/spree/refund.rb +28 -3
- data/app/models/spree/return.rb +30 -2
- data/app/models/spree/return_line_item.rb +65 -14
- data/app/models/spree/role.rb +7 -7
- data/app/models/spree/saved_report.rb +1 -1
- data/app/models/spree/seller.rb +2 -1
- data/app/models/spree/seller_payout.rb +7 -0
- data/app/models/spree/seller_requirement.rb +4 -12
- data/app/models/spree/seller_requirement_custom_field.rb +1 -2
- data/app/models/spree/seller_requirement_submission.rb +2 -2
- data/app/models/spree/seller_requirements/accept_terms.rb +2 -3
- data/app/models/spree/seller_transfer.rb +5 -0
- data/app/models/spree/shipping_label.rb +1 -0
- data/app/models/spree/stock/availability_validator.rb +2 -2
- data/app/models/spree/stock/inventory_unit_builder.rb +1 -1
- data/app/models/spree/stock/packer.rb +2 -2
- data/app/models/spree/stock/splitter/weight.rb +1 -1
- data/app/models/spree/stock_level/custom_events.rb +6 -0
- data/app/models/spree/stock_level.rb +1 -1
- data/app/models/spree/stock_movement.rb +1 -1
- data/app/models/spree/stock_receipt_item.rb +1 -1
- data/app/models/spree/stock_reservation.rb +2 -2
- data/app/models/spree/stock_transfer.rb +4 -2
- data/app/models/spree/store.rb +33 -7
- data/app/models/spree/store_credit.rb +8 -9
- data/app/models/spree/store_credit_event.rb +5 -5
- data/app/models/spree/tax_exemption_certificate.rb +2 -0
- data/app/models/spree/tax_identifier.rb +3 -1
- data/app/models/spree/tax_line.rb +53 -3
- data/app/models/spree/tax_provider/base.rb +71 -14
- data/app/models/spree/tax_provider/internal.rb +59 -33
- data/app/models/spree/tax_provider/recorded_share.rb +114 -0
- data/app/models/spree/tax_rate.rb +1 -2
- data/app/models/spree/taxonomy.rb +0 -1
- data/app/models/spree/variant.rb +4 -3
- data/app/models/spree/variant_media.rb +1 -1
- data/app/models/spree/webhook_endpoint.rb +10 -13
- data/app/models/spree/wishlist.rb +1 -6
- data/app/models/spree/wishlist_item/custom_events.rb +6 -0
- data/app/presenters/spree/csv/customer_presenter.rb +1 -1
- data/app/presenters/spree/csv/newsletter_subscriber_presenter.rb +1 -1
- data/app/presenters/spree/csv/order_line_item_presenter.rb +1 -1
- data/app/presenters/spree/csv/product_variant_presenter.rb +42 -12
- data/app/serializers/spree/emails/base_serializer.rb +14 -0
- data/app/serializers/spree/emails/export_serializer.rb +13 -0
- data/app/serializers/spree/emails/import_serializer.rb +19 -0
- data/app/serializers/spree/emails/invitation_serializer.rb +28 -0
- data/app/serializers/spree/emails/store_serializer.rb +31 -0
- data/app/serializers/spree/emails/user_serializer.rb +12 -0
- data/app/serializers/spree/emails/webhook_endpoint_serializer.rb +16 -0
- data/app/services/spree/carts/create.rb +8 -2
- data/app/services/spree/carts/destroy.rb +2 -2
- data/app/services/spree/carts/remove_out_of_stock_items.rb +2 -2
- data/app/services/spree/carts/split_by_seller.rb +1 -1
- data/app/services/spree/carts/update.rb +19 -5
- data/app/services/spree/catalogs/set_product_terms.rb +1 -1
- data/app/services/spree/categories/add_products.rb +13 -31
- data/app/services/spree/categories/remove_products.rb +12 -51
- data/app/services/spree/checkout/advance.rb +1 -4
- data/app/services/spree/collections/add_products.rb +10 -23
- data/app/services/spree/collections/remove_products.rb +7 -43
- data/app/services/spree/coupon_codes/bulk_generate.rb +8 -14
- data/app/services/spree/data_requests/create.rb +1 -1
- data/app/services/spree/deliveries/destroy.rb +2 -2
- data/app/services/spree/email_templates/check.rb +58 -0
- data/app/services/spree/email_templates/no_sample_record.rb +7 -0
- data/app/services/spree/email_templates/preview.rb +99 -0
- data/app/services/spree/emails/file_system.rb +23 -0
- data/app/services/spree/emails/filters.rb +84 -0
- data/app/services/spree/emails/liquid_context.rb +48 -0
- data/app/services/spree/emails/rendered_email.rb +14 -0
- data/app/services/spree/emails/renderer.rb +125 -0
- data/app/services/spree/emails/template.rb +51 -0
- data/app/services/spree/emails/template_data.rb +23 -0
- data/app/services/spree/emails/template_resolver.rb +109 -0
- data/app/services/spree/emails/text_converter.rb +72 -0
- data/app/services/spree/emails/translation_inliner.rb +134 -0
- data/app/services/spree/imports/row_processors/price_list_price.rb +10 -10
- data/app/services/spree/imports/row_processors/product_variant.rb +65 -34
- data/app/services/spree/imports/row_processors/purchase_order.rb +13 -13
- data/app/services/spree/locales.rb +4 -5
- data/app/services/spree/newsletter/subscribe.rb +8 -12
- data/app/services/spree/orders/build_fulfillments.rb +3 -2
- data/app/services/spree/orders/create.rb +2 -1
- data/app/services/spree/orders/discounts/create.rb +7 -4
- data/app/services/spree/orders/discounts/destroy.rb +1 -0
- data/app/services/spree/orders/discounts/update.rb +1 -0
- data/app/services/spree/orders/fees/create.rb +1 -0
- data/app/services/spree/orders/fees/destroy.rb +1 -0
- data/app/services/spree/orders/fees/update.rb +1 -0
- data/app/services/spree/orders/remove_line_item.rb +13 -3
- data/app/services/spree/orders/update.rb +10 -6
- data/app/services/spree/orders/update_item.rb +6 -3
- data/app/services/spree/orders/update_statuses.rb +3 -1
- data/app/services/spree/product_memberships.rb +61 -0
- data/app/services/spree/returns/eligibility_validator.rb +1 -1
- data/app/services/spree/search_provider/custom_field_schema.rb +2 -2
- data/app/services/spree/seeds/commission_rates.rb +1 -1
- data/app/services/spree/seeds/digital_delivery.rb +1 -1
- data/app/services/spree/seeds/payment_methods.rb +2 -2
- data/app/services/spree/seeds/saved_reports.rb +3 -3
- data/app/services/spree/sellers/requirements.rb +1 -2
- data/app/services/spree/shipping_labels/confirm_refund.rb +1 -1
- data/app/services/spree/shipping_labels/store_file.rb +3 -3
- data/app/services/spree/stock_levels/correct.rb +3 -3
- data/app/services/spree/stock_reservations/reserve.rb +2 -3
- data/app/services/spree/store_credits/apply.rb +15 -13
- data/app/services/spree/stores/provision_defaults.rb +15 -14
- data/app/subscribers/spree/seller_onboarding_subscriber.rb +1 -1
- data/app/views/layouts/spree/base_mailer.html.erb +2 -43
- data/app/views/layouts/spree/base_mailer.liquid +79 -0
- data/app/views/spree/admin_user_mailer/password_reset_email.liquid +14 -0
- data/app/views/spree/export_mailer/export_done.liquid +12 -0
- data/app/views/spree/import_mailer/import_done.liquid +15 -0
- data/app/views/spree/invitation_mailer/invitation_accepted.liquid +9 -0
- data/app/views/spree/invitation_mailer/invitation_email.liquid +13 -0
- data/app/views/spree/seller_user_mailer/password_reset_email.liquid +14 -0
- data/app/views/spree/shared/_mailer_button.html.erb +4 -5
- data/app/views/spree/shared/_mailer_hero.html.erb +6 -5
- data/app/views/spree/shared/_summary_row.liquid +8 -0
- data/app/views/spree/webhook_mailer/endpoint_disabled.liquid +21 -0
- data/app/workflows/spree/carts/add_item.rb +4 -4
- data/app/workflows/spree/carts/complete.rb +13 -3
- data/app/workflows/spree/carts/merge.rb +1 -1
- data/app/workflows/spree/carts/recalculate_totals.rb +5 -0
- data/app/workflows/spree/carts/upsert_items.rb +18 -9
- data/app/workflows/spree/claims/approve.rb +5 -22
- data/app/workflows/spree/claims/cancel.rb +5 -21
- data/app/workflows/spree/claims/create.rb +15 -0
- data/app/workflows/spree/claims/deny.rb +7 -0
- data/app/workflows/spree/claims/resolve.rb +34 -31
- data/app/workflows/spree/customers/anonymize.rb +3 -4
- data/app/workflows/spree/customers/create.rb +1 -1
- data/app/workflows/spree/data_requests/fulfill.rb +2 -2
- data/app/workflows/spree/deliveries/update_tracking.rb +1 -1
- data/app/workflows/spree/email_templates/discard_draft.rb +20 -0
- data/app/workflows/spree/email_templates/publish.rb +70 -0
- data/app/workflows/spree/email_templates/restore_revision.rb +33 -0
- data/app/workflows/spree/email_templates/revert.rb +29 -0
- data/app/workflows/spree/email_templates/save_draft.rb +85 -0
- data/app/workflows/spree/exchanges/approve.rb +5 -22
- data/app/workflows/spree/exchanges/cancel.rb +5 -21
- data/app/workflows/spree/exchanges/create.rb +6 -0
- data/app/workflows/spree/exchanges/fulfill.rb +75 -51
- data/app/workflows/spree/exchanges/receive.rb +6 -65
- data/app/workflows/spree/fulfillments/cancel.rb +1 -1
- data/app/workflows/spree/fulfillments/create.rb +51 -47
- data/app/workflows/spree/fulfillments/fulfill.rb +23 -27
- data/app/workflows/spree/fulfillments/mark_delivered.rb +1 -1
- data/app/workflows/spree/fulfillments/replacements.rb +59 -0
- data/app/workflows/spree/gift_cards/apply.rb +2 -2
- data/app/workflows/spree/orders/add_item.rb +5 -1
- data/app/workflows/spree/orders/cancel.rb +3 -3
- data/app/workflows/spree/orders/complete.rb +16 -8
- data/app/workflows/spree/payments/process.rb +2 -2
- data/app/workflows/spree/post_sale/approval.rb +35 -0
- data/app/workflows/spree/post_sale/cancellation.rb +44 -0
- data/app/workflows/spree/post_sale/receipt.rb +92 -0
- data/app/workflows/spree/products/nested_attributes.rb +1 -1
- data/app/workflows/spree/purchase_orders/cancel.rb +1 -1
- data/app/workflows/spree/purchase_orders/close.rb +3 -31
- data/app/workflows/spree/purchase_orders/mark_draft.rb +2 -2
- data/app/workflows/spree/purchase_orders/mark_ordered.rb +2 -2
- data/app/workflows/spree/purchase_orders/receive.rb +1 -1
- data/app/workflows/spree/purchase_orders/update.rb +5 -34
- data/app/workflows/spree/receivables/closing_short.rb +46 -0
- data/app/workflows/spree/receivables/draft_editing.rb +48 -0
- data/app/workflows/spree/refunds/create.rb +5 -2
- data/app/workflows/spree/refunds/order_payments.rb +14 -2
- data/app/workflows/spree/refunds/tax_credit.rb +67 -0
- data/app/workflows/spree/returns/approve.rb +5 -22
- data/app/workflows/spree/returns/cancel.rb +5 -22
- data/app/workflows/spree/returns/create.rb +8 -0
- data/app/workflows/spree/returns/receive.rb +5 -76
- data/app/workflows/spree/returns/refund.rb +31 -8
- data/app/workflows/spree/seller_requirement_submissions/create.rb +1 -2
- data/app/workflows/spree/seller_transfers/reverse.rb +28 -1
- data/app/workflows/spree/shipping_labels/purchase.rb +8 -8
- data/app/workflows/spree/shipping_labels/record.rb +5 -5
- data/app/workflows/spree/shipping_labels/refund.rb +2 -2
- data/app/workflows/spree/stock_receipts/recording.rb +4 -4
- data/app/workflows/spree/stock_transfers/cancel.rb +2 -2
- data/app/workflows/spree/stock_transfers/close.rb +3 -30
- data/app/workflows/spree/stock_transfers/mark_draft.rb +1 -1
- data/app/workflows/spree/stock_transfers/mark_in_transit.rb +3 -3
- data/app/workflows/spree/stock_transfers/mark_ready.rb +2 -2
- data/app/workflows/spree/stock_transfers/receive.rb +1 -1
- data/app/workflows/spree/stock_transfers/update.rb +5 -33
- data/config/i18n-tasks.yml +32 -18
- data/config/initializers/alba.rb +7 -0
- data/config/language_names.csv +264 -0
- data/config/locales/ar.yml +811 -0
- data/config/locales/be.yml +855 -0
- data/config/locales/bg.yml +723 -0
- data/config/locales/ca.yml +689 -0
- data/config/locales/cs.yml +855 -0
- data/config/locales/da.yml +771 -0
- data/config/locales/de-CH.yml +248 -0
- data/config/locales/de.yml +835 -0
- data/config/locales/el.yml +769 -0
- data/config/locales/en.yml +37 -503
- data/config/locales/es-CL.yml +301 -0
- data/config/locales/es-EC.yml +186 -0
- data/config/locales/es-MX.yml +334 -0
- data/config/locales/es.yml +831 -0
- data/config/locales/et.yml +644 -0
- data/config/locales/fa.yml +709 -0
- data/config/locales/fi.yml +771 -0
- data/config/locales/fr.yml +830 -0
- data/config/locales/hu.yml +751 -0
- data/config/locales/id.yml +756 -0
- data/config/locales/it.yml +833 -0
- data/config/locales/ja.yml +726 -0
- data/config/locales/km.yml +759 -0
- data/config/locales/ko.yml +575 -0
- data/config/locales/ku.yml +753 -0
- data/config/locales/lt.yml +821 -0
- data/config/locales/lv.yml +685 -0
- data/config/locales/nb.yml +824 -0
- data/config/locales/ne.yml +823 -0
- data/config/locales/nl.yml +826 -0
- data/config/locales/pl.yml +835 -0
- data/config/locales/pt-BR.yml +547 -0
- data/config/locales/pt.yml +636 -0
- data/config/locales/ro.yml +750 -0
- data/config/locales/ru.yml +834 -0
- data/config/locales/sk.yml +680 -0
- data/config/locales/sl-SI.yml +600 -0
- data/config/locales/sv.yml +827 -0
- data/config/locales/th.yml +745 -0
- data/config/locales/tr.yml +777 -0
- data/config/locales/uk.yml +836 -0
- data/config/locales/vi.yml +768 -0
- data/config/locales/zh-CN.yml +786 -0
- data/config/locales/zh-TW.yml +834 -0
- data/db/migrate/20260925000001_add_replacement_to_spree_fulfillment_items.rb +5 -0
- data/db/migrate/20261001000001_add_post_sale_tax.rb +30 -0
- data/db/migrate/20261001000001_convert_preferences_to_json.rb +166 -0
- data/db/migrate/20261001000001_create_spree_email_templates.rb +52 -0
- data/lib/generators/spree/dummy/dummy_generator.rb +0 -9
- data/lib/generators/spree/dummy/templates/rails/test.rb +7 -0
- data/lib/spree/checkout/default_requirements.rb +37 -13
- data/lib/spree/core/configuration.rb +1 -1
- data/lib/spree/core/controller_helpers/store.rb +1 -1
- data/lib/spree/core/dependencies.rb +5 -4
- data/lib/spree/core/emails/escaped_output.rb +60 -0
- data/lib/spree/core/engine.rb +48 -167
- data/lib/spree/core/permissions/default_catalog.rb +5 -0
- data/lib/spree/core/preferences/json_conversion.rb +182 -0
- data/lib/spree/core/preferences/masking.rb +4 -1
- data/lib/spree/core/preferences/preferable.rb +137 -83
- data/lib/spree/core/preferences/preferable_class_methods.rb +81 -146
- data/lib/spree/core/previews/import_preview.rb +10 -0
- data/lib/spree/core/tax/provider_error.rb +37 -0
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/core.rb +85 -370
- data/lib/spree/emails/editable_templates.rb +82 -0
- data/lib/spree/events/catalog.rb +189 -0
- data/lib/spree/events.rb +21 -1
- data/lib/spree/hooks.rb +0 -17
- data/lib/spree/i18n.rb +32 -15
- data/lib/spree/reporting/adapters/live.rb +6 -6
- data/lib/spree/reporting/default_vocabulary.rb +22 -10
- data/lib/spree/reporting/hydration.rb +1 -1
- data/lib/spree/reporting/query.rb +8 -0
- data/lib/spree/reporting/schema.rb +10 -10
- data/lib/spree/testing_support/editable_email_templates.rb +61 -0
- data/lib/spree/testing_support/emails.rb +22 -0
- data/lib/spree/testing_support/factories/cart_factory.rb +1 -1
- data/lib/spree/testing_support/factories/email_template_factory.rb +28 -0
- data/lib/spree/testing_support/factories/order_factory.rb +2 -2
- data/lib/spree/testing_support/factories/refund_factory.rb +1 -1
- data/lib/spree/testing_support/factories/stock_factory.rb +1 -1
- data/lib/spree/testing_support/factories/variant_factory.rb +1 -1
- data/lib/spree/testing_support/i18n.rb +3 -94
- data/lib/spree/testing_support/lifecycle_events.rb +1 -1
- data/lib/spree/testing_support/order_walkthrough.rb +1 -1
- data/lib/spree/testing_support/preferences.rb +0 -5
- data/lib/spree/testing_support/store.rb +9 -1
- data/lib/spree/upgrades/5_6_to_6_0/manifest.yml +45 -0
- data/lib/tasks/categories_and_collections.rake +3 -3
- data/lib/tasks/core.rake +6 -4
- data/lib/tasks/media.rake +3 -3
- data/lib/tasks/package_types.rake +1 -1
- data/lib/tasks/preferences_json.rake +101 -0
- data/spec/fixtures/mailer_views/custom_views_probe_mailer/welcome_email.html.erb +4 -0
- metadata +188 -44
- data/app/models/acts_as_taggable_on/tag_decorator.rb +0 -10
- data/app/models/concerns/spree/has_image_alt_text.rb +0 -18
- data/app/models/spree/base_analytics_event_handler.rb +0 -54
- data/app/models/spree/invitations/store.rb +0 -6
- data/app/models/spree/preference.rb +0 -14
- data/app/models/spree/promotion_handler/page.rb +0 -25
- data/app/models/spree/promotion_handler/promotion_duplicator.rb +0 -60
- data/app/models/spree/stock/differentiator.rb +0 -45
- data/app/presenters/spree/filters/options_presenter.rb +0 -47
- data/app/services/spree/carts/empty.rb +0 -42
- data/app/services/spree/country_to_timezone.rb +0 -273
- data/app/services/spree/payments/create.rb +0 -92
- data/app/validators/spree/url_validator.rb +0 -23
- data/app/views/active_storage/blobs/_blob.html.erb +0 -14
- data/app/views/spree/admin_user_mailer/password_reset_email.html.erb +0 -8
- data/app/views/spree/export_mailer/export_done.html.erb +0 -7
- data/app/views/spree/import_mailer/import_done.html.erb +0 -12
- data/app/views/spree/invitation_mailer/invitation_accepted.html.erb +0 -4
- data/app/views/spree/invitation_mailer/invitation_email.html.erb +0 -12
- data/app/views/spree/seller_user_mailer/password_reset_email.html.erb +0 -8
- data/app/views/spree/shared/_base_mailer_footer.html.erb +0 -19
- data/app/views/spree/shared/_base_mailer_header.html.erb +0 -8
- data/app/views/spree/shared/_base_mailer_stylesheets.html.erb +0 -399
- data/app/views/spree/shared/_mailer_logo.html.erb +0 -41
- data/app/views/spree/shared/_purchased_items_styles.html.erb +0 -119
- data/app/views/spree/webhook_mailer/endpoint_disabled.html.erb +0 -51
- data/app/views/spree/webhook_mailer/endpoint_disabled.text.erb +0 -10
- data/app/workflows/spree/fulfillments/purchase_label.rb +0 -40
- data/app/workflows/spree/returns/purchase_label.rb +0 -32
- data/lib/spree/analytics.rb +0 -11
- data/lib/spree/core/preferences/scoped_store.rb +0 -34
- data/lib/spree/core/preferences/store.rb +0 -105
- data/lib/spree/translation_migrations.rb +0 -52
|
@@ -0,0 +1,768 @@
|
|
|
1
|
+
---
|
|
2
|
+
vi:
|
|
3
|
+
activemodel:
|
|
4
|
+
errors:
|
|
5
|
+
messages:
|
|
6
|
+
blank: không được để trống
|
|
7
|
+
activerecord:
|
|
8
|
+
attributes:
|
|
9
|
+
spree/address:
|
|
10
|
+
address1: Địa chỉ
|
|
11
|
+
address2: Địa chỉ (tiếp)
|
|
12
|
+
city: Thành phố
|
|
13
|
+
company: Công ty
|
|
14
|
+
country: Quốc gia
|
|
15
|
+
label: Tên địa chỉ
|
|
16
|
+
phone: Điện thoại
|
|
17
|
+
state: Bang
|
|
18
|
+
spree/calculator/tiered_flat_rate:
|
|
19
|
+
preferred_base_amount: Số Lượng Cơ Bản Ưu Tiên
|
|
20
|
+
preferred_tiers: Các Cấp Độ Ưu Tiên
|
|
21
|
+
spree/calculator/tiered_percent:
|
|
22
|
+
preferred_base_percent: Phần Trăm Cơ Bản Ưu Tiên
|
|
23
|
+
preferred_tiers: Các Cấp Độ Ưu Tiên
|
|
24
|
+
spree/country:
|
|
25
|
+
iso: ISO
|
|
26
|
+
iso3: ISO3
|
|
27
|
+
iso_name: Tên ISO
|
|
28
|
+
name: Tên
|
|
29
|
+
numcode: Mã ISO
|
|
30
|
+
spree/credit_card:
|
|
31
|
+
cc_type: Kiểu
|
|
32
|
+
month: Tháng
|
|
33
|
+
name: Tên Chủ Thẻ
|
|
34
|
+
number: Số
|
|
35
|
+
verification_value: Thông số kiểm tra
|
|
36
|
+
year: Năm
|
|
37
|
+
spree/customer_group:
|
|
38
|
+
description: Mô tả
|
|
39
|
+
name: Tên
|
|
40
|
+
spree/gift_card:
|
|
41
|
+
amount_used: Số tiền đã dùng
|
|
42
|
+
expires_at: Hết hạn vào
|
|
43
|
+
spree/import:
|
|
44
|
+
preferred_delimiter: Dấu phân cách
|
|
45
|
+
spree/import_mapping:
|
|
46
|
+
file_column: Cột tệp
|
|
47
|
+
schema_field: Trường lược đồ
|
|
48
|
+
spree/import_row:
|
|
49
|
+
row_number: Số
|
|
50
|
+
spree/inventory_unit:
|
|
51
|
+
state: Bang
|
|
52
|
+
spree/invitation:
|
|
53
|
+
inviter: Người mời
|
|
54
|
+
spree/line_item:
|
|
55
|
+
price: Giá
|
|
56
|
+
quantity: Số lượng
|
|
57
|
+
spree/option_type:
|
|
58
|
+
filterable: Có thể lọc
|
|
59
|
+
kind: Loại
|
|
60
|
+
name: Tên
|
|
61
|
+
spree/option_value:
|
|
62
|
+
color_code: Mã màu
|
|
63
|
+
image: Ảnh mẫu màu
|
|
64
|
+
spree/order:
|
|
65
|
+
checkout_complete: Thanh toán hoàn tất
|
|
66
|
+
completed_at: Hoàn tất lúc
|
|
67
|
+
considered_risky: Tình trảng rủi ro
|
|
68
|
+
coupon_code: Mã Giảm Giá
|
|
69
|
+
created_at: Ngày đặt hàng
|
|
70
|
+
email: Email của khách hàng
|
|
71
|
+
internal_note: Ghi chú nội bộ
|
|
72
|
+
ip_address: Địa chỉ IP
|
|
73
|
+
item_count: Sản phẩm
|
|
74
|
+
item_total: Tổng sản phẩm
|
|
75
|
+
number: Mã Đơn Hàng
|
|
76
|
+
payment_state: Trạng thái thanh toán
|
|
77
|
+
shipment_state: Trạng thái giao hàng
|
|
78
|
+
special_instructions: Chỉ dẫn đặc biệt
|
|
79
|
+
state: Bang
|
|
80
|
+
total: Tổng
|
|
81
|
+
spree/order/bill_address:
|
|
82
|
+
address1: Đỉa chị thanh toán - tên đường
|
|
83
|
+
city: Đỉa chị thanh toán - thành phố
|
|
84
|
+
phone: Đỉa chị thanh toán - ĐT
|
|
85
|
+
state: Đỉa chị thanh toán - bang
|
|
86
|
+
spree/order/ship_address:
|
|
87
|
+
address1: Đỉa chị giao hàng - tên đường
|
|
88
|
+
city: Đỉa chị giao hàng - thành phố
|
|
89
|
+
phone: Đỉa chị giao hàng - ĐT
|
|
90
|
+
state: Đỉa chị giao hàng - bang
|
|
91
|
+
spree/payment:
|
|
92
|
+
amount: Giá trị
|
|
93
|
+
number: Số
|
|
94
|
+
spree/payment_method:
|
|
95
|
+
name: Tên phương thức thanh toán
|
|
96
|
+
spree/policy:
|
|
97
|
+
body: Nội dung
|
|
98
|
+
owner: Chính sách cho
|
|
99
|
+
spree/price_list:
|
|
100
|
+
description: Mô tả
|
|
101
|
+
ends_at: Kết thúc vào
|
|
102
|
+
match_policy: Chính sách khớp
|
|
103
|
+
name: Tên
|
|
104
|
+
priority: Mức ưu tiên
|
|
105
|
+
starts_at: Bắt đầu vào
|
|
106
|
+
status: Trạng thái
|
|
107
|
+
spree/price_rule:
|
|
108
|
+
priority: Mức ưu tiên
|
|
109
|
+
type: Loại
|
|
110
|
+
spree/product:
|
|
111
|
+
available_on: Có hiệu lực vào lúc
|
|
112
|
+
cost_currency: Tiền tệ
|
|
113
|
+
cost_price: Giá nhập
|
|
114
|
+
description: Mô tả sản phẩm
|
|
115
|
+
discontinue_on: Ngừng kinh doanh vào
|
|
116
|
+
less_than: Nhỏ hơn
|
|
117
|
+
make_active_at: Kích hoạt vào
|
|
118
|
+
master_price: Giá bán
|
|
119
|
+
more_than: Lớn hơn
|
|
120
|
+
name: Tên sản phẩm
|
|
121
|
+
tax_category: Mục thuế
|
|
122
|
+
spree/promotion:
|
|
123
|
+
advertise: Quảng cáo
|
|
124
|
+
code: Mã
|
|
125
|
+
description: Chú thích
|
|
126
|
+
event_name: Tên sự kiện
|
|
127
|
+
expires_at: Hết hạn lúc
|
|
128
|
+
generate_code: Tạo mã giảm giá
|
|
129
|
+
name: Tên
|
|
130
|
+
path: Đường dẫn
|
|
131
|
+
promotion_category: Danh mục khuyến mãi
|
|
132
|
+
starts_at: Bắt đầu lúc
|
|
133
|
+
usage_limit: Giới hạn sử dụng
|
|
134
|
+
spree/promotion_category:
|
|
135
|
+
code: Mã
|
|
136
|
+
name: Kiểu khuyến mãi
|
|
137
|
+
spree/property:
|
|
138
|
+
name: Tên
|
|
139
|
+
presentation: Thể hiện
|
|
140
|
+
spree/role:
|
|
141
|
+
name: Tên
|
|
142
|
+
spree/shipment:
|
|
143
|
+
number: Số
|
|
144
|
+
spree/state:
|
|
145
|
+
abbr: Viết tắt
|
|
146
|
+
name: Tên
|
|
147
|
+
spree/store:
|
|
148
|
+
address: Địa chỉ
|
|
149
|
+
contact_phone: Điện thoại liên hệ
|
|
150
|
+
mail_from_address: Email
|
|
151
|
+
meta_description: Mô Tả Meta
|
|
152
|
+
meta_keywords: Từ Khoá Meta
|
|
153
|
+
name: Tên
|
|
154
|
+
preferred_digital_asset_authorized_clicks: Giới hạn số lần tải xuống
|
|
155
|
+
preferred_digital_asset_authorized_days: Giới hạn số ngày tải xuống
|
|
156
|
+
preferred_limit_digital_download_count: Giới hạn số lần tải xuống liên kết kỹ thuật số
|
|
157
|
+
preferred_limit_digital_download_days: Giới hạn số ngày tải xuống liên kết kỹ thuật số
|
|
158
|
+
seo_robots: SEO Robots
|
|
159
|
+
seo_title: Tiêu đề SEO
|
|
160
|
+
storefront_custom_code_body_end: Mã tùy chỉnh trước thẻ đóng body
|
|
161
|
+
storefront_custom_code_body_start: Mã tùy chỉnh sau thẻ mở body
|
|
162
|
+
storefront_custom_code_head: Mã tùy chỉnh trong phần head của trang
|
|
163
|
+
url: url
|
|
164
|
+
spree/store_credit:
|
|
165
|
+
amount_used: Số tiền đã dùng
|
|
166
|
+
spree/tax_category:
|
|
167
|
+
description: Chú thích
|
|
168
|
+
name: Tên
|
|
169
|
+
spree/tax_rate:
|
|
170
|
+
amount: Mức giá
|
|
171
|
+
spree/taxon:
|
|
172
|
+
name: Tên
|
|
173
|
+
permalink: Permalink
|
|
174
|
+
position: Ví trí
|
|
175
|
+
sort_order: Thứ tự sắp xếp
|
|
176
|
+
spree/taxonomy:
|
|
177
|
+
name: Tên
|
|
178
|
+
spree/user:
|
|
179
|
+
avatar: Ảnh đại diện
|
|
180
|
+
email: Email
|
|
181
|
+
password: Mật khẩu
|
|
182
|
+
password_confirmation: Xác nhận mật khẩu
|
|
183
|
+
spree/variant:
|
|
184
|
+
cost_currency: Tiền tệ
|
|
185
|
+
cost_price: Giá nhập
|
|
186
|
+
depth: sâu
|
|
187
|
+
height: Cao
|
|
188
|
+
price: Giá bán
|
|
189
|
+
sku: Mã
|
|
190
|
+
weight: Nặng
|
|
191
|
+
width: Dài
|
|
192
|
+
spree/zone:
|
|
193
|
+
description: Mô tả
|
|
194
|
+
name: Tên vùng
|
|
195
|
+
user:
|
|
196
|
+
current_sign_in: Đăng nhập hiện tại vào
|
|
197
|
+
last_sign_in: Đăng nhập lần cuối vào
|
|
198
|
+
sign_in_count: Số lần đăng nhập
|
|
199
|
+
errors:
|
|
200
|
+
messages:
|
|
201
|
+
blank: không được để trống
|
|
202
|
+
models:
|
|
203
|
+
spree/allowed_origin:
|
|
204
|
+
attributes:
|
|
205
|
+
origin:
|
|
206
|
+
must_be_origin_only: phải là một origin (lược đồ và máy chủ) không có đường dẫn, truy vấn hoặc fragment
|
|
207
|
+
spree/classification:
|
|
208
|
+
attributes:
|
|
209
|
+
taxon_id:
|
|
210
|
+
already_linked: Đã Được Liên Kết
|
|
211
|
+
spree/credit_card:
|
|
212
|
+
attributes:
|
|
213
|
+
base:
|
|
214
|
+
card_expired: Thẻ Đã Hết Hạn
|
|
215
|
+
expiry_invalid: Hạn Sử Dụng Không Hợp Lệ
|
|
216
|
+
spree/gift_card:
|
|
217
|
+
attributes:
|
|
218
|
+
base:
|
|
219
|
+
cannot_destroy_used_gift_card: Không thể xóa thẻ quà tặng đã được sử dụng
|
|
220
|
+
spree/import:
|
|
221
|
+
attributes:
|
|
222
|
+
attachment:
|
|
223
|
+
content_type: có kiểu nội dung không được phép
|
|
224
|
+
type:
|
|
225
|
+
inclusion: không nằm trong danh sách các loại được phép
|
|
226
|
+
spree/line_item:
|
|
227
|
+
attributes:
|
|
228
|
+
currency:
|
|
229
|
+
must_match_order_currency: Phải Trùng Khớp Với Tiền Tệ Đơn Hàng
|
|
230
|
+
spree/market:
|
|
231
|
+
attributes:
|
|
232
|
+
base:
|
|
233
|
+
cannot_destroy_default_market: Không thể xóa thị trường mặc định.
|
|
234
|
+
cannot_destroy_last_market: Không thể xóa thị trường duy nhất.
|
|
235
|
+
spree/market_country:
|
|
236
|
+
attributes:
|
|
237
|
+
country:
|
|
238
|
+
already_in_market: đã được gán cho một thị trường khác trong cửa hàng này
|
|
239
|
+
not_in_shipping_zone: không nằm trong bất kỳ khu vực vận chuyển nào. Vui lòng thiết lập khu vực vận chuyển trước.
|
|
240
|
+
spree/payment:
|
|
241
|
+
attributes:
|
|
242
|
+
amount:
|
|
243
|
+
greater_than_max_amount: lớn hơn số tiền tối đa được phép là %{max_amount}
|
|
244
|
+
spree/price_list:
|
|
245
|
+
attributes:
|
|
246
|
+
ends_at:
|
|
247
|
+
must_be_after_starts_at: phải sau thời điểm bắt đầu
|
|
248
|
+
spree/product:
|
|
249
|
+
attributes:
|
|
250
|
+
base:
|
|
251
|
+
cannot_destroy_if_attached_to_line_items: Không thể xóa các Sản phẩm đã được thêm vào Đơn hàng đã đặt. Trong những trường hợp này, vui lòng ngừng kinh doanh chúng.
|
|
252
|
+
discontinue_on:
|
|
253
|
+
invalid_date_range: phải muộn hơn ngày sẵn có
|
|
254
|
+
spree/product_publication:
|
|
255
|
+
attributes:
|
|
256
|
+
unpublished_at:
|
|
257
|
+
must_be_after_published_at: phải sau ngày xuất bản
|
|
258
|
+
spree/promotion:
|
|
259
|
+
attributes:
|
|
260
|
+
expires_at:
|
|
261
|
+
invalid_date_range: phải muộn hơn ngày bắt đầu
|
|
262
|
+
spree/refund:
|
|
263
|
+
attributes:
|
|
264
|
+
amount:
|
|
265
|
+
greater_than_allowed: Lớn Hơn Số Tiền Cho Phép
|
|
266
|
+
spree/store:
|
|
267
|
+
attributes:
|
|
268
|
+
base:
|
|
269
|
+
cannot_destroy_only_store: Không thể xóa Cửa hàng duy nhất.
|
|
270
|
+
spree/store_credit:
|
|
271
|
+
attributes:
|
|
272
|
+
amount_authorized:
|
|
273
|
+
exceeds_total_credits: Vượt quá tổng tín dụng.
|
|
274
|
+
amount_used:
|
|
275
|
+
cannot_be_greater_than_amount: Không thể lớn hơn số tiền.
|
|
276
|
+
greater_than_zero_restrict_delete: lớn hơn không. Không thể xóa tín dụng cửa hàng.
|
|
277
|
+
spree/user:
|
|
278
|
+
attributes:
|
|
279
|
+
bill_address_id:
|
|
280
|
+
belongs_to_other_user: thuộc về người dùng khác
|
|
281
|
+
deprecated_in_completed_order: đã ngừng dùng trong đơn hàng đã hoàn tất
|
|
282
|
+
ship_address_id:
|
|
283
|
+
belongs_to_other_user: thuộc về người dùng khác
|
|
284
|
+
deprecated_in_completed_order: đã ngừng dùng trong đơn hàng đã hoàn tất
|
|
285
|
+
spree/variant:
|
|
286
|
+
attributes:
|
|
287
|
+
base:
|
|
288
|
+
cannot_destroy_if_attached_to_line_items: Không thể xóa các Biến thể đã được thêm vào Đơn hàng đã đặt. Trong những trường hợp này, vui lòng ngừng kinh doanh chúng.
|
|
289
|
+
spree/webhook_endpoint:
|
|
290
|
+
attributes:
|
|
291
|
+
url:
|
|
292
|
+
internal_address_not_allowed: không được trỏ đến địa chỉ mạng nội bộ hoặc riêng tư
|
|
293
|
+
models:
|
|
294
|
+
spree/address:
|
|
295
|
+
one: Địa chỉ
|
|
296
|
+
other: Địa chỉ
|
|
297
|
+
spree/classification:
|
|
298
|
+
one: Phân loại
|
|
299
|
+
other: Phân loại
|
|
300
|
+
spree/country:
|
|
301
|
+
one: Quốc gia
|
|
302
|
+
other: Quốc gia
|
|
303
|
+
spree/credit_card:
|
|
304
|
+
one: Thẻ tín dụng
|
|
305
|
+
other: Thẻ tín dụng
|
|
306
|
+
spree/customer_group:
|
|
307
|
+
one: Nhóm khách hàng
|
|
308
|
+
other: Nhóm khách hàng
|
|
309
|
+
spree/customer_group_user:
|
|
310
|
+
one: Người dùng nhóm khách hàng
|
|
311
|
+
other: Người dùng nhóm khách hàng
|
|
312
|
+
spree/export:
|
|
313
|
+
one: Xuất dữ liệu
|
|
314
|
+
other: Xuất dữ liệu
|
|
315
|
+
spree/integration:
|
|
316
|
+
one: Tích hợp
|
|
317
|
+
other: Tích hợp
|
|
318
|
+
spree/inventory_unit:
|
|
319
|
+
one: Đơn vị hàng
|
|
320
|
+
other: Đơn vị tồn kho
|
|
321
|
+
spree/line_item:
|
|
322
|
+
one: Item
|
|
323
|
+
other: Mục hàng
|
|
324
|
+
spree/option_type:
|
|
325
|
+
one: Loại Tùy Chọn
|
|
326
|
+
other: Loại tùy chọn
|
|
327
|
+
spree/option_value:
|
|
328
|
+
one: Giá Trị Tùy Chọn
|
|
329
|
+
other: Giá trị tùy chọn
|
|
330
|
+
spree/order:
|
|
331
|
+
one: Đơn đặt hàng
|
|
332
|
+
other: Đơn hàng
|
|
333
|
+
spree/payment:
|
|
334
|
+
one: Thanh toán
|
|
335
|
+
other: Thanh toán
|
|
336
|
+
spree/payment_method:
|
|
337
|
+
one: Phương Thức Thanh Toán
|
|
338
|
+
other: Phương thức thanh toán
|
|
339
|
+
spree/price:
|
|
340
|
+
one: Giá
|
|
341
|
+
other: Giá
|
|
342
|
+
spree/price_list:
|
|
343
|
+
one: Bảng giá
|
|
344
|
+
other: Bảng giá
|
|
345
|
+
spree/price_rule:
|
|
346
|
+
one: Quy tắc giá
|
|
347
|
+
other: Quy tắc giá
|
|
348
|
+
spree/product:
|
|
349
|
+
one: Sản phẩm
|
|
350
|
+
other: Sản phẩm
|
|
351
|
+
spree/promotion:
|
|
352
|
+
one: Khuyến mãi
|
|
353
|
+
other: Khuyến mãi
|
|
354
|
+
spree/promotion_category:
|
|
355
|
+
one: Kiểu khuyến mãi
|
|
356
|
+
other: Danh mục khuyến mãi
|
|
357
|
+
spree/property:
|
|
358
|
+
one: Thuộc tính
|
|
359
|
+
other: Thuộc tính
|
|
360
|
+
spree/refund_reason:
|
|
361
|
+
one: Lý do trả hàng
|
|
362
|
+
other: Lý do hoàn tiền
|
|
363
|
+
spree/role:
|
|
364
|
+
one: Quyền
|
|
365
|
+
other: Vai trò
|
|
366
|
+
spree/shipment:
|
|
367
|
+
one: Vận chuyển
|
|
368
|
+
other: Lô hàng
|
|
369
|
+
spree/shipping_method:
|
|
370
|
+
one: Phương thức vận chuyển
|
|
371
|
+
other: Phương thức vận chuyển
|
|
372
|
+
spree/state:
|
|
373
|
+
one: Trạng thái
|
|
374
|
+
other: Tỉnh/Bang
|
|
375
|
+
spree/stock_location:
|
|
376
|
+
one: Địa điểm kho
|
|
377
|
+
other: Địa điểm kho
|
|
378
|
+
spree/stock_movement:
|
|
379
|
+
one: Kho Vận
|
|
380
|
+
other: Biến động kho
|
|
381
|
+
spree/stock_transfer:
|
|
382
|
+
one: Chuyển Kho A-B
|
|
383
|
+
other: Chuyển kho
|
|
384
|
+
spree/store:
|
|
385
|
+
one: Cửa hàng
|
|
386
|
+
other: Cửa hàng
|
|
387
|
+
spree/store_credit:
|
|
388
|
+
one: Tín dụng cửa hàng
|
|
389
|
+
other: Tín dụng cửa hàng
|
|
390
|
+
spree/tax_category:
|
|
391
|
+
one: Loại Thuế
|
|
392
|
+
other: Danh mục thuế
|
|
393
|
+
spree/tax_rate:
|
|
394
|
+
one: Tỷ Lệ Thuế
|
|
395
|
+
other: Mức thuế suất
|
|
396
|
+
spree/taxon:
|
|
397
|
+
one: Phân Loại
|
|
398
|
+
other: Danh mục
|
|
399
|
+
spree/taxonomy:
|
|
400
|
+
one: Hệ Thống Phân Loại
|
|
401
|
+
other: Danh mục
|
|
402
|
+
spree/user:
|
|
403
|
+
one: Người dùng
|
|
404
|
+
other: Người dùng
|
|
405
|
+
spree/variant:
|
|
406
|
+
one: Phân loại
|
|
407
|
+
other: Biến thể
|
|
408
|
+
spree/zone:
|
|
409
|
+
one: Vùng
|
|
410
|
+
other: Khu vực
|
|
411
|
+
errors:
|
|
412
|
+
messages:
|
|
413
|
+
already_confirmed: đã được chứng nhận
|
|
414
|
+
not_found: không tìm thấy
|
|
415
|
+
not_locked: không bị khoá
|
|
416
|
+
not_saved:
|
|
417
|
+
one: '1 lỗi đã ngăn không cho %{resource} này được lưu:'
|
|
418
|
+
other: "%{count} lỗi đã ngăn không cho %{resource} này được lưu:"
|
|
419
|
+
number:
|
|
420
|
+
percentage:
|
|
421
|
+
format:
|
|
422
|
+
precision: 1
|
|
423
|
+
spree:
|
|
424
|
+
accept: Chấp nhận
|
|
425
|
+
accepted: Đã chấp nhận
|
|
426
|
+
accepts_email_marketing: Đồng ý nhận email tiếp thị
|
|
427
|
+
account: Tài khoản
|
|
428
|
+
active: Có hiệu lực
|
|
429
|
+
address: Địa chỉ
|
|
430
|
+
address1: Địa chỉ
|
|
431
|
+
address2: Địa chỉ (tiếp)
|
|
432
|
+
adjustment: Điều chỉnh
|
|
433
|
+
adjustment_labels:
|
|
434
|
+
tax_rates:
|
|
435
|
+
excluding_tax: "%{name}%{amount}"
|
|
436
|
+
including_tax: "%{name}%{amount} (Đã bao gồm trong giá)"
|
|
437
|
+
adjustments_deleted: Đã xóa điều chỉnh
|
|
438
|
+
all: Tất cả
|
|
439
|
+
amount: Giá trị
|
|
440
|
+
api_key_no_current_key: Không có khóa API nào xác thực yêu cầu này
|
|
441
|
+
api_key_scopes_immutable: không thể thay đổi sau khi khóa được tạo; hãy tạo một khóa mới với các phạm vi bạn cần và thu hồi khóa này
|
|
442
|
+
approver: Người xác nhận
|
|
443
|
+
authorized: Đã Ủy Quyền
|
|
444
|
+
availability: tình trạng còn hàng
|
|
445
|
+
backorderable: Có Thể Đặt Chỗ
|
|
446
|
+
backordered: Đã Đặt Chỗ
|
|
447
|
+
bill_address: Địa chỉ thanh toán
|
|
448
|
+
billing_address: Địa chỉ thanh toán
|
|
449
|
+
calculator: Máy tính
|
|
450
|
+
canceled: Đã hủy
|
|
451
|
+
canceler: Người thực hiện hủy
|
|
452
|
+
cannot_be_destroyed: Không thể xóa đơn hàng.
|
|
453
|
+
capture: Lấy tiền
|
|
454
|
+
cart: Giỏ Hàng
|
|
455
|
+
cart_already_updated: Giỏ hàng đã được cập nhật.
|
|
456
|
+
cart_line_item:
|
|
457
|
+
delivery_unavailable: "%{li_name} không thể giao đến địa chỉ đã chọn"
|
|
458
|
+
discontinued: "%{li_name} đã bị xóa vì đã ngừng kinh doanh"
|
|
459
|
+
out_of_stock: "%{li_name} đã bị xóa vì đã hết hàng"
|
|
460
|
+
categories: Loại mặt hàng
|
|
461
|
+
category: Loại mặt hàng
|
|
462
|
+
channel: Kênh bán hàng
|
|
463
|
+
channels: Kênh bán hàng
|
|
464
|
+
checkout: Thủ tục mua hàng
|
|
465
|
+
checkout_requirements:
|
|
466
|
+
email_required: Bắt buộc nhập địa chỉ email
|
|
467
|
+
line_items_required: Thêm ít nhất một sản phẩm vào giỏ hàng
|
|
468
|
+
payment_required: Thêm một phương thức thanh toán
|
|
469
|
+
ship_address_required: Bắt buộc nhập địa chỉ giao hàng
|
|
470
|
+
city: Thành phố
|
|
471
|
+
color_code: Mã màu
|
|
472
|
+
company: Công ty
|
|
473
|
+
compare_at_amount: Số tiền so sánh
|
|
474
|
+
compare_at_price: Giá so sánh
|
|
475
|
+
complete: hoàn tất
|
|
476
|
+
confirm: Xác nhận
|
|
477
|
+
cost_price: Giá
|
|
478
|
+
count_on_hand: Số hàng có trong tay
|
|
479
|
+
country: Quốc gia
|
|
480
|
+
coupon_code: Mã Phiếu Giảm Giá
|
|
481
|
+
coupon_code_already_applied: Mã khuyến mại đã được dùng cho đơn hàng khác
|
|
482
|
+
coupon_code_applied: The coupon code was successfully applied to your order.
|
|
483
|
+
coupon_code_better_exists: Mã khuyến mại trước đó có nhiều khuyến mại hơn
|
|
484
|
+
coupon_code_expired: Mã khuyến mại bị hết hạn
|
|
485
|
+
coupon_code_max_usage: Mã khuyến mại bị vượt qua số lần cho phép sử dụng
|
|
486
|
+
coupon_code_not_eligible: Mã khuyến mại không cho đơn hàng này được
|
|
487
|
+
coupon_code_not_found: Mã khuyến mại bạn nhập vào không tồn tại. Vui lòng thử lại.
|
|
488
|
+
coupon_code_used: Mã giảm giá bạn đã nhập đã được sử dụng. Vui lòng thử lại.
|
|
489
|
+
created_at: Tạo lúc
|
|
490
|
+
credit_card: Thẻ Tín Dụng
|
|
491
|
+
currency: Tiền Tệ
|
|
492
|
+
currency_not_supported_by_store: không được cửa hàng này hỗ trợ
|
|
493
|
+
customer: Khách hàng
|
|
494
|
+
customers: Khách hàng
|
|
495
|
+
default: Mặc Định
|
|
496
|
+
default_stock_location_name: Địa điểm cửa hàng
|
|
497
|
+
default_wishlist_name: Danh sách yêu thích
|
|
498
|
+
delivery: Giao Hàng
|
|
499
|
+
depth: Sâu
|
|
500
|
+
description: Miêu Tả
|
|
501
|
+
destination: Đích Đến
|
|
502
|
+
destroy: Hủy Bỏ
|
|
503
|
+
details: Chi Tiết
|
|
504
|
+
digital:
|
|
505
|
+
digital_delivery: Giao hàng kỹ thuật số
|
|
506
|
+
digital_assets: Tài sản kỹ thuật số
|
|
507
|
+
discontinued: Đã ngừng kinh doanh
|
|
508
|
+
discontinued_variants_present: Một số mục hàng trong đơn hàng này có sản phẩm không còn khả dụng.
|
|
509
|
+
display_delivery_range: Giao hàng trong %{delivery_range} ngày làm việc
|
|
510
|
+
draft: Bản nháp
|
|
511
|
+
eligibility_errors:
|
|
512
|
+
messages:
|
|
513
|
+
has_excluded_product: Có Sản Phẩm Bị Loại Trừ
|
|
514
|
+
limit_once_per_user: Giới Hạn Một Lần Cho Mỗi Người Dùng
|
|
515
|
+
missing_product: Thiếu Sản Phẩm
|
|
516
|
+
missing_taxon: Thiếu Phân Loại
|
|
517
|
+
no_applicable_products: Không Có Sản Phẩm Áp Dụng
|
|
518
|
+
no_matching_channel: Mã giảm giá này không áp dụng cho kênh bán hàng này.
|
|
519
|
+
no_matching_market: Mã giảm giá này không áp dụng tại thị trường của bạn.
|
|
520
|
+
no_matching_taxons: Không Có Phân Loại Phù Hợp
|
|
521
|
+
no_user_or_email_specified: Không Có Người Dùng Hoặc Email Được Chỉ Định
|
|
522
|
+
no_user_specified: Không Có Người Dùng Được Chỉ Định
|
|
523
|
+
not_first_order: Không Phải Đơn Hàng Đầu Tiên
|
|
524
|
+
wrong_country: Mã giảm giá này không hợp lệ tại quốc gia của bạn
|
|
525
|
+
email: Email
|
|
526
|
+
error: lỗi
|
|
527
|
+
error_user_destroy_with_orders: Không thể xóa người dùng có liên kết với đơn hàng
|
|
528
|
+
error_user_does_not_have_any_store_credits: Người dùng không có tín dụng cửa hàng nào khả dụng
|
|
529
|
+
errors:
|
|
530
|
+
messages:
|
|
531
|
+
cannot_delete_default_channel: Không thể xóa kênh mặc định. Hãy nâng một kênh khác thành mặc định trước.
|
|
532
|
+
channel_store_mismatch: phải thuộc cùng một cửa hàng
|
|
533
|
+
invalid_order_routing_rule: không phải là quy tắc định tuyến đơn hàng đã đăng ký
|
|
534
|
+
invalid_order_routing_strategy: không phải là chiến lược định tuyến đơn hàng đã đăng ký
|
|
535
|
+
store_association_can_not_be_changed: Không thể thay đổi liên kết cửa hàng
|
|
536
|
+
store_is_already_set: Cửa hàng đã được đặt
|
|
537
|
+
expired: Đã hết hạn
|
|
538
|
+
export_mailer:
|
|
539
|
+
export_done:
|
|
540
|
+
message: Làm tốt lắm, bản xuất của bạn đã sẵn sàng! Vui lòng dùng liên kết bên dưới để tải xuống.
|
|
541
|
+
subject: Bản xuất %{export_number} của bạn đã được xử lý thành công!
|
|
542
|
+
greeting: Chào %{user_name},
|
|
543
|
+
field: Trường
|
|
544
|
+
first_name: Tên
|
|
545
|
+
flat_percent: Định mức phần trăm
|
|
546
|
+
flat_rate_per_order: Lãi suất sàn (cho từng đơn hàng)
|
|
547
|
+
flexible_rate: Lãi suất dao động
|
|
548
|
+
free: Miễn phí
|
|
549
|
+
gateway: Gateway
|
|
550
|
+
gateway_error: Lỗi Gateway
|
|
551
|
+
gift_card: Thẻ quà tặng
|
|
552
|
+
gift_card_already_redeemed: Thẻ quà tặng đã được sử dụng.
|
|
553
|
+
gift_card_applied: Thẻ quà tặng đã được áp dụng thành công cho đơn hàng của bạn!
|
|
554
|
+
gift_card_customer_not_logged_in: Không thể áp dụng thẻ quà tặng với người dùng khách.
|
|
555
|
+
gift_card_expired: Thẻ quà tặng đã hết hạn.
|
|
556
|
+
gift_card_mismatched_currency: Không thể áp dụng thẻ quà tặng với tiền tệ hiện tại.
|
|
557
|
+
gift_card_mismatched_customer: Thẻ quà tặng này gắn với người dùng khác.
|
|
558
|
+
gift_card_not_found: Không tìm thấy thẻ quà tặng.
|
|
559
|
+
gift_card_removed: Thẻ quà tặng đã được gỡ thành công khỏi đơn hàng của bạn
|
|
560
|
+
gift_card_using_store_credit_error: Bạn không thể áp dụng thẻ quà tặng sau khi đã áp dụng tín dụng cửa hàng.
|
|
561
|
+
height: Cao
|
|
562
|
+
i18n:
|
|
563
|
+
this_file_language: tiếng Việt (VN)
|
|
564
|
+
idempotency_key_reused: Idempotency-Key này đã được sử dụng với các tham số yêu cầu khác.
|
|
565
|
+
image: Hình ảnh
|
|
566
|
+
import: Nhập dữ liệu
|
|
567
|
+
in_stock: Còn hàng
|
|
568
|
+
internal_note: Ghi chú nội bộ
|
|
569
|
+
inventory: Hàng
|
|
570
|
+
invitation_mailer:
|
|
571
|
+
greeting: Chào %{user_name},
|
|
572
|
+
invitation_accepted:
|
|
573
|
+
body: "%{invitee_name} đã chấp nhận lời mời tham gia %{resource_name} của bạn"
|
|
574
|
+
subject: "%{invitee_name} đã chấp nhận lời mời tham gia %{resource_name} của bạn"
|
|
575
|
+
invitation_email:
|
|
576
|
+
body: "%{inviter_name} đã mời bạn tham gia %{resource_name}"
|
|
577
|
+
link_description: 'Để chấp nhận lời mời này, vui lòng nhấp vào liên kết bên dưới:'
|
|
578
|
+
subject: Lời mời tham gia %{resource_name}
|
|
579
|
+
iso: ISO Alpha-2
|
|
580
|
+
item: Món
|
|
581
|
+
key: Khóa
|
|
582
|
+
kind: Loại
|
|
583
|
+
label: Nhãn
|
|
584
|
+
last_name: Họ
|
|
585
|
+
line_item: Mục hàng
|
|
586
|
+
line_items: Mục hàng
|
|
587
|
+
link: Liên kết
|
|
588
|
+
locale: Ngôn ngữ
|
|
589
|
+
locale_not_supported_by_store: không được cửa hàng này hỗ trợ
|
|
590
|
+
manual: Thủ công
|
|
591
|
+
market: Thị trường
|
|
592
|
+
me_no_current_user: Không có người dùng quản trị nào xác thực yêu cầu này
|
|
593
|
+
media: Phương tiện
|
|
594
|
+
meta_description: Meta miểu tả
|
|
595
|
+
meta_keywords: Meta danh sách từ khóa
|
|
596
|
+
metadata: Metadata
|
|
597
|
+
min_quantity: Số lượng tối thiểu
|
|
598
|
+
month: Tháng
|
|
599
|
+
name: Tên
|
|
600
|
+
new_variant: Biến thể mới
|
|
601
|
+
no_cc_type: Không có
|
|
602
|
+
none: Rỗng
|
|
603
|
+
number: Số
|
|
604
|
+
on_hand: Có hàng
|
|
605
|
+
only_active_products_can_be_added_to_cart: Không thể thêm sản phẩm bản nháp và đã lưu trữ vào giỏ hàng, vui lòng đánh dấu sản phẩm là đang hoạt động trước.
|
|
606
|
+
open: Mở
|
|
607
|
+
option_name: Tên tùy chọn
|
|
608
|
+
option_type: Option Type
|
|
609
|
+
option_value: Option Value
|
|
610
|
+
options: Tùy chọn
|
|
611
|
+
or: hoặc
|
|
612
|
+
order: Đơn hàng
|
|
613
|
+
order_routing:
|
|
614
|
+
strategies:
|
|
615
|
+
legacy: Kế thừa
|
|
616
|
+
rules: Quy tắc (theo thứ tự)
|
|
617
|
+
order_summary: Tóm tắt đơn đặt hàng
|
|
618
|
+
orders: Đơn hàng
|
|
619
|
+
out_of_stock: Hết hàng
|
|
620
|
+
password: Mật khẩu
|
|
621
|
+
path: Đường dẫn
|
|
622
|
+
payment: Thanh toán
|
|
623
|
+
payment_method: Phương thức thanh toán
|
|
624
|
+
payment_methods: Phương thức thanh toán
|
|
625
|
+
payment_source: Nguồn thanh toán
|
|
626
|
+
percent: Phần trăm
|
|
627
|
+
phone: Điện thoại
|
|
628
|
+
price: Giá
|
|
629
|
+
price_range: Loại giá
|
|
630
|
+
price_rules:
|
|
631
|
+
channel_rule:
|
|
632
|
+
description: Áp dụng giá theo kênh bán hàng
|
|
633
|
+
customer_group_rule:
|
|
634
|
+
description: Áp dụng giá cho các nhóm khách hàng cụ thể
|
|
635
|
+
price_sack: Price Sack
|
|
636
|
+
prices: Giá
|
|
637
|
+
privacy_policy: Chính sách bảo mật
|
|
638
|
+
processing: Đang xử lý
|
|
639
|
+
product: Sản phẩm
|
|
640
|
+
product_translations: Bản dịch sản phẩm
|
|
641
|
+
products: Sản phẩm
|
|
642
|
+
products_cannot_be_shipped: Hiện tại chúng tôi không thể giao %{product_names} đến vị trí hiện tại của bạn. Vui lòng thay đổi địa chỉ giao hàng hoặc gỡ %{product_names} khỏi giỏ hàng của bạn.
|
|
643
|
+
promotion: Khuyến mãi
|
|
644
|
+
promotion_already_used: Bạn không thể xóa khuyến mãi đã được áp dụng
|
|
645
|
+
promotion_label: Khuyến mãi (%{name})
|
|
646
|
+
promotion_rule_types:
|
|
647
|
+
category:
|
|
648
|
+
description: Đơn hàng bao gồm sản phẩm trong các danh mục được chỉ định
|
|
649
|
+
name: Danh mục
|
|
650
|
+
channel:
|
|
651
|
+
description: Giới hạn cho các đơn hàng được đặt qua (các) kênh được chỉ định
|
|
652
|
+
name: Kênh bán hàng
|
|
653
|
+
country:
|
|
654
|
+
description: Giới hạn cho các đơn hàng có địa chỉ giao hàng tại một quốc gia cụ thể
|
|
655
|
+
name: Quốc gia
|
|
656
|
+
currency:
|
|
657
|
+
description: Giới hạn cho các đơn hàng bằng một loại tiền tệ cụ thể
|
|
658
|
+
name: Tiền tệ
|
|
659
|
+
customer:
|
|
660
|
+
description: Chỉ dành cho các khách hàng được chỉ định
|
|
661
|
+
name: Khách hàng
|
|
662
|
+
customer_group:
|
|
663
|
+
description: Chỉ dành cho khách hàng trong (các) nhóm khách hàng được chỉ định
|
|
664
|
+
name: "(Các) nhóm khách hàng"
|
|
665
|
+
customer_logged_in:
|
|
666
|
+
description: Chỉ dành cho khách hàng đã đăng nhập
|
|
667
|
+
name: Chỉ khách hàng đã đăng nhập
|
|
668
|
+
market:
|
|
669
|
+
description: Giới hạn cho các đơn hàng được đặt tại (các) thị trường được chỉ định
|
|
670
|
+
name: Thị trường
|
|
671
|
+
promotions: Khuyến mãi
|
|
672
|
+
quantity: Số lượng
|
|
673
|
+
query: Truy vấn
|
|
674
|
+
reason: Lí do
|
|
675
|
+
received: Đã nhận
|
|
676
|
+
reference: Tham khảo
|
|
677
|
+
refund: Thối
|
|
678
|
+
refund_amount: Số tiền hoàn lại
|
|
679
|
+
registration: Đăng ký
|
|
680
|
+
remove: Xóa
|
|
681
|
+
remove_gift_card_on_completed_order_error: Bạn không thể gỡ thẻ quà tặng sau khi đơn hàng đã được đặt
|
|
682
|
+
resellable: Có thể bán lại
|
|
683
|
+
resend: Gửi lại
|
|
684
|
+
response_code: Mã phản hồi
|
|
685
|
+
return: trở về
|
|
686
|
+
returned: Đã trả về
|
|
687
|
+
returns_policy: Chính sách trả hàng
|
|
688
|
+
row: Hàng
|
|
689
|
+
rules: Rules
|
|
690
|
+
scope: Phạm vi
|
|
691
|
+
selected_quantity_not_available: đã chọn của %{item} không khả dụng.
|
|
692
|
+
ship: Gửi
|
|
693
|
+
ship_address: Địa chỉ giao hàng
|
|
694
|
+
shipment: Vận chuyển
|
|
695
|
+
shipped: Đã chuyển phát
|
|
696
|
+
shipping: Vận chuyển
|
|
697
|
+
shipping_address: Địa chỉ giao hàng
|
|
698
|
+
shipping_flat_rate_per_item: Giá thấp nhất với từng mục gói
|
|
699
|
+
shipping_flat_rate_per_order: Giá thấp nhất
|
|
700
|
+
shipping_flexible_rate: Suất linh hoạt với từng mục gói
|
|
701
|
+
shipping_policy: Chính sách vận chuyển
|
|
702
|
+
shipping_price_sack: Xô giá
|
|
703
|
+
shipping_rates:
|
|
704
|
+
display_price:
|
|
705
|
+
excluding_tax: "%{price} (+ %{tax_amount} %{tax_rate_name})"
|
|
706
|
+
including_tax: "%{price} (đã gồm %{tax_amount} %{tax_rate_name})"
|
|
707
|
+
sku: SKU
|
|
708
|
+
source: Nguồn
|
|
709
|
+
status: Tình trạng
|
|
710
|
+
stock_location: Địa điểm hàng
|
|
711
|
+
stock_locations: Địa điểm hàng
|
|
712
|
+
stock_transfer:
|
|
713
|
+
errors:
|
|
714
|
+
must_have_variant: Bạn phải thêm ít nhất một biến thể
|
|
715
|
+
same_location: không thể trùng với địa điểm đích
|
|
716
|
+
variants_unavailable: Một số biến thể không có sẵn tại %{stock}
|
|
717
|
+
store: Cửa hàng
|
|
718
|
+
store_credit:
|
|
719
|
+
allocated: Đã thêm
|
|
720
|
+
authorized: Đã ủy quyền
|
|
721
|
+
captured: Đã dùng
|
|
722
|
+
credit: Tín dụng
|
|
723
|
+
eligible: Đủ điều kiện
|
|
724
|
+
store_credit_name: Tín dụng cửa hàng
|
|
725
|
+
store_credit_payment_method:
|
|
726
|
+
currency_mismatch: Tiền tệ của tín dụng cửa hàng không khớp với tiền tệ của đơn hàng
|
|
727
|
+
insufficient_authorized_amount: Không thể thu nhiều hơn số tiền đã ủy quyền
|
|
728
|
+
insufficient_funds: Số dư tín dụng cửa hàng còn lại không đủ
|
|
729
|
+
successful_action: "%{action} tín dụng cửa hàng thành công"
|
|
730
|
+
unable_to_credit: 'Không thể ghi có mã: %{auth_code}'
|
|
731
|
+
unable_to_find: Không thể tìm thấy tín dụng cửa hàng
|
|
732
|
+
unable_to_find_for_action: 'Không thể tìm thấy tín dụng cửa hàng cho mã xác thực: %{auth_code} cho hành động: %{action}'
|
|
733
|
+
unable_to_void: 'Không thể hủy mã: %{auth_code}'
|
|
734
|
+
tags: Thẻ
|
|
735
|
+
tax: Thuế
|
|
736
|
+
tax_category: Biểu thuế
|
|
737
|
+
terms_of_service: Điều khoản dịch vụ
|
|
738
|
+
total: Giá trị
|
|
739
|
+
tracking: Theo dõi
|
|
740
|
+
tracking_number: Số theo dõi
|
|
741
|
+
tracking_url: URL theo dõi
|
|
742
|
+
type: Loại
|
|
743
|
+
unable_to_connect_to_gateway: Không thề kết nối với gateway.
|
|
744
|
+
updated_at: Cập nhật vào
|
|
745
|
+
url: URL
|
|
746
|
+
user: Người dùng
|
|
747
|
+
validation:
|
|
748
|
+
must_be_int: phải là số nguyên
|
|
749
|
+
value: Giá trị
|
|
750
|
+
variant: Variant
|
|
751
|
+
variants: Biến thể
|
|
752
|
+
verified: Đã xác minh
|
|
753
|
+
void: Vô hiệu hóa
|
|
754
|
+
webhook_mailer:
|
|
755
|
+
endpoint_disabled:
|
|
756
|
+
disabled_at_label: Vô hiệu hóa vào
|
|
757
|
+
heading: Điểm cuối Webhook đã bị vô hiệu hóa
|
|
758
|
+
instructions: Vui lòng kiểm tra URL điểm cuối và dịch vụ, sau đó kích hoạt lại trong Cài đặt → Nhà phát triển → Webhook.
|
|
759
|
+
message: Điểm cuối webhook "%{endpoint_name}" đã tự động bị vô hiệu hóa sau nhiều lần gửi thất bại liên tiếp.
|
|
760
|
+
name_label: Tên
|
|
761
|
+
reason_label: Lý do
|
|
762
|
+
subject: 'Điểm cuối webhook đã bị vô hiệu hóa: %{endpoint_name}'
|
|
763
|
+
url_label: URL
|
|
764
|
+
weight: Khối lượng
|
|
765
|
+
weight_unit: Đơn vị khối lượng
|
|
766
|
+
width: Rộng
|
|
767
|
+
year: Năm
|
|
768
|
+
zip: Mã bưu điện
|