Skip to content

[Bug]:@medusajs/draft-order - Empty state text is hardcoded and not translatable #14377

@kasra9001

Description

@kasra9001

Package.json file

{
  "name": "medusa-website",
  "version": "0.0.1",
  "description": "A starter for Medusa projects.",
  "author": "Medusa (https://medusajs.com)",
  "license": "MIT",
  "keywords": [
    "sqlite",
    "postgres",
    "typescript",
    "ecommerce",
    "headless",
    "medusa"
  ],
  "scripts": {
    "build": "medusa build",
    "seed": "medusa exec ./src/scripts/seed.ts",
    "start": "medusa start",
    "dev": "medusa develop",
    "test:integration:http": "TEST_TYPE=integration:http NODE_OPTIONS=--experimental-vm-modules jest --silent=false --runInBand --forceExit",
    "test:integration:modules": "TEST_TYPE=integration:modules NODE_OPTIONS=--experimental-vm-modules jest --silent=false --runInBand --forceExit",
    "test:unit": "TEST_TYPE=unit NODE_OPTIONS=--experimental-vm-modules jest --silent --runInBand --forceExit"
  },
  "dependencies": {
    "@medusajs/admin-sdk": "2.12.3",
    "@medusajs/cli": "2.12.3",
    "@medusajs/framework": "2.12.3",
    "@medusajs/medusa": "2.12.3"
  },
  "devDependencies": {
    "@medusajs/test-utils": "2.12.3",
    "@swc/core": "^1.7.28",
    "@swc/jest": "^0.2.36",
    "@types/jest": "^29.5.13",
    "@types/node": "^20.12.11",
    "@types/react": "^18.3.2",
    "@types/react-dom": "^18.2.25",
    "jest": "^29.7.0",
    "prop-types": "^15.8.1",
    "react": "^18.3.1",
    "react-dom": "^18.3.1",
    "ts-node": "^10.9.2",
    "typescript": "^5.6.2",
    "vite": "^5.4.14",
    "yalc": "^1.0.0-pre.53"
  },
  "engines": {
    "node": ">=20"
  }
}

Node.js version

v24.11.1

Database and its version

Postgres 17.0

Operating system name and version

macOS 26.1

Browser name

No response

What happended?

The draft orders list page has hardcoded strings in the empty state that are NOT using the i18n translation system. This makes it impossible to translate these strings to other languages (like Persian/Farsi).

The hardcoded strings are located in:
node_modules/@medusajs/draft-order/.medusa/server/src/admin/index.mjs

Affected strings:

  • "No draft orders found"
  • "Create a new draft order to get started."
  • "No results found"
  • "No draft orders match your filter criteria."

Code location:
emptyState: {
empty: {
heading: "No draft orders found",
description: "Create a new draft order to get started."
},
filtered: {
heading: "No results found",
description: "No draft orders match your filter criteria."
}
}

Expected behavior

These strings should use the translation system (t() function from react-i18next) so they can be translated to other languages.

The draftOrders section already has translations defined in src/admin/i18n/json/fa.json, but the empty state text is not using them.

Actual behavior

The empty state text is hardcoded in English and cannot be translated even though I have set up Persian (Farsi) translations for the admin dashboard.

Link to reproduction repo

Not applicable - can be reproduced with any fresh Medusa 2.12.3 installation by navigating to /app/draft-orders with no draft orders created.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions