Repository navigation
Translation Structure
Selldone texts are split into packs. Each pack is a folder with one file per language code, and every language file mirrors the English file key by key. This page explains each folder, the file formats, and how to find the text you want to change.
translate/
├── dashboard/ Merchant dashboard <code>.ts
├── shop/ Storefront + customer panel <code>.ts
├── global/ Shared texts <code>.ts
│ ├── colors/ Color names <code>.ts
│ ├── countries/ Country names <code>.ts (selected languages)
│ ├── community/ Community texts <code>.ts
│ └── icons/ Direction-aware icon names ltr.ts, rtl.ts
├── service/ Selldone service pages
│ ├── business-ideas/ expert/ feedback/ footer/ guild/
│ ├── home/ menus/ onboarding/ pricelist/
│ └── help/ internal-pages/ (a few languages)
├── backend/lang/<code>/ Laravel PHP files (emails, invoices, errors, …)
└── repository/ LanguagesRepository.ts (on-demand loader)
Language codes are lowercase file names, for example en.ts, de.ts, zh.ts, zh-tw.ts. The main packs
(dashboard, shop, global) have 100 language files each.
| Surface | Folder | Used by | Examples of top-level keys |
|---|---|---|---|
| Dashboard | dashboard/ |
The merchant management suite |
commons, page_titles, add_product, vendor_add, product_admin, widgets
|
| Shop | shop/ |
Storefronts and the customer panel |
footer, product_card, product_info, buy_button, basket_page, order_page, login, coupons
|
| Backend | backend/lang/<code>/ |
Server side: emails, invoices, PDFs, notifications, validation and errors |
emails.php, invoice.php, errors.php, validation.php, fcm.php, sms.php, … |
dashboard/en.ts is the largest file (more than 12,000 lines). shop/en.ts is much smaller and is the best place to
start if you want to improve what customers see.
Every .ts file is an ES module that exports one object:
export default {
/** @see SFooterSection **/
footer: {
map: "Map",
email: "Email",
copyright:
"The use of content only for non-commercial purposes and with reference to the source (link with {shop_title}). All rights reserved to {shop_title}.",
privacy: "Privacy policy",
},
};- Comments such as
/** @see SFooterSection **/name the Selldone component that uses the keys. Keep them; they help translators find the context. - Placeholders use the
{name}form and are filled byvue-i18n. - Some values are arrays (for example
surveys: ["Very poor", "Poor", "Normal", "Good", "Excellent"]).
global/en.ts also defines defaults such as currency_default: "USD" and language_default: "en", and imports the
colors pack.
Backend files follow the Laravel language format and return a PHP array:
<?php
return [
'previous' => '« Previous',
'next' => 'Next »',
];Placeholders use the :name form, for example 'greetings' => 'Hi, :name!' in emails.php. Use
backend/lang/en/ as the reference. The English folder has 25 files, and almost every language folder has the same
set; if a file is missing in your language, copy the English file and translate its values.
| Pack | Purpose |
|---|---|
global/ |
Common words, units, statuses, dialogs, errors and other texts used by every app (mounted as global in the Storefront messages). |
global/colors/ |
Color names. |
global/countries/ |
Country names. Available for a subset of languages (18 files). |
global/community/ |
Community (posts, topics, comments) texts. |
global/icons/ltr.ts, rtl.ts
|
Icon names that flip with text direction, such as arrow_back and arrow_next. Not translated. |
service/ holds texts for Selldone's own pages (home, menus, onboarding, price list, footer, guilds, experts,
feedback and business ideas). Most have 100 language files. service/help/ and service/internal-pages/ exist only
in a few languages.
repository/LanguagesRepository.ts maps pack names to folders and loads a language with dynamic import():
| Constant | Folder |
|---|---|
GLOBAL |
global |
COLORS |
global/colors |
COUNTRIES |
global/countries |
COMMUNITY |
global/community |
DASHBOARD |
dashboard |
SHOP |
shop |
BUSINESS_IDEAS, EXPERT, FEEDBACK, FOOTER, GUILD, HOME, MENUS, ONBOARDING, PRICE_LIST
|
service/<name> |
PACKAGES_SHOP_OVERRIDE lists the packs a merchant can override per shop: global and shop. See
Using the npm Package.
- Find the English sentence on screen.
- Search for it in
shop/en.ts,dashboard/en.ts,global/en.tsorbackend/lang/en/. - Note the key path (for example
footer.privacy). - Open the same file for your language and change the value at the same key path.