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
|
@@ -8,7 +8,7 @@ module Spree
|
|
|
8
8
|
# destination counted in, records why the rest never arrived, and leaves
|
|
9
9
|
# the outstanding count on each line as the record of the loss.
|
|
10
10
|
class Close < Spree::Workflow
|
|
11
|
-
include Spree::Receivables::
|
|
11
|
+
include Spree::Receivables::ClosingShort
|
|
12
12
|
|
|
13
13
|
hooks :validate, :after_close
|
|
14
14
|
|
|
@@ -18,39 +18,12 @@ module Spree
|
|
|
18
18
|
# @param reason [String, nil] what happened to the balance
|
|
19
19
|
def perform(stock_transfer:, reason: nil)
|
|
20
20
|
super
|
|
21
|
-
|
|
22
|
-
stock_transfer.with_lock do
|
|
23
|
-
step :ensure_closable
|
|
24
|
-
run_hooks :validate
|
|
25
|
-
step :uncount_awaited_units
|
|
26
|
-
step :close_short
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
run_hooks :after_close
|
|
30
|
-
stock_transfer.publish_event('stock_transfer.received')
|
|
31
|
-
success(stock_transfer.reload)
|
|
21
|
+
close
|
|
32
22
|
end
|
|
33
23
|
|
|
34
24
|
private
|
|
35
25
|
|
|
36
|
-
def
|
|
37
|
-
return if stock_transfer.partially_received?
|
|
38
|
-
|
|
39
|
-
failure(stock_transfer, Spree.t('stock_transfer.errors.not_partially_received'))
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
# The missing units are not going to turn up, so the destination stops
|
|
43
|
-
# expecting them; each line's outstanding count keeps the record.
|
|
44
|
-
def uncount_awaited_units
|
|
45
|
-
uncount_incoming(stock_transfer)
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def close_short
|
|
49
|
-
now = Time.current
|
|
50
|
-
attributes = { status: 'received', received_at: now, closed_short_at: now, close_reason: reason.presence }
|
|
51
|
-
|
|
52
|
-
failure(stock_transfer) unless stock_transfer.update(attributes)
|
|
53
|
-
end
|
|
26
|
+
def receivable = stock_transfer
|
|
54
27
|
end
|
|
55
28
|
end
|
|
56
29
|
end
|
|
@@ -30,7 +30,7 @@ module Spree
|
|
|
30
30
|
def ensure_returnable
|
|
31
31
|
return if stock_transfer.ready_to_ship?
|
|
32
32
|
|
|
33
|
-
failure(stock_transfer,
|
|
33
|
+
failure(stock_transfer, I18n.t('spree.stock_transfer.errors.not_ready_to_ship'))
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
def return_to_draft
|
|
@@ -46,9 +46,9 @@ module Spree
|
|
|
46
46
|
|
|
47
47
|
def ensure_shippable
|
|
48
48
|
unless stock_transfer.draft? || stock_transfer.ready_to_ship?
|
|
49
|
-
failure(stock_transfer,
|
|
49
|
+
failure(stock_transfer, I18n.t('spree.stock_transfer.errors.not_shippable'))
|
|
50
50
|
end
|
|
51
|
-
failure(stock_transfer,
|
|
51
|
+
failure(stock_transfer, I18n.t('spree.stock_transfer.errors.must_have_variant')) if stock_transfer.items.empty?
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
# Every line needs enough available stock for the quantity being moved,
|
|
@@ -65,7 +65,7 @@ module Spree
|
|
|
65
65
|
return if unavailable_items.empty?
|
|
66
66
|
|
|
67
67
|
failure(stock_transfer,
|
|
68
|
-
|
|
68
|
+
I18n.t('spree.stock_transfer.errors.variants_unavailable', stock: source.name))
|
|
69
69
|
end
|
|
70
70
|
|
|
71
71
|
def write_shipped_movements
|
|
@@ -24,8 +24,8 @@ module Spree
|
|
|
24
24
|
private
|
|
25
25
|
|
|
26
26
|
def ensure_draft
|
|
27
|
-
failure(stock_transfer,
|
|
28
|
-
failure(stock_transfer,
|
|
27
|
+
failure(stock_transfer, I18n.t('spree.stock_transfer.errors.not_draft')) unless stock_transfer.draft?
|
|
28
|
+
failure(stock_transfer, I18n.t('spree.stock_transfer.errors.must_have_variant')) if stock_transfer.items.empty?
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
def mark_ready
|
|
@@ -46,7 +46,7 @@ module Spree
|
|
|
46
46
|
def ensure_receivable
|
|
47
47
|
return if stock_transfer.in_flight?
|
|
48
48
|
|
|
49
|
-
failure(stock_transfer,
|
|
49
|
+
failure(stock_transfer, I18n.t('spree.stock_transfer.errors.not_in_transit'))
|
|
50
50
|
end
|
|
51
51
|
|
|
52
52
|
def line_belongs?(line)
|
|
@@ -4,6 +4,8 @@ module Spree
|
|
|
4
4
|
# matter of record, so this refuses anything past `draft` rather than
|
|
5
5
|
# quietly rewriting a document the warehouse is already acting on.
|
|
6
6
|
class Update < Spree::Workflow
|
|
7
|
+
include Spree::Receivables::DraftEditing
|
|
8
|
+
|
|
7
9
|
hooks :validate, :after_update
|
|
8
10
|
|
|
9
11
|
# @param stock_transfer [Spree::StockTransfer]
|
|
@@ -13,43 +15,13 @@ module Spree
|
|
|
13
15
|
# replacing the current lines; nil leaves them alone
|
|
14
16
|
def perform(stock_transfer:, attributes: {}, items: nil)
|
|
15
17
|
super
|
|
16
|
-
|
|
17
|
-
step :ensure_editable
|
|
18
|
-
run_hooks :validate
|
|
19
|
-
|
|
20
|
-
ApplicationRecord.transaction do
|
|
21
|
-
step :apply_changes
|
|
22
|
-
step :save_transfer
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
run_hooks :after_update
|
|
26
|
-
success(stock_transfer.reload)
|
|
18
|
+
edit
|
|
27
19
|
end
|
|
28
20
|
|
|
29
21
|
private
|
|
30
22
|
|
|
31
|
-
def
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
failure(stock_transfer, Spree.t('stock_transfer.errors.not_editable'))
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
# A whole-list replacement rather than a per-line diff: a draft's lines
|
|
38
|
-
# are what the merchant is still deciding, and sending the list they
|
|
39
|
-
# want is simpler for a client than working out which rows to delete.
|
|
40
|
-
def apply_changes
|
|
41
|
-
stock_transfer.assign_attributes(attributes) if attributes.present?
|
|
42
|
-
return if items.nil?
|
|
43
|
-
|
|
44
|
-
stock_transfer.items.destroy_all
|
|
45
|
-
Array(items).each do |item|
|
|
46
|
-
stock_transfer.items.build(variant: item[:variant], quantity_shipped: item[:quantity_shipped])
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def save_transfer
|
|
51
|
-
failure(stock_transfer) unless stock_transfer.save
|
|
52
|
-
end
|
|
23
|
+
def receivable = stock_transfer
|
|
24
|
+
def item_attributes = %i[quantity_shipped]
|
|
53
25
|
end
|
|
54
26
|
end
|
|
55
27
|
end
|
data/config/i18n-tasks.yml
CHANGED
|
@@ -14,11 +14,13 @@ data:
|
|
|
14
14
|
# adapter: I18n::Tasks::Data::FileSystem
|
|
15
15
|
|
|
16
16
|
# Locale files or `Dir.glob` patterns where translations are read from:
|
|
17
|
+
## This one config checks every Spree gem: core's keys are used from all of
|
|
18
|
+
## them, and their own keys from core.
|
|
17
19
|
read:
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
- config/locales/%{locale}.yml
|
|
21
|
+
<% %w[api emails].map { |gem| "../#{gem}" }.concat(Dir['../providers/*']).each do |gem| %>
|
|
22
|
+
- "<%= File.expand_path("#{gem}/config/locales", Dir.pwd) %>/%{locale}.yml"
|
|
23
|
+
<% end %>
|
|
22
24
|
|
|
23
25
|
# Locale files to write new keys to, based on a list of key pattern => file rules. Matched from top to bottom:
|
|
24
26
|
# `i18n-tasks normalize -p` will force move the keys according to these rules
|
|
@@ -52,9 +54,14 @@ data:
|
|
|
52
54
|
|
|
53
55
|
# Find translate calls
|
|
54
56
|
search:
|
|
55
|
-
## Paths or `Find.find` patterns to search in
|
|
56
|
-
|
|
57
|
-
|
|
57
|
+
## Paths or `Find.find` patterns to search in. Core keys are read by every
|
|
58
|
+
## Spree gem, so all of them are searched.
|
|
59
|
+
paths:
|
|
60
|
+
- app/
|
|
61
|
+
- lib/
|
|
62
|
+
<% (%w[api emails dashboard opentelemetry].map { |gem| "../#{gem}" } + Dir['../providers/*']).product(%w[app lib]).each do |gem, folder| %>
|
|
63
|
+
- "<%= File.expand_path("#{gem}/#{folder}", Dir.pwd) %>"
|
|
64
|
+
<% end %>
|
|
58
65
|
|
|
59
66
|
## Root directories for relative keys resolution.
|
|
60
67
|
# relative_roots:
|
|
@@ -143,12 +150,18 @@ ignore_missing:
|
|
|
143
150
|
- 'unauthorized.default'
|
|
144
151
|
|
|
145
152
|
## Consider these keys used:
|
|
146
|
-
|
|
147
|
-
#
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
153
|
+
ignore_unused:
|
|
154
|
+
# Read by Rails itself (model names, attribute names, validation messages, formats).
|
|
155
|
+
- 'activerecord.*'
|
|
156
|
+
- 'activemodel.*'
|
|
157
|
+
- 'errors.*'
|
|
158
|
+
- 'number.*'
|
|
159
|
+
# Keys built with interpolation, which the scanner cannot follow.
|
|
160
|
+
- 'spree.reporting.*'
|
|
161
|
+
- 'spree.permissions_catalog.*'
|
|
162
|
+
# Spree::TypeLabels reads <family>_types.<api_type>.{name,description}.
|
|
163
|
+
- 'spree.{collection_rule,commission_rule,delivery_method_rule,order_routing_rule,promotion_action,promotion_rule,seller_requirement}_types.*'
|
|
164
|
+
- 'spree.i18n.this_file_language'
|
|
152
165
|
|
|
153
166
|
## Exclude these keys from the `i18n-tasks eq-base' report:
|
|
154
167
|
# ignore_eq_base:
|
|
@@ -172,8 +185,9 @@ ignore_missing:
|
|
|
172
185
|
# <%# I18n::Tasks.add_scanner 'I18n::Tasks::Scanners::PatternMapper',
|
|
173
186
|
# only: %w(*.html.haml *.html.slim),
|
|
174
187
|
# patterns: [['= title\b', '.page_title']] %>
|
|
175
|
-
|
|
176
|
-
#
|
|
177
|
-
#
|
|
178
|
-
|
|
179
|
-
|
|
188
|
+
|
|
189
|
+
# Email templates translate Spree keys with Liquid's `t` filter, and shared
|
|
190
|
+
# partials take a key to translate (`label: 'some.key', translate: true`).
|
|
191
|
+
<% I18n::Tasks.add_scanner 'I18n::Tasks::Scanners::PatternMapper',
|
|
192
|
+
only: %w(*.liquid),
|
|
193
|
+
patterns: [['%{key}\s*\|\s*t\b', 'spree.%{key}'], ['\blabel:\s*%{key}', 'spree.%{key}']] %>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
Alba.backend = :oj_rails
|
|
2
|
+
Alba.inflector = :active_support
|
|
3
|
+
|
|
4
|
+
# Custom types
|
|
5
|
+
Alba.register_type :iso8601, converter: ->(time) { time&.iso8601(3) }, auto_convert: true
|
|
6
|
+
# Decimals and money rendered as their exact string form instead of JSON numbers
|
|
7
|
+
Alba.register_type :string, check: ->(value) { value.is_a?(String) }, converter: ->(value) { value.to_s }, auto_convert: true
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
aa,Afar,Afar
|
|
2
|
+
ab,Abkhazian,Аҧсуа
|
|
3
|
+
af,Afrikaans,Afrikaans
|
|
4
|
+
ak,Akan,Akana
|
|
5
|
+
als,Alemannic,Alemannisch
|
|
6
|
+
am,Amharic,አማርኛ
|
|
7
|
+
an,Aragonese,Aragonés
|
|
8
|
+
ang,Angal,Angal Heneng
|
|
9
|
+
ang,Anglo-Saxon / Old English,Englisc
|
|
10
|
+
ar,Arabic,العربية
|
|
11
|
+
arc,Aramaic,ܣܘܪܬ
|
|
12
|
+
as,Assamese,অসমীয়া
|
|
13
|
+
ast,Asturian,Asturianu
|
|
14
|
+
av,Avar,Авар
|
|
15
|
+
awa,Awadhi,Awadhi
|
|
16
|
+
ay,Aymara,Aymar
|
|
17
|
+
az,Azerbaijani,Azərbaycanca / آذربايجان
|
|
18
|
+
ba,Bashkir,Башҡорт
|
|
19
|
+
bar,Bavarian,Boarisch
|
|
20
|
+
bat-smg,Samogitian,Žemaitėška
|
|
21
|
+
bcl,Bikol,Bikol Central
|
|
22
|
+
be,Belarusian,Беларуская
|
|
23
|
+
be-x-old,Belarusian (Taraškievica),Беларуская (тарашкевіца)
|
|
24
|
+
bg,Bulgarian,Български
|
|
25
|
+
bh,Bihari,भोजपुरी
|
|
26
|
+
bi,Bislama,Bislama
|
|
27
|
+
bm,Bambara,Bamanankan
|
|
28
|
+
bn,Bengali,বাংলা
|
|
29
|
+
bo,Tibetan,བོད་ཡིག / Bod skad
|
|
30
|
+
bpy,Bishnupriya Manipuri,ইমার ঠার/বিষ্ণুপ্রিয়া মণিপুরী
|
|
31
|
+
br,Breton,Brezhoneg
|
|
32
|
+
brx,Boro,बड़
|
|
33
|
+
bs,Bosnian,Bosanski
|
|
34
|
+
bug,Buginese,ᨅᨔ ᨕᨘᨁᨗ / Basa Ugi
|
|
35
|
+
bxr,Buriat (Russia),Буряад хэлэн
|
|
36
|
+
ca,Catalan,Català
|
|
37
|
+
cdo,Min Dong Chinese,Mìng-dĕ̤ng-ngṳ̄ / 閩東語
|
|
38
|
+
ce,Chechen,Нохчийн
|
|
39
|
+
ceb,Cebuano,Sinugboanong Binisaya
|
|
40
|
+
ch,Chamorro,Chamoru
|
|
41
|
+
cho,Choctaw,Choctaw
|
|
42
|
+
chr,Cherokee,ᏣᎳᎩ
|
|
43
|
+
chy,Cheyenne,Tsetsêhestâhese
|
|
44
|
+
ckb,Kurdish (Sorani),کوردی
|
|
45
|
+
co,Corsican,Corsu
|
|
46
|
+
cr,Cree,Nehiyaw
|
|
47
|
+
cs,Czech,Česky
|
|
48
|
+
csb,Kashubian,Kaszëbsczi
|
|
49
|
+
cu,Old Church Slavonic / Old Bulgarian,словѣньскъ / slověnĭskŭ
|
|
50
|
+
cv,Chuvash,Чăваш
|
|
51
|
+
cy,Welsh,Cymraeg
|
|
52
|
+
da,Danish,Dansk
|
|
53
|
+
de,German,Deutsch
|
|
54
|
+
diq,Dimli,Zazaki
|
|
55
|
+
dsb,Lower Sorbian,Dolnoserbski
|
|
56
|
+
dv,Divehi,ދިވެހިބަސް
|
|
57
|
+
dz,Dzongkha,ཇོང་ཁ
|
|
58
|
+
ee,Ewe,Ɛʋɛ
|
|
59
|
+
el,Greek,Ελληνικά
|
|
60
|
+
en,English,English
|
|
61
|
+
eo,Esperanto,Esperanto
|
|
62
|
+
es,Spanish,Español
|
|
63
|
+
et,Estonian,Eesti
|
|
64
|
+
eu,Basque,Euskara
|
|
65
|
+
ext,Extremaduran,Estremeñu
|
|
66
|
+
fa,Persian,فارسی
|
|
67
|
+
ff,Peul,Fulfulde
|
|
68
|
+
fi,Finnish,Suomi
|
|
69
|
+
fiu-vro,Võro,Võro
|
|
70
|
+
fj,Fijian,Na Vosa Vakaviti
|
|
71
|
+
fo,Faroese,Føroyskt
|
|
72
|
+
fr,French,Français
|
|
73
|
+
frp,Arpitan / Franco-Provençal,Arpitan / francoprovençal
|
|
74
|
+
fur,Friulian,Furlan
|
|
75
|
+
fy,West Frisian,Frysk
|
|
76
|
+
ga,Irish,Gaeilge
|
|
77
|
+
gan,Gan Chinese,贛語
|
|
78
|
+
gbm,Garhwali,गढ़वळी
|
|
79
|
+
gd,Scottish Gaelic,Gàidhlig
|
|
80
|
+
gil,Gilbertese,Taetae ni kiribati
|
|
81
|
+
gl,Galician,Galego
|
|
82
|
+
gn,Guarani,Avañe'ẽ
|
|
83
|
+
got,Gothic,gutisk
|
|
84
|
+
gu,Gujarati,ગુજરાતી
|
|
85
|
+
gv,Manx,Gaelg
|
|
86
|
+
ha,Hausa,هَوُسَ
|
|
87
|
+
hak,Hakka Chinese,客家語/Hak-kâ-ngî
|
|
88
|
+
haw,Hawaiian,Hawai`i
|
|
89
|
+
he,Hebrew,עברית
|
|
90
|
+
hi,Hindi,हिन्दी
|
|
91
|
+
ho,Hiri Motu,Hiri Motu
|
|
92
|
+
hr,Croatian,Hrvatski
|
|
93
|
+
ht,Haitian,Krèyol ayisyen
|
|
94
|
+
hu,Hungarian,Magyar
|
|
95
|
+
hy,Armenian,Հայերեն
|
|
96
|
+
hz,Herero,Otsiherero
|
|
97
|
+
ia,Interlingua,Interlingua
|
|
98
|
+
id,Indonesian,Bahasa Indonesia
|
|
99
|
+
ie,Interlingue,Interlingue
|
|
100
|
+
ig,Igbo,Igbo
|
|
101
|
+
ii,Sichuan Yi,ꆇꉙ / 四川彝语
|
|
102
|
+
ik,Inupiak,Iñupiak
|
|
103
|
+
ilo,Ilokano,Ilokano
|
|
104
|
+
inh,Ingush,ГӀалгӀай
|
|
105
|
+
io,Ido,Ido
|
|
106
|
+
is,Icelandic,Íslenska
|
|
107
|
+
it,Italian,Italiano
|
|
108
|
+
iu,Inuktitut,ᐃᓄᒃᑎᑐᑦ
|
|
109
|
+
ja,Japanese,日本語
|
|
110
|
+
jbo,Lojban,Lojban
|
|
111
|
+
jv,Javanese,Basa Jawa
|
|
112
|
+
ka,Georgian,ქართული
|
|
113
|
+
kg,Kongo,KiKongo
|
|
114
|
+
ki,Kikuyu,Gĩkũyũ
|
|
115
|
+
kj,Kuanyama,Kuanyama
|
|
116
|
+
kk,Kazakh,Қазақша
|
|
117
|
+
kl,Greenlandic,Kalaallisut
|
|
118
|
+
km,Cambodian,ភាសាខ្មែរ
|
|
119
|
+
kn,Kannada,ಕನ್ನಡ
|
|
120
|
+
khw,Khowar,کھوار
|
|
121
|
+
ko,Korean,한국어
|
|
122
|
+
kr,Kanuri,Kanuri
|
|
123
|
+
ks,Kashmiri,कॉशुर / کٲشُر
|
|
124
|
+
ksh,Ripuarian,Ripoarisch
|
|
125
|
+
ku,Kurdish (Kurmanji),Kurdî
|
|
126
|
+
kv,Komi,Коми
|
|
127
|
+
kw,Cornish,Kernewek
|
|
128
|
+
ky,Kirghiz,Kırgızca / Кыргызча
|
|
129
|
+
la,Latin,Latina
|
|
130
|
+
lad,Ladino / Judeo-Spanish,Dzhudezmo / Djudeo-Espanyol
|
|
131
|
+
lan,Lango,Leb Lango / Luo
|
|
132
|
+
lb,Luxembourgish,Lëtzebuergesch
|
|
133
|
+
lg,Ganda,Luganda
|
|
134
|
+
li,Limburgian,Limburgs
|
|
135
|
+
lij,Ligurian,Líguru
|
|
136
|
+
lmo,Lombard,Lumbaart
|
|
137
|
+
ln,Lingala,Lingála
|
|
138
|
+
lo,Laotian,ລາວ / Pha xa lao
|
|
139
|
+
lzz,Laz,Lazuri / ლაზური
|
|
140
|
+
lt,Lithuanian,Lietuvių
|
|
141
|
+
lv,Latvian,Latviešu
|
|
142
|
+
map-bms,Banyumasan,Basa Banyumasan
|
|
143
|
+
mg,Malagasy,Malagasy
|
|
144
|
+
man,Mandarin,官話/官话
|
|
145
|
+
mh,Marshallese,Kajin Majel / Ebon
|
|
146
|
+
mi,Māori,Māori
|
|
147
|
+
min,Minangkabau,Minangkabau
|
|
148
|
+
mk,Macedonian,Македонски
|
|
149
|
+
ml,Malayalam,മലയാളം
|
|
150
|
+
mn,Mongolian,Монгол
|
|
151
|
+
mo,Moldovan,Moldovenească
|
|
152
|
+
mr,Marathi,मराठी
|
|
153
|
+
mrh,Mara,Mara
|
|
154
|
+
ms,Malay,Bahasa Melayu
|
|
155
|
+
mt,Maltese,bil-Malti
|
|
156
|
+
mus,Creek / Muskogee,Mvskoke
|
|
157
|
+
mwl,Mirandese,Mirandés
|
|
158
|
+
my,Burmese,Myanmasa
|
|
159
|
+
na,Nauruan,Dorerin Naoero
|
|
160
|
+
nah,Nahuatl,Nahuatl
|
|
161
|
+
nap,Neapolitan,Nnapulitano
|
|
162
|
+
nd,North Ndebele,Sindebele
|
|
163
|
+
nds,Low German / Low Saxon,Plattdüütsch
|
|
164
|
+
nds-nl,Dutch Low Saxon,Nedersaksisch
|
|
165
|
+
ne,Nepali,नेपाली
|
|
166
|
+
new,Newar,नेपालभाषा / Newah Bhaye
|
|
167
|
+
ng,Ndonga,Oshiwambo
|
|
168
|
+
nl,Dutch,Nederlands
|
|
169
|
+
nn,Norwegian Nynorsk,Norsk (nynorsk)
|
|
170
|
+
no,Norwegian,Norsk (bokmål / riksmål)
|
|
171
|
+
nr,South Ndebele,isiNdebele
|
|
172
|
+
nso,Northern Sotho,Sesotho sa Leboa / Sepedi
|
|
173
|
+
nrm,Norman,Nouormand / Normaund
|
|
174
|
+
nv,Navajo,Diné bizaad
|
|
175
|
+
ny,Chichewa,Chi-Chewa
|
|
176
|
+
oc,Occitan,Occitan
|
|
177
|
+
oj,Ojibwa,ᐊᓂᔑᓈᐯᒧᐎᓐ / Anishinaabemowin
|
|
178
|
+
om,Oromo,Oromoo
|
|
179
|
+
or,Oriya,ଓଡ଼ିଆ
|
|
180
|
+
os,Ossetian / Ossetic,Иронау
|
|
181
|
+
pa,Panjabi / Punjabi,ਪੰਜਾਬੀ / پنجابی
|
|
182
|
+
pag,Pangasinan,Pangasinan
|
|
183
|
+
pam,Kapampangan,Kapampangan
|
|
184
|
+
pap,Papiamentu,Papiamentu
|
|
185
|
+
pdc,Pennsylvania German,Deitsch
|
|
186
|
+
pi,Pali,Pāli / पाऴि
|
|
187
|
+
pih,Norfolk,Norfuk
|
|
188
|
+
pl,Polish,Polski
|
|
189
|
+
pms,Piedmontese,Piemontèis
|
|
190
|
+
ps,Pashto,پښتو
|
|
191
|
+
pt,Portuguese,Português
|
|
192
|
+
qu,Quechua,Runa Simi
|
|
193
|
+
rm,Raeto Romance,Rumantsch
|
|
194
|
+
rmy,Romani,Romani / रोमानी
|
|
195
|
+
rn,Kirundi,Kirundi
|
|
196
|
+
ro,Romanian,Română
|
|
197
|
+
roa-rup,Aromanian,Armâneashti
|
|
198
|
+
ru,Russian,Русский
|
|
199
|
+
rw,Rwandi,Kinyarwandi
|
|
200
|
+
sa,Sanskrit,संस्कृतम्
|
|
201
|
+
sc,Sardinian,Sardu
|
|
202
|
+
scn,Sicilian,Sicilianu
|
|
203
|
+
sco,Scots,Scots
|
|
204
|
+
sd,Sindhi,सिंधी / سنڌي
|
|
205
|
+
se,Northern Sami,Davvisámegiella
|
|
206
|
+
sg,Sango,Sängö
|
|
207
|
+
sh,Serbo-Croatian,Srpskohrvatski / Српскохрватски
|
|
208
|
+
si,Sinhalese,සිංහල
|
|
209
|
+
simple,Simple English,Simple English
|
|
210
|
+
sk,Slovak,Slovenčina
|
|
211
|
+
sl,Slovenian,Slovenščina
|
|
212
|
+
sm,Samoan,Gagana Samoa
|
|
213
|
+
sn,Shona,chiShona
|
|
214
|
+
so,Somalia,Soomaaliga
|
|
215
|
+
sq,Albanian,Shqip
|
|
216
|
+
sr,Serbian,Српски
|
|
217
|
+
ss,Swati,SiSwati
|
|
218
|
+
st,Southern Sotho,Sesotho
|
|
219
|
+
su,Sundanese,Basa Sunda
|
|
220
|
+
sv,Swedish,Svenska
|
|
221
|
+
sw,Swahili,Kiswahili
|
|
222
|
+
ta,Tamil,தமிழ்
|
|
223
|
+
te,Telugu,తెలుగు
|
|
224
|
+
tet,Tetum,Tetun
|
|
225
|
+
tg,Tajik,Тоҷикӣ
|
|
226
|
+
th,Thai,ไทย / Phasa Thai
|
|
227
|
+
ti,Tigrinya,ትግርኛ
|
|
228
|
+
tk,Turkmen,Туркмен / تركمن
|
|
229
|
+
tl,Tagalog,Tagalog / ᜆᜄᜎᜓᜄ᜔
|
|
230
|
+
tlh,Klingon,tlhIngan-Hol
|
|
231
|
+
tn,Tswana,Setswana
|
|
232
|
+
to,Tonga,Lea Faka-Tonga
|
|
233
|
+
tpi,Tok Pisin,Tok Pisin
|
|
234
|
+
tr,Turkish,Türkçe
|
|
235
|
+
ts,Tsonga,Xitsonga
|
|
236
|
+
tt,Tatar,Tatarça
|
|
237
|
+
tum,Tumbuka,chiTumbuka
|
|
238
|
+
tw,Twi,Twi
|
|
239
|
+
ty,Tahitian,Reo Mā`ohi
|
|
240
|
+
udm,Udmurt,Удмурт кыл
|
|
241
|
+
ug,Uyghur,Uyƣurqə / ئۇيغۇرچە
|
|
242
|
+
uk,Ukrainian,Українська
|
|
243
|
+
ur,Urdu,اردو
|
|
244
|
+
uz,Uzbek,Ўзбек
|
|
245
|
+
uz_AF,Uzbeki Afghanistan,اوزبیکی
|
|
246
|
+
ve,Venda,Tshivenḓa
|
|
247
|
+
vi,Vietnamese,Việtnam
|
|
248
|
+
vec,Venetian,Vèneto
|
|
249
|
+
vls,West Flemish,West-Vlaoms
|
|
250
|
+
vo,Volapük,Volapük
|
|
251
|
+
wa,Walloon,Walon
|
|
252
|
+
war,Waray / Samar-Leyte Visayan,Winaray / Binisaya Lineyte-Samarnon
|
|
253
|
+
wo,Wolof,Wollof
|
|
254
|
+
xal,Kalmyk,Хальмг
|
|
255
|
+
xh,Xhosa,isiXhosa
|
|
256
|
+
xmf,Megrelian,მარგალური
|
|
257
|
+
yi,Yiddish,ייִדיש
|
|
258
|
+
yo,Yoruba,Yorùbá
|
|
259
|
+
za,Zhuang,Cuengh / Tôô / 壮语
|
|
260
|
+
zh,Chinese,中文
|
|
261
|
+
zh-classical,Classical Chinese,文言
|
|
262
|
+
zh-min-nan,Minnan,Bân-lâm-gú
|
|
263
|
+
zh-yue,Cantonese,粵語 / 粤语
|
|
264
|
+
zu,Zulu,isiZulu
|