Core Concepts
Understanding MovaBase fundamentals
Core Concepts
This section explains the fundamental concepts that structure MovaBase. Understanding these concepts will help you effectively organize and manage your translations.
Organizations and Projects
MovaBase uses a hierarchical structure with organizations at the top level, containing projects within them.
Organization
An organization represents a workspace that groups related projects together under shared billing and team management.
Every user account can belong to multiple organizations, each with its own projects, team members, and subscription plan.
Organization Properties
Each organization includes:
- Title: The organization name (e.g., "Acme Inc.", "Marketing Team")
- Description: Optional description to provide context
- Icon: An emoji to visually identify the organization
- Team Members: Users with assigned roles (Owner, Admin, Developer, Viewer)
- Subscription: Plan (Basic or Unlimited) with limits on projects, users, and translation keys
- Billing: Managed at the organization level
When to Use Multiple Organizations
Consider creating separate organizations when:
- You work with different clients or customers
- You have separate teams with different billing requirements
- You want to isolate different business units or departments
- You are a translation agency managing multiple client accounts
Each organization has its own billing. This makes it easy to track costs separately for different clients or teams.
Projects
A project represents a distinct translation effort for a specific application, product, or component. Each project has its own set of languages, translations, files, and settings.
Project Properties
Each project includes:
- Name: Descriptive project name (e.g., "Mobile App", "Website", "Documentation")
- Description: Optional context about the project
- Icon: Emoji to visually identify the project
- Languages: Set of languages supported by this project
- Translations: All translation keys and values for this project
- Download Mode: How translations are structured when exported (file-based or language-based)
- Linked Project: Optional connection to another project to share translation keys
- Bitbucket Integration: Optional connection to sync with a repository
- Organization ID: Which organization owns this project
When to Use Multiple Projects
Create separate projects within an organization when:
- You have different applications or products that need translations
- You want to organize translations by feature or component
- Different teams work on different parts of your application
- You have different deployment environments (e.g., staging, production) with different translations
Each project counts toward your plan's project limit. Choose your project structure wisely to make the most of your available slots.
Organization vs. Project Hierarchy
| Level | Scope | Example | Managed At |
|---|---|---|---|
| Organization | Billing, team, multiple projects | Organization dashboard | |
| Project | Single application/product, translations, languages | Project dashboard |
Project Visibility and Access
Projects within an organization follow the organization's access control model:
NEEDS_MEDIA
Languages and Translations
Understanding how languages and translations are structured in MovaBase is essential for effective translation management.
Language Structure
Languages in MovaBase represent the target languages for your translations. Each language has the following properties:
| Property | Description | Example |
|---|---|---|
| Code | ISO language code used for identification | en, es, fr, pt-BR |
| Name | Display name in English | English, Spanish, French, Portuguese (Brazil) |
| Native Name | Name in the language itself | English, EspaΓ±ol, FranΓ§ais, PortuguΓͺs |
| Emoji | Visual identifier for the language | πΊπΈ, πͺπΈ, π«π·, π§π· |
| Is Default | Indicates if this is the primary/source language | true for source language |
The default language is typically your source language (e.g., English) where you create the original translation keys. All other languages are translations of these keys.
Translation Keys and Values
Translations are organized as key-value pairs that map your application's translation keys to their localized values.
Translation Structure
| Component | Description | Example |
|---|---|---|
| Key | The identifier used in your code | welcome_message, auth.login.title |
| Value | The translated text for that key | Welcome to our app!, Iniciar sesiΓ³n |
| File Name | Which translation file this belongs to | common.json, auth.json |
Key Formats
Translation keys in MovaBase can use two formats:
Flat Keys: Simple, single-level keys
welcome_message
login_title
error_messageNested Keys: Hierarchical keys using dot notation
auth.login.title
auth.login.button
auth.forgot_password.titleUse nested keys to logically group related translations. This makes them easier to find and maintain.
Translation Values
Translation values can be simple text strings or complex objects:
Simple Values: Plain text translations
"Welcome to our application!"
"Por favor, inicie sesiΓ³n"Complex Values: Objects with plural forms or variations
{
"one": "1 item",
"other": "5 items"
}Default Language Concept
The default language serves as your source or base language. Key characteristics:
- Typically English or your primary development language
- Translation keys originate from this language
- Used as reference when creating new translations
- Often the first language added to a project
- Can be changed if needed
The default language is not locked. You can change which language is marked as default at any time from the project settings.
Translation Files
Translations are organized into files within each project. Files help group related translations together.
File Purpose
| File Type | Purpose | Example |
|---|---|---|
| Feature-based | Translations for specific features | auth.json, checkout.json, profile.json |
| Component-based | Translations for UI components | button.json, header.json, modal.json |
| Page-based | Translations for specific pages | home.json, about.json, contact.json |
File Naming Conventions
Best practices for file naming:
- Use lowercase with underscores or hyphens
- Keep names descriptive but concise
- Avoid special characters (except underscores and hyphens)
- Use consistent naming across your project
Examples:
common.json- Shared translationsauth.json- Authentication-related translationscheckout.json- Checkout flow translationsuser_dashboard.json- Dashboard page translations
NEEDS_MEDIA
Download Modes
MovaBase offers two download modes that determine how your translations are structured when exported. Understanding both modes helps you choose the right one for your project.
File-Based Mode
File-based mode organizes translations into separate files, creating a namespace-like structure. This is ideal for larger projects with many translations.
Structure
In file-based mode, translations are exported with the following structure:
/
βββ en/
β βββ common.json
β βββ auth.json
β βββ dashboard.json
β βββ settings.json
βββ es/
β βββ common.json
β βββ auth.json
β βββ dashboard.json
β βββ settings.json
βββ fr/
βββ common.json
βββ auth.json
βββ dashboard.json
βββ settings.jsonWhen to Use File-Based Mode
Choose file-based mode when:
- Your application has distinct translation files for different features
- You want to maintain separation between different parts of your app
- Multiple developers work on different features simultaneously
- Your project has 50+ translation keys
- You're migrating from an existing project with file-based organization
Advantages
- Better organization for large projects
- Easier to merge conflicts in version control
- Clear separation of concerns
- Smaller individual files to load
File-based mode is the default for new projects. Start with this mode if you're unsure which to choose.
Language-Based Mode
Language-based mode creates a single translation file for each language. This is simpler and works well for smaller projects.
Structure
In language-based mode, translations are exported with the following structure:
/
βββ en.json
βββ es.json
βββ fr.jsonEach JSON file contains all translations for that language.
When to Use Language-Based Mode
Choose language-based mode when:
- Your project is small with fewer translations
- You prefer a simple, flat structure
- You're starting a new project and want to keep things simple
- Your application loads all translations at once
- You have a single-page application
Advantages
- Simpler structure
- Easier to understand for new team members
- Single load point per language
- Less file management overhead
Language-based mode can become unwieldy as your project grows. Consider switching to file-based mode if your translation file becomes too large to manage effectively.
Download Mode Comparison
| Aspect | File-Based Mode | Language-Based Mode |
|---|---|---|
| Structure | Files grouped by namespace | Single file per language |
| File Count | Multiple files per language | One file per language |
| Best For | Large projects, multiple features | Small projects, simple apps |
| Organization | Feature-based organization | Flat structure |
| Version Control | Smaller, focused changes | Larger, monolithic changes |
| Loading | Load files as needed | Load entire language at once |
| Switching | More complex to switch modes | Easier to switch modes |
Switching Download Modes
You can change the download mode at any time from the project settings:
- Open your project and click on the "Settings" tab
- Navigate to the "General" section
- Choose between "File-based" or "Language-based" mode
- Click "Save Changes" to apply the new download mode to your project
Switching download modes doesn't affect your existing translations. It only changes how they're organized when exported.
NEEDS_MEDIA
Files and Organization
Understanding how files and folders work in MovaBase helps you structure your translations effectively.
File-Based Organization Structure
In file-based mode, translations are organized into files that act as containers for related keys.
File Structure Within MovaBase
MovaBase displays files in a hierarchical view:
Project Name
βββ common.json
β βββ welcome_message
β βββ login_title
β βββ error_message
βββ auth.json
β βββ auth.login.title
β βββ auth.login.button
β βββ auth.forgot_password.title
βββ dashboard.json
βββ dashboard.welcome
βββ dashboard.stats.title
βββ dashboard.menu.itemsExport Structure
When exported, files are organized by language code:
translations-file-based.zip
βββ en/
β βββ common.json
β βββ auth.json
β βββ dashboard.json
βββ es/
β βββ common.json
β βββ auth.json
β βββ dashboard.json
βββ fr/
βββ common.json
βββ auth.json
βββ dashboard.jsonLanguage-Based Organization Structure
In language-based mode, all translations are stored in a single file per language.
File Structure Within MovaBase
MovaBase displays all keys together, but knows which file they belong to:
Project Name
βββ en (default)
β βββ welcome_message
β βββ login_title
β βββ auth.login.title
β βββ auth.login.button
β βββ dashboard.welcome
βββ es
β βββ welcome_message
β βββ login_title
β βββ auth.login.title
β βββ auth.login.button
β βββ dashboard.welcome
βββ fr
βββ welcome_message
βββ login_title
βββ auth.login.title
βββ auth.login.button
βββ dashboard.welcomeExport Structure
When exported, you get a single file per language:
translations-language-based.zip
βββ en.json
βββ es.json
βββ fr.jsonEach JSON file contains all translations for that language.
Key Naming Conventions
Effective key naming makes your translations easier to find and maintain.
Best Practices
| Convention | Example | Benefit |
|---|---|---|
| Use dot notation for nesting | auth.login.title | Logical grouping |
| Be descriptive | user_profile.save_button | Self-documenting |
| Keep consistent case | Use all lowercase or camelCase | Predictability |
| Avoid spaces | welcome_message not welcome message | Technical compatibility |
| Use meaningful prefixes | error., success., nav. | Easy filtering |
Key Organization Examples
Authentication Keys
auth.login.title
auth.login.email_label
auth.login.password_label
auth.login.submit_button
auth.login.forgot_password_link
auth.signup.title
auth.signup.email_label
auth.signup.password_labelNavigation Keys
nav.home
nav.products
nav.about
nav.contact
nav.settings
nav.logoutError Messages
error.network_failed
error.invalid_credentials
error.session_expired
error.server_error
error.unexpected_errorFile Organization Best Practices
A well-organized file structure scales better as your project grows. Invest time in planning your file structure early.
Organizing by Feature
Group translations by application feature:
auth.json
checkout.json
dashboard.json
profile.json
search.jsonOrganizing by Component
Group translations by UI component:
button.json
modal.json
form.json
header.json
footer.jsonOrganizing by Page
Group translations by application page:
home.json
about.json
contact.json
login.json
dashboard.jsonAvoid creating too many small files. This can make management tedious. Balance between granular organization and file count.
File Size Considerations
| File Size | Recommendation |
|---|---|
| < 50 keys | Consider merging with related files |
| 50-200 keys | Good size, easy to manage |
| 200-500 keys | Larger but manageable |
| > 500 keys | Consider splitting into smaller files |
NEEDS_MEDIA
Summary
Understanding these core concepts provides the foundation for effective translation management:
- Organizations group projects with shared billing and team management
- Projects contain translations for specific applications or products
- Languages represent target languages with their own properties
- Translations are key-value pairs that map to your application's text
- Download Modes determine export structure (file-based or language-based)
- Files organize translations into manageable groups
Choose your organizational structure wisely at the start. While you can restructure later, it requires more effort than getting it right initially.
Part 2 of 14 β’ Core Concepts Complete
Next: Language Management