In this part we will go over some of the concepts defined by Accent:
The string is the base of the translation process. It is defined as a key-value pair.
Operation to sync a local file with a file in Accent
A sync consists of uploading a list of strings inside a document to update references inside Accent. The operation will delete string in Accent not present in the uploaded list. It will add strings not present in Accent but present in the file. This is the easy part. It is named "sync" become the role of the operation is to synchronize the master language with the uploaded file.
Accent’s killer feature is its ability to “autocorrect” strings that were modified in Accent but not updated by the developer.
Now let’s talk about conflicts. A conflict means: When an uploaded string is not the same as the string in Accent. But there are 3 types of conflict.
Conflict on corrected
When the string in Accent is different than the last uploaded string.
Conflict on proposed
When the string in Accent is the same as the last uploaded string.
In other words, “conflict on corrected” means that the string was modified by a user in Accent and “conflict on proposed” means that the conflict comes from a sync.
Conflict on slave
When either conflict happens, the “translated” languages will have the matching string marked as conflicted.
Operation to update strings from a local file, to a file in Accent
Adding translations consists of uploading a list of strings inside a document to update references inside Accent. Sounds familiar? This is because adding translations does exactly the same thing as a sync but it doesn’t remove nor add strings.
The typical use case to add translations is to update locally translated languages to Accent to help the translator.
Adding translations will generate the “conflicts” like a sync but will mark them as “merge”: “merge on corrected”, “merge on proposed”, etc. The operation takes a “type” parameter to modify the default conflict engine.
The smart type is the default one. It will autocorrect (not overwrite) strings that were modified by a translator and not updated by the developer.
The passive type will ignore never modify a string that was touched (updated/markes as reviewed) in Accent.
The force type will not try to autocorrect, it will take the strings in the uploaded file and put the values in the references in Accent.
Operation to render a list of strings in a given format from Accent
The export can also order keys alphabetically, original or last updated first.
Group of strings
The document grouping is often used to group strings of the same domain: admin, public. Or more specific domain: registration, payment. The grouping can be used to filter strings in the UI.
The name of a document, without the extension or the language. If you upload
app/locales/fr/admin.json, the document path will be
Operation that transform a string
Everytime a string is changed, marked as reviewed, marked as conflicted, deleted, etc. a new activity will be generated. User actions can generate activities and other activities can generate activities (sync, add translations, etc).
Each activity can be inspected in details and rollbacked. This makes Accent a robust and failure-proof system. Ths also makes it easy to see who or what changed a string.