Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
94 changes: 94 additions & 0 deletions docs/_docs/guides/000-user-roles-overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
---
layout: doc
title: "User Roles & Permissions"
date: 2025-02-04 10:00:00 -0800
categories: guides
permalink: /docs/guides/user-roles-overview/
---

{{ site.mojito_green }} uses roles to control what you can see and do. This guide explains each role and what applies to you.

## Roles at a glance

| Role | Who you are | What you can do |
|------|-------------|-----------------|
| **User** | Basic access | View repositories, workbench, branches, screenshots. Search and browse. No edits. |
| **Translator** | Translation team member | Everything User can do, plus edit translations in Workbench for your assigned locales. Export, import, share searches. |
| **Project Manager (PM)** | Coordinates translation work | Everything Translator can do, plus create/import/cancel project requests, manage screenshots, manage users. |
| **Admin** | System administrator | Everything PM can do, plus AI Translate, database monitoring, Box integration. |

---

## For Translators

**You can:**
- Search and browse text units in the [Workbench]({{ site.url }}/docs/guides/workbench/)
- Add and edit translations for locales assigned to you
- Export search results (CSV/JSON) for offline work or reporting
- Import translations from CSV or JSON files
- Share search links with colleagues
- View [project requests]({{ site.url }}/docs/guides/project-request/) (read-only)
- View [branches]({{ site.url }}/docs/guides/branching/) and branch statistics
- View screenshots (legacy page) and upload screenshots (new dropzone)

**You cannot:**
- Create or import project requests (PM or Admin only)
- Add or edit screenshots in the legacy screenshot dashboard (PM or Admin only)
- Access AI Translate (Admin only)
- Access database monitoring (Admin only)
- Manage users (PM or Admin only)
- Configure Box integration (Admin only)

If you can't edit a translation, or if you get an error when importing, your role or locale assignment may not include that permission. Ask your project manager or admin.

---

## For Project Managers

**You can do everything Translators can, plus:**
- Create translation and review [project requests]({{ site.url }}/docs/guides/project-request/)
- Import and re-import completed projects
- Cancel project requests
- Add and manage screenshots in the [legacy screenshot dashboard]({{ site.url }}/docs/guides/branching/#collecting-screenshots)
- Manage users (add, update roles) via **Settings → User Management**

**You cannot:**
- Access [AI Translate]({{ site.url }}/docs/guides/ai-translate/) (Admin only)
- Access [database monitoring]({{ site.url }}/docs/refs/monitoring/) (Admin only)
- Configure Box integration (Admin only)

---

## For Admins

**You can do everything Project Managers can, plus:**
- Use [AI Translate]({{ site.url }}/docs/guides/ai-translate/) to batch-translate repositories with AI
- Access [database latency monitoring]({{ site.url }}/docs/refs/monitoring/) (User menu → Monitoring)
- Configure [Box integration]({{ site.url }}/docs/guides/integrating-with-box/) for project requests (Settings → Box Integration)

The **AI Translate** link appears in the main navigation only for Admins. The **Monitoring** link appears in your user menu (top right) only for Admins.

---

## Feature quick reference

| Feature | User | Translator | PM | Admin |
|---------|------|------------|-----|-------|
| Workbench: search, view | ✓ | ✓ | ✓ | ✓ |
| Workbench: edit translations | — | ✓ (assigned locales) | ✓ | ✓ |
| Workbench: export, import, share | — | ✓ | ✓ | ✓ |
| Project requests: view | ✓ | ✓ | ✓ | ✓ |
| Project requests: create, import, cancel | — | — | ✓ | ✓ |
| Screenshots: view, upload (dropzone) | ✓ | ✓ | ✓ | ✓ |
| Screenshots: add/edit (legacy) | — | — | ✓ | ✓ |
| Branches: view | ✓ | ✓ | ✓ | ✓ |
| User management | — | — | ✓ | ✓ |
| AI Translate | — | — | — | ✓ |
| Monitoring | — | — | — | ✓ |
| Box integration (Settings) | — | — | — | ✓ |

---

## Locale assignment (Translators)

Translators can only edit translations for locales they are assigned to. If you have "translate all locales" permission, you can edit any locale. Otherwise, you'll only see edit controls for your assigned locales. Ask your admin or PM to update your locale assignment if you need access to more languages.
4 changes: 2 additions & 2 deletions docs/_docs/guides/001-getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ categories: guides
permalink: /docs/guides/getting-started/
---

For this guide, we use [Brew](http://brew.sh/) to install {{ site.mojito_green }} Webapp and CLI (`Java 1.8` is required).
For this guide, we use [Brew](http://brew.sh/) to install {{ site.mojito_green }} Webapp and CLI (`Java 21` is required).

### Setup and install

Expand Down Expand Up @@ -59,7 +59,7 @@ Check in the Workbench that the string was added and is untranslated. Try adding

Finally, this generates the updated localized files with the new translation.

![update localized filwa](./images/update-localized.gif)
![update localized files](./images/update-localized.gif)

### What's next?

Expand Down
8 changes: 4 additions & 4 deletions docs/_docs/guides/002-install.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,12 @@ Run the CLI with:

Default configuration location:

usr/local/etc/mojito/cli/application.properties
usr/local/etc/mojito/webapp/application.properties
/usr/local/etc/mojito/cli/application.properties
/usr/local/etc/mojito/webapp/application.properties

### Using Executable Jars

`Java 1.8` is required. Executable Jars can be downloaded in the [release section](https://github.com/box/mojito/releases/).
`Java 1.8` is required for this deprecated version. For current releases (master branch), see [Installation and Setup (Spring Boot 3)]({{ site.url }}/docs/guides/install-springboot3/) which requires `Java 21`. Executable Jars can be downloaded in the [release section](https://github.com/box/mojito/releases/).

Run the Webapp with:

Expand All @@ -54,7 +54,7 @@ One simple solution is to add an `application.properties` next to the `jar`. To
The server provides an entry point to fetch a `bash` script that downloads the latest CLI from the server and create a bash
wrapper to easily run the CLI.

It can be called with a one liner to make the bash command available rigth away in the current console. Replace
It can be called with a one liner to make the bash command available right away in the current console. Replace
`http://localhost:8080` with the actual URL if needed.

```bash
Expand Down
8 changes: 4 additions & 4 deletions docs/_docs/guides/002-install_springboot3.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ One simple solution is to add an `application.properties` next to the `jar`. To
The server provides an entry point to fetch a `bash` script that downloads the latest CLI from the server and create a bash
wrapper to easily run the CLI.

It can be called with a one liner to make the bash command available rigth away in the current console. Replace
It can be called with a one liner to make the bash command available right away in the current console. Replace
`http://localhost:8080` with the actual URL if needed.

```bash
Expand Down Expand Up @@ -74,7 +74,7 @@ server.forward-headers-strategy=native
## Setup

The default setup comes with `HSQL` in-memory database, database authentication and runs on port `8080`.
For production, `MySQL` should be setup. Different types of [authentication](/docs/guides/authentication-springboot2/) are
For production, `MySQL` should be setup. Different types of [authentication]({{ site.url }}/docs/guides/authentication-springboot3/) are
available too.

On the first Webapp startup, a user: `admin/ChangeMe` is created. This can be customized with configuration,
Expand Down Expand Up @@ -138,7 +138,7 @@ l10n.org.quartz.dataSource.myDS.maxConnections=12
l10n.org.quartz.dataSource.myDS.validationQuery=select 1
```

Note that `utf8mb4` setup has been tested on MySQL `5.7`. The server will probably needs some configuration too, for
Note that `utf8mb4` setup has been tested on MySQL `8`. The server will probably need some configuration too, for
example by editing `my.cnf` (if installed with brew: `/usr/local/etc/my.cnf`) with something like:

```properties
Expand All @@ -159,7 +159,7 @@ max_allowed_packet = 256M
If using a older version of MySQL, there is a [known issue](https://github.com/box/mojito/issues/120) when creating the schema. One workaround is to use `utf8`
instead `utf8mb4` but it has its limitation in term of character support.

We recommand to run both MySQL and the Java service using `UTC` timezone (or a least make sure they both the same timezone). To set
We recommend running both MySQL and the Java service using `UTC` timezone (or a least make sure they both the same timezone). To set
`UTC` as default use the following:

```properties
Expand Down
6 changes: 3 additions & 3 deletions docs/_docs/guides/004-string-extraction.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ This extracts the two strings from the source resource file and stores them in `
mojito push -r MyRepo -s /home/explicitPath/ProjectA


By default, {{ site.mojito_green }} searches source resource files from current working directory and its sub-directories. If you have your source resource file in a specific directory, you can use `-s` parameter to telll {{ site.mojito_green }} where to find source resource files. The above example extracts strings `strings.properties` from `ProjectA` directory using relative path and explicit path.
By default, {{ site.mojito_green }} searches source resource files from current working directory and its sub-directories. If you have your source resource file in a specific directory, you can use `-s` parameter to tell {{ site.mojito_green }} where to find source resource files. The above example extracts strings `strings.properties` from `ProjectA` directory using relative path and explicit path.


### Specific Source File Type
Expand All @@ -52,7 +52,7 @@ By default, {{ site.mojito_green }} searches source resource files from current

By default, {{ site.mojito_green }} processes all supported source resource files in the working directory. If your working directory has many types of source resource files and if you want to only process specific type, you can use `-ft` parameter. The above example only extracts strings from Java Properties file.

Available file types are `XLIFF`, `XCODE_XLIFF`, `MAC_STRING`, `MAC_STRINGSDICT`, `ANDROID_STRINGS`, `PROPERTIES`, `PROPERTIES_NOBASENAME`, `PROPERTIES_JAVA`, `RESW`, `RESX`, `PO`, `XTB`, `CSV`, `JS`, `JSON` and `TS`.
Available file types are `XLIFF`, `XCODE_XLIFF`, `MAC_STRING`, `MAC_STRINGSDICT`, `ANDROID_STRINGS`, `PROPERTIES`, `PROPERTIES_NOBASENAME`, `PROPERTIES_JAVA`, `RESW`, `RESX`, `PO`, `XTB`, `CSV`, `CSV_ADOBE_MAGENTO`, `JS`, `JSON`, `JSON_NOBASENAME`, `CHROME_EXT_JSON`, `FORMATJS_JSON_NOBASENAME`, `VSCODE_EXTENSION_JSON`, `I18NEXT_PARSER_JSON`, `TS`, `YAML`, and `HTML_ALPHA`.

The difference between `PROPERTIES` and `PROPERTIES_NOBASENAME` is that the source resource file of `PROPERTIES_NOBASENAME` has source locale name as the file name. For example, `strings.properties` vs. `en.properties`. `PROPERTIES_JAVA` is for the JAVA properties file in ISO_8859-1 encoding with escaped unicode characters.

Expand All @@ -64,7 +64,7 @@ The `XCODE_XLIFF` is for the xliff files generated by Xcode.
mojito push -r MyRepo -sl en-US -ft PROPERTIES_NOBASENAME


{{ site.mojito_green }} uses `en` as source locale by default. {{ site.mojito_green }} uses soure locale to identity source resource files from localized resource files. For example, if you have `en.properties` and `en-US.properties` in your working directory, `en.properties` is used as source resource file by default and `en-US.properties` is considered as localized resource file. The above example overrides the default source locale and use `en-US` as source locale using `-sl` parameter. You must use `-sl` parameter with `-ft` parameter.
{{ site.mojito_green }} uses `en` as source locale by default. {{ site.mojito_green }} uses source locale to identify source resource files from localized resource files. For example, if you have `en.properties` and `en-US.properties` in your working directory, `en.properties` is used as source resource file by default and `en-US.properties` is considered as localized resource file. The above example overrides the default source locale and use `en-US` as source locale using `-sl` parameter. You must use `-sl` parameter with `-ft` parameter.


### Specific Source File Regex
Expand Down
8 changes: 4 additions & 4 deletions docs/_docs/guides/005-generating-localized-files.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ categories: guides
permalink: /docs/guides/generating-localized-files/
---

In this guide, we use `mojito-cli` to generate localized resource files. Translations in the repository are used to generate localized resource files. This process is called `pull` in {{ site.mojito }} because translations are "pulled" from {{ site.mojito_green }} to generate localized resource files.
In this guide, we use `mojito-cli` to generate localized resource files. Translations in the repository are used to generate localized resource files. This process is called `pull` in {{ site.mojito_green }} because translations are "pulled" from {{ site.mojito_green }} to generate localized resource files.

### Pull

Expand Down Expand Up @@ -89,7 +89,7 @@ By default, {{ site.mojito_green }} searches source resource files from current

{{ site.mojito_green }} processes all supported source resource files in the working directory by default. If your working directory has many types of source resource files and if you want to only process specific type, you can use `-ft` parameter. The above example only generates localized files for Java Properties file.

Available file types are `XLIFF`, `XCODE_XLIFF`, `MAC_STRING`, `MAC_STRINGSDICT`, `ANDROID_STRINGS`, `PROPERTIES`, `PROPERTIES_NOBASENAME`, `PROPERTIES_JAVA`, `RESW`, `RESX`, `PO`, `XTB`, `CSV`, `JS`, `JSON` and `TS`.
Available file types are `XLIFF`, `XCODE_XLIFF`, `MAC_STRING`, `MAC_STRINGSDICT`, `ANDROID_STRINGS`, `PROPERTIES`, `PROPERTIES_NOBASENAME`, `PROPERTIES_JAVA`, `RESW`, `RESX`, `PO`, `XTB`, `CSV`, `CSV_ADOBE_MAGENTO`, `JS`, `JSON`, `JSON_NOBASENAME`, `CHROME_EXT_JSON`, `FORMATJS_JSON_NOBASENAME`, `VSCODE_EXTENSION_JSON`, `I18NEXT_PARSER_JSON`, `TS`, `YAML`, and `HTML_ALPHA`.

The difference between `PROPERTIES` and `PROPERTIES_NOBASENAME` is that the source resource file of `PROPERTIES_NOBASENAME` has source locale name as the file name. For example, `strings.properties` vs. `en.properties`. `PROPERTIES_JAVA` is for the JAVA properties file in ISO_8859-1 encoding with escaped unicode characters.

Expand All @@ -101,7 +101,7 @@ The `XCODE_XLIFF` is for the xliff files generated by Xcode.
mojito pull -r MyRepo -sl en-US -ft PROPERTIES_NOBASENAME


By default, {{ site.mojito_green }} uses `en` as source locale. {{ site.mojito_green }} uses soure locale to identity source resource files from localized resource files. For example, if you have `en.properties` and `en-US.properties` in your working directory, `en.properties` is used as source resource file by default and `en-US.properties` is considered as localized resource file. The above example overrides the default source locale and use `en-US` as source locale using `-sl` parameter. You must use `-sl` parameter with `-ft` parameter.
By default, {{ site.mojito_green }} uses `en` as source locale. {{ site.mojito_green }} uses source locale to identify source resource files from localized resource files. For example, if you have `en.properties` and `en-US.properties` in your working directory, `en.properties` is used as source resource file by default and `en-US.properties` is considered as localized resource file. The above example overrides the default source locale and use `en-US` as source locale using `-sl` parameter. You must use `-sl` parameter with `-ft` parameter.



Expand All @@ -115,4 +115,4 @@ Let's say you have the following source resource files in working directory.

You can use regular expression to filter source resource files to generate localized resource files from. The following example only generates localized resource for release-1 related files using `-sr` parameter for regular expression.

mojito push -r MyRepo -sr "^(release-1).*$"
mojito pull -r MyRepo -sr "^(release-1).*$"
Loading
Loading