# Introduction

BabelShark is an online localisation (translation) utility for web sites and HTML-based apps (Cordova, Ionic, Meteor, React).

<figure><img src="https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2FceYJtkDZ1SfY20Q3W5Am%2Fimage.png?alt=media&amp;token=e14b3198-e5f2-4c83-8134-f751ab6ffb06" alt=""><figcaption></figcaption></figure>

### Pecular features

BabelShark uses an automatic translation services under the hood. However it is dramatically different from Google Translate:

* you specify strings to translate,
* you specify the list of languages wish to you support,
* finally, the automatic translation is being done only once (and saved in database),&#x20;
* You can correct any of translated strings:

  <figure><img src="https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2FHujZgGMWTp1g0JsZFzvH%2Fimage.png?alt=media&amp;token=3a78e5eb-8383-413d-8b33-ea63b56c34ac" alt=""><figcaption></figcaption></figure>

Think of BabelShark as of Google Translate with a controllable input and output.

### Team work and world language

You can delegate the proofreading (fixing the specific strings) to a specific person(s) in your team.

<figure><img src="https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2FwqueYSR0xJtFiohM5T2p%2Fimage.png?alt=media&amp;token=cfc3bc55-445c-4cb1-9d16-6dbc57df5480" alt=""><figcaption></figcaption></figure>

You might miss some languages in your team indeed (Chinese? Mid-west? something more exotic?). BabelShark has native speakers for hire!


# BabelShark basics

The main terms and definitions of BabelShark are listed below.

### Global

<details>

<summary>Project</summary>

A website or HTML app which is being localized. Localized strings are unique to each project.

Each project can operate in [a specific mode](/babelshark-basics/project-modes) which determines the way BabelShark translates it.

</details>

<details>

<summary>String (or "source string")</summary>

A word, sentence, paragraph or text block which is being localized.

This could be a:

* button text (e.g. "Proceed"),
* a short message ("Are you sure to delete item?")
* long message ("Messaging rules: 1. respect other users...")
* HTML block (`<div class="card-header"><h1>Profile info</h1></div>`)

Use [BabelShark markup](/dev/html-markup) to mark the source strings in your HTML.

</details>

<details>

<summary>Translation</summary>

A translation of the specific string to one of the project languages.

</details>

### More specific

<details>

<summary>Scope</summary>

Scope is an area which contains one or more source strings, making them unique from other scopes.

For example, the word "General" may mean the "settings menu entry" or "military rank".

You mark scopes yourself. [Read more](/setup/scopes) about scopes.

</details>


# Getting started

1. Create a project with BabelShark
2. Edit your HTML code and add `__` class to the strings to translate
3. Add BabelShark code snippet to `<head>`
4. Add language selection drop-down


# Project modes

## Project modes

Project can work in different modes. The mode determines the following behavior aspects:

* project accepts and saves new source strings,
* projects translate strings,
* web page/app screen is allowed to display the translation,
* translation approval is required to display the translation.

### Collect, no translate

The project is in the stage of gathering all the content that needs to be translated, but no actual translation is being done at this stage.

### Translate, no display

In this mode mode, the content is being collected and translated, but the translated version is not being displayed to the public.

### Display approved only

New translations are being done but only approved translations are displayed to your users.

### Translate all live

All content is being translated and immediately displayed to the users as soon as it is translated.

### Display approved, do not translate

In this mode, no new translations are being made, and only the approved translations are being displayed to the users.


# Project languages

"Project languages" is the list of languages you translate (localize) your project to.

Project owner and project manager are able to add and remove languages.

### Language visibility

By default all languages are visible: selectable in a language selector for the project users:

<figure><img src="https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2FjWKBurezdlR02DHKtIhL%2Fimage.png?alt=media&amp;token=22393904-827a-45bf-b2a5-af95d3911ab3" alt="" width="375"><figcaption></figcaption></figure>

You may want to temporary hide some languages from your users (for example, if your proofreader is still working on translations). This can be done in project settings:

<figure><img src="https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2FhjF4MaHoNjZIcurrAeS2%2Fimage.png?alt=media&amp;token=e4754c4c-46ae-45f6-953c-b38bf27db77d" alt="" width="563"><figcaption></figcaption></figure>

Use the language visibility switch to adjust the languages you need.

### Notes

1. If you remove an existing language from a project, its translations are **not** removed. They still exist and appear back if you re-add the language.


# Code snippets

The main code snippet to enable BabelShark translation is available at your project page:

<figure><img src="https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2FACgyouQIVDbIOUMvmggL%2Fimage.png?alt=media&amp;token=66bbcb10-8a09-4019-b80e-f45c11d39b9d" alt=""><figcaption></figcaption></figure>

Adding this code snippet initiates the loading of BabelShark code, its API and project settings. If current user has a translation language selected, the project will seamlessly switch to that language.

## Language drop-down

If you want to display a built-in language selection drop-down, add `.bs-activator` element to the required position:

```html
<span class="bs-activator" data-drop="auto"></span>
```

This will render a language selector:

<figure><img src="https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2FsqAoJwc6dpzZ7Xj4J6MI%2Fimage.png?alt=media&amp;token=f148f49c-098e-46b6-8bd0-dd949bae9346" alt=""><figcaption></figcaption></figure>

[Read more](/dev/api-reference/language-drop-down-specs) about language drop-down configuration and parameters.


# Source string markup

You need to explicitly markup your source strings (strings to translate) in your HTML. This is being done by using `__` CSS class.

BabelShark picks up these string from HTML and replaces them with a translation to the user's language.

### Adding \_\_ class

To mark your string as one to be translated, just add CSS class:

<figure><img src="https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2FXhBBhmDm9su21FpvuiIj%2FScreenshot%202024-02-20%20at%2000.16.54.png?alt=media&amp;token=1e7def61-a06d-4bba-9493-2a6f58dc3d09" alt="" width="375"><figcaption></figcaption></figure>

### Dynamic HTML

The most of modern HTML frameworks (React, Vue, Angular) dynamically add, remove and replace text in HTML DOM elements.

BabelShark tracks changes in page contents and translates new strings.

###


# Setting visitor's language

By default your project appears in default (source) language to the user. There are two ways to switch to the desired language.

## 1. BabelShark language drop-down

<figure><img src="https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2FsqAoJwc6dpzZ7Xj4J6MI%2Fimage.png?alt=media&amp;token=f148f49c-098e-46b6-8bd0-dd949bae9346" alt=""><figcaption><p>Language drop-down in BabelShark account</p></figcaption></figure>

Read more here about language drop-down code snippet.

## 2. Change via JavaScript API

Call *babelShark.setLanguage(languageCode)* to switch current user to the desired language. The language setting will be stored within the user's browser.


# Project associated texts

Localizing a project is not just translating the website or app strings. There is a lot of other text artifacts that should be localized:

* Short and long descriptions for app stores
* Product "what's new" and change logs
* Various "about" texts you use over and over
* Social greetings
* E-mail introductions&#x20;
* and more

To keep all these texts altogether, translate and proofread them, use the "Associated texts" section of your project.

## Adding an associated text

You can add an associated text at any time. All you need is to specify a text.

New text immediately gets translated automatically and goes to the "Translations" section for proofreading. You may use the translation immediately, or wait for your team to fix the particular translations.

## Editing an associated text

You may want to edit or update an associated text. When this happens, all team proofreaders receive a "re-check" notification (like if you click "request re-check" for a translation).

BabelShark keeps the history of your associated text editions so you may check or pick an older version at any time.

## Recommendations

<table data-view="cards"><thead><tr><th></th><th></th><th></th></tr></thead><tbody><tr><td><strong>Texts for app stores</strong></td><td>Create a single associated text and edit it whenever you need to update it.</td><td><em>Proofreaders will get a notification that text is updated.</em></td></tr><tr><td>"<strong>What's new"</strong></td><td>Create a new associated text for each of your updates. Older updates may be deleted or stored.</td><td><em>Proofreaders will get a notification about a new text to check.</em></td></tr><tr><td><strong>Changelogs</strong></td><td>Create a new small associated text for each record in your changelog.</td><td><em>Proofreaders will read each new record separately. This saves the time and</em> <a href="/manager/community-proofreaders"><em>wallet</em></a><em>.</em></td></tr></tbody></table>

### Team availability

* The project owner and managers:
  * able to read, add and update associated
  * able to edit associated text translations
* Proofreaders:
  * able to view and edit associated text translations for their languages.


# Setup

1. Create project in BabelShark
2. [Embed BabelShark JS script](/dev/embed-babelshark-script) into your pages
3. Use [HTML markup](/dev/html-markup) to specify source strings to translate
4. Review translations


# Recommended approach

Localizing a new project could be tricky: on one hand, you want to translate all the strings you have. On the other hand, you don't want to show raw (unverified) translations to the users.

The following approach is recommended:

## Stage 1. Collect strings and translations

1. Create a project with BabelShark
2. Set the [project mode](/babelshark-basics/project-modes#project-modes) to "Translate, do not display"
3. Add the code snippet to your HTML pages/screens.
4. Start [marking up](/dev/html-markup) your project strings with `__` CSS class.

At this stage, the source strings will start flowing to BabelShark, and will be translated to your users' languages. However, because of "Translate, do not display" mode, nothing will change for your users yet.

## Stage 2. Check translations

1. Proofread your localized strings.
2. This could take a while for a large project, so check for new translations regularly.

At this stage you'll get all localized strings checked and approved.

## Stage 3. Show localized strings to users

1. Change project mode to "Display approved only" or "Translate all live"
2. Let users change language on your web site/app

At this stage your users will see localized and verified pages and screens.

Do not forget to regularly visit the project at BabelShark to check, proofread and approve new strings coming from your website or app.


# Coexistence with other translators

Letting two (or more) translation services is definitely a wrong idea. BabelShark tries to determine if you are using a service like Google Translator, and disables translations.

To avoid translators messing your content, disable third-party translators:

### Google Translator

Add meta tag to your website `<head>` section:

```html
<meta name="google" content="notranslate"> 
```

Alternatively, add `notranslate` class to `<body>` tag.


# Scopes

Scope is an area which contains one or more source strings, making them unique from other scopes.

### Example

Imagine we have a word *"General"*. It may mean:

* the "the entry of Settings menu"&#x20;
* or "player's military rank".

It may (and will) be localised differently in some languages.

### Scope usage

To distinguish different localizations of the same word you can specify a scope:

```html
<ul class="menu" data-bs-scope="Settings menu">
  <li class="__">General</li>
</ul>
```

and

```html
<div class="player-info" data-bs-scope="Player info">
  Your rank: <span class="__">General</span>
</ul>
```

This will create two different scopes for "General" string, and allow it to be localised properly.

You and your team members (including proofreaders) will clearly see the scope in source strings list.

### Scope size

You can set scope directly on a source string:

```html
<span data-bs-scope="Player info">General</span>
```

or some container element:

```html
<div class="page-section" data-bs-scope="Player info">
```

or even on a whole page:

```html
<body data-bs-scope="Player info">
```

### Nesting and default scope

Scopes do not stack. Each nested scope cancels the outer scope and creates its own scope.

You can reset any item to default ("*none"*) scope by specifying an empty attribute. You may need it for strings which meaning is generic:&#x20;

```html
<div class="new-user-dialog" data-bs-scope="New user">
  ...
  <button class="__" data-bs-scope="">Cancel</button>
</div>
```

### Recommendation

It is not recommended to create an own scope for each and every page. Average project has much more generic terms and strings.

But if you face a problem with an ambiguous localisation, you can add a scope at any time.


# Performance

* BabelShark relies on hash calculation. To archive the best performance possible we use high-performance WASM code, such as <https://www.npmjs.com/package/hash-wasm>


# FAQ

## Language selection widget

<details>

<summary>How to adjust a pop-up widget position or style?</summary>

Language widget can be adjusted using `data-` attributes. [Read more here](/dev/api-reference/language-drop-down-specs).

</details>


# Introduction

BabelShark has been developed to be handy for projects managed by a team or by a single person (who acts as an owner and developer).

## Single person usage

Access all features from within BabelShark account:

* create a project in BabelShark account, set the languages you want to translate to,
* get a [HTML snippet code](/dev/embed-babelshark-script) and put on your website,
* check (proofread) [translations](/proofreader/how-to-proofread) if necessary.

## Team usage

Add people to your team in BabelShark. There are sevaral roles available:

* **owner** - the person who has created the project. Has access to all features, including [team assignments](/owner/working-in-a-team) and payment plan control,
* **manager(s)** [able to edit project details](/manager/introduction), add/remove proofreaders to the team, control team performance,
* **developer(s)** able to get [a HTML code snippet](/dev/embed-babelshark-script) for the project,
* **proofreader(s)** has [access to translations](/proofreader/how-to-proofread) to a specific language (or a subset of languages) to proofread and fix translations.

{% hint style="info" %}
The more granular access control is available on a Pro payment plan.
{% endhint %}


# Real-time language statistics

BabelShark's **Visitor Language Statistics** feature helps website owners understand which languages their visitors use. By tracking browser language settings, this feature provides clear insights into which languages are most relevant for localization. Instead of making assumptions, you can rely on real visitor data to optimize your site's language offerings.

## Language Statistics Page

**Language Statistics** section in your BabelShark account includes detailed visitor language insights.

<figure><img src="https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2FwMTkH51Ab3RUs7gggPtb%2Fimage.png?alt=media&amp;token=d737cdce-8d07-49d9-bf55-c247513dc481" alt=""><figcaption></figcaption></figure>

This page displays real-time statistics, allowing you to see which languages are most commonly used by your audience. This enables continuous monitoring and refinement of your localization strategy based on actual user behavior.

### Getting Started

To start gathering visitor language statistics:

1. Sign up for a BabelShark account (if you haven’t already).
2. [Install the lightweight code](/dev/embed-babelshark-script) on your website.
3. Visit your BabelShark account to view language insights and make informed localization decisions.

**Leverage visitor data to enhance your website's accessibility and engagement with BabelShark!**


# Working in a team

Team roles available:

* Project owner
* Project manager(s)
* Proofreader(s)


# Embed BabelShark script

BabelShark requires a "code snippet", a single .js script to be embedded into your page:

<figure><img src="https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2FDVzSwTTxhCofzfh2G2Zq%2Fimage.png?alt=media&amp;token=0593e7b7-7a06-4975-b2c7-ead7196759ff" alt=""><figcaption><p>Add this code to your HTML, to &#x3C;head> preferably</p></figcaption></figure>

Read more about configuration object at [API Reference page](/dev/api-reference/babelshark-config).

### Language dropdown

You probably also want a language-selection dropdown somewhere on the page (you can use API to switch languages but built-in dropdown is a good start):

<figure><img src="https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2F2n728ahfkYnzZg2x4JrS%2Fimage.png?alt=media&amp;token=bc83ef79-56fa-4316-bfa6-fe3cbedc94d6" alt=""><figcaption></figcaption></figure>

This snippet should be added exactly where you want a language dropdown to reside. BabelShark.js will turn this snippet to a language flag button and a dropdown:

<figure><img src="https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2F2dTmzJE0tpZqaRHNr8Rx%2Fimage.png?alt=media&amp;token=cc435e62-4ef3-4935-b55f-d9b40c7aec20" alt="" width="375"><figcaption></figcaption></figure>

Read about language widget configuration in [API Reference](/dev/api-reference/language-drop-down-specs).


# API Reference

BabelShark API reference includes:

* `babelShark` initialization reference
* `babelShark` JavaScript object runtime API
* [language drop-down reference](/dev/api-reference/language-drop-down-specs)


# BabelShark config

`babelSharkConfig` global variable is being used by BabelShark embed script to configure the behavior of the translation engine.

This object has to be set before loading babelshark.js script. The minimal configuration is the following:

```javascript
<script>
window.babelSharkConfig = {
	projectId: 1000,
	accessCode: "..."
};
</script>

...

<script defer src="https://cdn.babelshark.net/static/babelshark-embed/babelshark.js"></script>
```

### Configuration options

The complete TypeScript interface for configuration object is:

```typescript
interface BabelSharkConfig {
	// Project ID
	projectId: number;
	// _Public_ access code for the embedded script
	accessCode: string;

	// Optional flag to detect language automatically using navigator.language
	detectLanguage?: boolean;
	// Optional flag to pick language from query string parameter
	detectFromQueryString?: string;	

	// Callback to be called when BabelShark is initialized
	onLoaded?: (instance: BabelShark) => void;
	
	// The instance of BabelShark currently running (set on script load)
	instance?: BabelShark;
}
```


# Language drop-down specs

To embed an automatic language drop-down to your page use the following HTML element:

```html
<span 
    class="bs-activator" 
    [data-drop="auto|right|left|right-top|left-top"]
    [data-theme="light|dark"]
    [data-css="https://...."]
    [data-dialog-style="...."]
    ></span>
```

The minimal code snippet is `<span class="bs-activator"></span>`.

### Configuration attributes

<details>

<summary>class</summary>

"bs-activator"

To adjust the language selector button, use this class in your css.

</details>

<details>

<summary>data-drop</summary>

The direction to open the language drop-down:

* auto - automatically select the direction
* right - drop down to the right and below the language selector
* left - drop down to the left and below
* right-top - open to the right and over the language selector
* left-top - open to the left and over the language selector

</details>

<details>

<summary>data-theme</summary>

Overall coloring theme of the widget and its activator:

* light (default) - light background, dark text
* dark - dark background, light text

</details>

<details>

<summary>data-css</summary>

Embed the speficic CSS file in to the drop-down iframe.

</details>

<details>

<summary>data-dialog-style</summary>

CSS inline styles for widget dialog (iframe). Useful to set `z-index` and similar properties.

Note: `data-drop` attribute controls widget position.

</details>


# HTML markup

Specify source strings and control translation with BabelShark markup.

## Class markup

* `__`\
  Identifies element and its child tree to be translated
* `__bs-ignore`\
  Exclude element and its subtree from translation
* `__var`\
  Mark string part as non-translatable variable. [Read more about variables](/dev/html-markup/variables).


# Variables

It is often desirable to translate string with a variable value inside, like:

```html
<p>Today is July 8th.</p>
```

or

```html
<p>Deleting 80 of 200</p>
```

Obviously, you can not mark the whole HTML element (\<p>) with `__` class because it will generate infinite amount of source strings (for every date or every number used).

## Use variables

Mark variable value of the string with `__var` class:

```html
<p>
    Deleting <span class="__var">80</span> of
    <span class="__var">200</span>
</p>
```

This will exclude variable values from the source string. They will be replaced by `{{VAR#}}` value in a source string:

<figure><img src="https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2F2luHshbQHT6H7uEjzFL0%2Fimage.png?alt=media&amp;token=506e3676-1afa-4409-af68-400bf4204ad2" alt=""><figcaption></figcaption></figure>


# Issues

Something wrong may appear in the page markup. BabelShark will try to indicate the problems.

### Nested \_\_ class

One of the most often issues is a presence of nested elements with `__`class:

```html
<div class="__ parent">
    Some content
    <a href="..." class="__">is here</a>
</div>
```

You may see that inner `__` is located within outer `__` element. This will cause issues while localizing strings.

BabelShark indicates the problem in translations list:

<figure><img src="https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2F91OXIkrpqEajeXtiSROw%2Fimage.png?alt=media&amp;token=a1c82b9f-76ff-4475-a6e2-f6003cadc86e" alt=""><figcaption></figcaption></figure>

To fix this issue, edit your HTML and avoid nested elements with `__` class.


# Integrations

BabelShark provides built-in integrations with the following frameworks and CMS:

* Tilda ([tilda.cc](https://tilda.cc)) - view Tilda integration docs
* Wix
* Webflow

### Scaffold frameworks

For most of scaffold frameworks (React, MeteorJS, Angular), [HTML markup](/dev/html-markup) is a convenient way to enable localization with BabelShark.


# Tilda Publishing

BabelShark provides out-of-box localization of Tilda websites.


# Tilda website setup

Integrating BabelShark with Tilda Publishing website is very straightforward and easy:

1. Open your BabelShark project dashboard
2. Scroll for "Code snippet":

   <figure><img src="https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2FGl6eb6p5BmK7u74XXokx%2Fimage.png?alt=media&amp;token=59f185cd-5921-4284-971e-9b72b147c3ba" alt=""><figcaption></figcaption></figure>
3. Copy code and paste it to "Site settings" of your Tilda website:

<figure><img src="https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2FKbEkjduhio4P7J04PTv2%2Fimage.png?alt=media&amp;token=8171b7fa-ad54-4e3c-be2c-72c5a49a0f09" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2FRQAsKIqVYJXQ94emLcP7%2Fimage.png?alt=media&amp;token=eef6912b-3f2c-464c-bfff-be96ab2caf28" alt=""><figcaption></figcaption></figure>


# Elements to localize

By default, BabelShark localizes all Tilda blocks available on the page.

This can be undesirable so there are two options to control blocks localization:

### Exclude specific blocks

Add `uc-bshark-ignore` CSS class to the block: Block settings -> CSS Class Name

### Localize specific blocks only

1. First, disable localization for whole page first: open page settings -> Head HTML code -> Add\
   `<meta name="babelshark" content="notranslate">`
2. Then add `uc-bshark-translate`CSS class for blocks to translate.


# Introduction

Project managers have almost as much power as the project owner. The main duties of a project manager are:

* Manage localisation team (add/remove proofreaders)
* Manage project localisation languages
* Check project progress
* Clarify project localisation details (source string meanins, locations)


# Community proofreaders

Your team might not have native speakers for all languages. BabelShark has a community of proofreaders who can join your project and proofread your translated strings.

To order community proofreading, go to the "Team" section of your project and select the desired languages:

<figure><img src="https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2FHJrpsihQcnagoq1K3PXK%2Fimage.png?alt=media&amp;token=13aabeef-37f2-42ab-ab33-62b570d25cd2" alt=""><figcaption></figcaption></figure>

## Pricing

The proofreading price is 150 translation points per 1,000 source characters. This equals USD 1.5.

"Source characters" means you pay based on the length of your original strings. Translations to different languages may be shorter or longer, but the price remains the same:

"click here" - 10 characters\
Proofreading of any language, like "klicken Sie hier" (German - 16 characters), still gets paid for 10 characters.

Other details:

* you pay **once** for each source string proofreading.\
  Even if proofreader edits a translation, you pay for the first proofreading only.
* you get a particular proofreader assigned to your project.\
  Staying in context is important for localization.

## Wallet balance

To pay for proofreading, fund your BabelShark account wallet. The wallet holds "translation points" that you can spend on proofreading your source strings.

##


# Introduction

The main tasks for a proofreader team member:

* verify translations to a specific language
* confirm suitable automatic translations
* manually fix misleading translations
* periodically check the project for new translations

## Getting invited

Once assigned to the Babelshark Project, you will be invited to team as **Proofreader** with your assigned language. However, before you start translating, you're required to setup your account: &#x20;

1. Login to your [Babelshark account](https://babelshark.net/signin)
2. Look for invitation under **Notifications**
3. Accept the invitation

Once assigned in the Team, your **Dashboard** should look as following:&#x20;

<figure><img src="https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2FvJQfzDXpX8TmDueecPko%2Fimage.png?alt=media&amp;token=77f2ea00-8302-4540-9670-0ff5ae577c9d" alt=""><figcaption></figcaption></figure>

To get acquainted with more mechanics, read more on [How to translate](/proofreader/how-to-proofread)


# How to proofread

Summarized explanation of guidelines working as a Proofreader

After finalizing the steps described in [Introduction](/proofreader/introduction) you are ready to start proofreading the project to your assigned language.

Navigate over to **Translations** page in the left-side menu&#x20;

<figure><img src="https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2F3m37kLuX4pj9JqyEmmJZ%2Fimage.png?alt=media&amp;token=41e3cab7-90b7-4a50-9124-dcfee2950df5" alt=""><figcaption></figcaption></figure>

You will end up on the page where all the **Translation strings** are located. Click **Translate now** to automatically translate the string. (Read about [Translation types](/proofreader/translation-types))

<figure><img src="https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2FpVvjKYKMB1PrcZzaL5rM%2Fimage.png?alt=media&amp;token=1bed7b0f-2daf-4a3b-8acb-0d0d269478cf" alt=""><figcaption></figcaption></figure>

#### If automatic translation is OK:

When clicking **Translate now** - Babelshark will automatically attempt translation. Proofreader should be able to determine if automated translation is okay.&#x20;

<figure><img src="https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2FHD625JXEihQzSbhqPZIM%2Fimage.png?alt=media&amp;token=57207658-e12a-4f14-8606-0fec86235ff6" alt=""><figcaption></figcaption></figure>

#### If automatic translation doesn't quite fit...

Babelshark's automatic translation does not guarantee 100% accuracy in translations. In case the translation seems off to you:&#x20;

1. Click on the translated text
2. Enter translation manually
3. Hit **Save**

<figure><img src="https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2FXdBOMbpSMoZAhXSwMHPR%2Fimage.png?alt=media&amp;token=fff71776-c2a1-4596-979b-e797dfc20535" alt=""><figcaption></figcaption></figure>

#### Some strings are unnecessary to translate

Sometimes, Babelshark pulls variable strings from projects which are unnecessary to translate. The translation won’t take effect as these type of strings constantly change. <br>

Example of variable strings:&#x20;

<figure><img src="https://lh7-us.googleusercontent.com/ssPfRV9r590M8IO09EHVr8hChD75Jpg5TV4tqs_T5Jy4M85XE7HC3xvV1qKkG9A4Xm3mNqUnq7OayxF_1AGPNp-_-EPb8M0plp8eGTN-ezhHVpXsFViy0qhfma4DBaVqUufGH1zlY1bRUCnTCJXGX04" alt=""><figcaption></figcaption></figure>

another example:&#x20;

<figure><img src="https://lh7-us.googleusercontent.com/oFqA-J6o2QOG5WMY9lijwtTHLDqifdWzZQbVr3T4ST5YW9FsyBnq1t4QSkl-SEFXLmmQNboE7luCI26_PFwkIsLpTJ_tGZ8eDXnwMdvy8aCpdEG-WsfSQ8q8HV6N_qemFVOJPgZdVBaVSIn_rzlau24" alt=""><figcaption></figcaption></figure>

#### Sometimes, strings to translate can confuse

As a Proofreader, you may come across with translation strings that are confusing, words and phrases that have different meanings in different contexts.&#x20;

Read more on [Checking translations ](/proofreader/checking-translations)to understand how to translate confusing strings effectively


# Checking translations

To ensure Proofreader's translations are accurate

As a Proofreader, you will have to check the translated strings thoroughly and in the context of the project.&#x20;

Overtime, various projects and products adapt their own terminology, which Proofreader may understand as words of different meaning.&#x20;

BabelShark has several functions to help Proofreaders **understand** what they're translating, into what context.&#x20;

### Context hints

On the bottom left-side of the string, there is a context hint that helps better understand the context of your translation.&#x20;

<figure><img src="https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2FW31ZGP3HXqmpLmRKsRSi%2Fimage.png?alt=media&amp;token=c87336de-ff95-4e00-bc4d-5853d5e1679f" alt=""><figcaption></figcaption></figure>

If there's no context hint:&#x20;

1. Copy the **String ID** (You can use this for searching strings as well)<br>

   <figure><img src="https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2FCVVZhtnwRxIZOUPaOjoD%2Fimage.png?alt=media&amp;token=7c1154a8-55ba-45a4-9b4e-73ba50193f35" alt=""><figcaption></figcaption></figure>
2. Paste it to your Project Manager (The person which invited you to project, or any relevant team member)
3. Wait for Project Manager to provide context on your string

### Drawer menus

![](https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2FDuBGAvxPg1dHvdZydnax%2Fimage.png?alt=media\&token=4c690e78-7c06-42ef-aa23-e7d6f0089eb1)

Every string includes a ![](https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2Fnu1C1F0IW8N5ACttzjFU%2Fimage.png?alt=media\&token=6630a167-7737-4e98-a7fe-7f8cc7e5332e)**Drawer arrow icon** on the right-side, once clicked, it provides more information on the string:&#x20;

* When it was added
* Last use of the string
* Original language
* URL of the page (Where it's located)
* Original string

Overtime, more helpful functions will be added for Proofreaders to better understand concept of every translation string.&#x20;

To finalize your knowledgebase of how to work with Babelshark as Proofreader, continue reading [Translation types](/proofreader/translation-types)


# Translation types

Understand the difference of translation string types

On Babelshark, every displayed string is a task to translate for Proofreader. There are several translation string types, that act as statuses:&#x20;

* N/A - When no translation has been provided to the string in the designated language

  <figure><img src="https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2FsACZrbz023YdFLl0w2WQ%2Fimage.png?alt=media&amp;token=d88e7073-86f7-4d4e-9a8f-2da23a5e091a" alt=""><figcaption></figcaption></figure>
* Automatic new - New automatic translation, unconfirmed by Proofreader<br>

  <figure><img src="https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2FA7x51Pf80ZVEIBPj0qmI%2Fimage.png?alt=media&amp;token=a4645206-ba8c-4f4d-ad67-b65648620a0d" alt=""><figcaption></figcaption></figure>
* Automatic confirmed - Confirmed automatic translation via ![](https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2FZyWHfg7PVcPJp3uOC2bK%2Fimage.png?alt=media\&token=c84bc0d7-95d6-470b-b49a-c8e24cdd0ca5) checkmark (Done by proofreaders)

  <figure><img src="https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2FEjJ4bjrY2dquarCbftXn%2Fimage.png?alt=media&amp;token=20691a3c-bf8a-4f6c-a44b-6282cd1c14d8" alt=""><figcaption></figcaption></figure>
* Manual - Manually translated strings by Proofreaders<br>

  <figure><img src="https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2FqUzKBmioPkizcHs5y6t4%2Fimage.png?alt=media&amp;token=134f14db-8fe8-4e5d-9f79-6d7feaf767f5" alt=""><figcaption></figcaption></figure>


# Request of re-checks

This document explains procedural work of Proofreaders with the function "Request re-check"

### Request Re-checks

The "Request re-checks" feature provides a mechanism for interacting with proofreaders to address concerns or uncertainties regarding translated content. This feature allows project managers or team members to flag specific translations for further review by proofreaders.

#### Purpose

Sometimes, a translation may not accurately convey the intended meaning or may not align with the project's requirements. In such cases, it's crucial to request a re-check to ensure the quality and correctness of the translated content.

#### Example Scenario

Suppose a translation for the term "Upgrade" is incorrectly rendered as "Improvement" in Russian, and this translation has been approved by the proofreader. To rectify this, a team member can initiate a re-check request, flagging the translation for further review. In the request, they can specify that "Upgrade" should be accurately translated as "Button, call to action," providing clarity to the proofreader.

### How to view strings with re-checks

After completing, or during the process of proofreading. Please constantly check if your Proofread material has been flagged for re-check, to do so:&#x20;

1. Visit your [Babelshark account](https://babelshark.net/home)
2. Click the project you're assigned on
3. Click **Translations**\
   ![](https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2FH3LFyMSJmkYwtERNFaWu%2Fimage.png?alt=media\&token=868b6a57-1062-4f55-a182-59eb6d357856)
4. Click **Other filters** in the top-right section\
   ![](https://1290550914-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUf86Tx3GrUXukSHhL9ht%2Fuploads%2FD1hfACoFExDrzPTSSAJ9%2Fimage.png?alt=media\&token=d97d901a-c0d0-4f70-8cc2-819144cdec48)
5. Enable **For re-check** option

### If Re-check was false-positive

Its anticipated that sometimes Requests of Re-checks may be false-positive and your Proofreaded content may be accurate. If this will be the case for you, please contact your **Project Manager,** inform them of the false-positive and [re-approve the translation](/proofreader/how-to-proofread).&#x20;


