The newest version of the Glossary APIs is the /v3 endpoints, which introduce enhanced functionality:
- Support for Multilingual Glossaries: The v3 endpoints allow for the creation of glossaries with multiple language pairs, enhancing flexibility and usability.
- Editing Capabilities: Users can now edit existing glossaries.
To support these new v3 APIs, we have created new methods to interact with these new multilingual glossaries. Users are
encouraged to transition to the new to take full advantage of these new features. The v2 methods for monolingual
glossaries (e.g., createGlossary(), getGlossary(), etc.) remain available but users are encouraged to update to
use the new functions.
| Monolingual glossary methods | Multilingual glossary methods | Changes Summary |
|---|---|---|
createGlossary() |
createMultilingualGlossary() |
Accepts an array of MultilingualGlossaryDictionaryEntries for multi-lingual support and now returns a MultilingualGlossaryInfo object. |
createGlossaryFromCsv() |
createMultilingualGlossaryFromCsv() |
Similar functionality, but now returns a MultilingualGlossaryInfo object |
getGlossary() |
getMultilingualGlossary() |
Similar functionality, but now returns MultilingualGlossaryInfo. Also can accept a MultilingualGlossaryInfo object as the glossary parameter instead of a GlossaryInfo object. |
listGlossaries() |
listMultilingualGlossaries() |
Similar functionality, but now returns an array of MultilingualGlossaryInfo objects. |
getGlossaryEntries() |
getMultilingualGlossaryEntries() |
Requires specifying source and target languages. Also returns a MultilingualGlossaryDictionaryEntries[] as the response. |
deleteGlossary() |
deleteMultilingualGlossary() |
Similar functionality, but now can accept a MultilingualGlossaryInfo object instead of a GlossaryInfo object when specifying the glossary. |
V2 glossaries are monolingual and the previous glossary objects could only have entries for one language pair (
SourceLanguageCode and TargetLanguageCode). Now we introduce the concept of "glossary dictionaries", where a
glossary dictionary specifies its own SourceLang, TargetLang, and has its own entries.
-
Glossary Information:
- v2:
GlossaryInfosupports only mono-lingual glossaries, containing fields such asSourceLang,TargetLang, andEntryCount. - v3:
MultilingualGlossaryInfosupports multi-lingual glossaries and includes an array ofMultilingualGlossaryDictionaryInfo, which provides details about each glossary dictionary, each with its ownSourceLang,TargetLang, andEntryCount.
- v2:
-
Glossary Entries:
- v3: Introduces
MultilingualGlossaryDictionaryEntries, which encapsulates a glossary dictionary with source and target languages along with its entries.
- v3: Introduces
// monolingual glossary example
$entries = GlossaryEntries::fromEntries(['artist' => 'Maler', 'prize' => 'Gewinn']);
$myGlossary = $deeplClient->createGlossary('My glossary', 'en', 'de', $entries);
// multilingual glossary example
$entries = GlossaryEntries::fromEntries(['artist' => 'Maler', 'prize' => 'Gewinn']);
$myGlossaryDict = new MultilingualGlossaryDictionaryEntries('en', 'de', $entries);
$myGlossary = $deeplClient->createMultilingualGlossary('My glossary', [$myGlossaryDict]);// monolingual glossary example
$glossaryId = '559192ed-8e23-...';
$myGlossary = $deeplClient->getGlossary($glossaryId); // GlossaryInfo object
// multilingual glossary example
$glossaryId = '559192ed-8e23-...';
$myGlossary = $deeplClient->getMultilingualGlossary($glossaryId); // MultilingualGlossaryInfo object// monolingual glossary example
$glossaryId = '559192ed-8e23-...';
$entries = $deeplClient->getGlossaryEntries($myGlossary);
print_r($entries->getEntries()); // Array ( [artist] => Maler, [prize] => Gewinn)
// multilingual glossary example
$glossaryId = '559192ed-8e23-...';
$glossaryDicts = $deeplClient->getMultilingualGlossaryEntries($myGlossary, "en", "de");
print_r($glossaryDicts[0]->getEntries()); // Array ( [artist] => Maler, [prize] => Gewinn)// monolingual glossary example
$glossaries = $deeplClient->listGlossaries();
foreach ($glossaries as $glossary) {
if ($glossary->name === 'Old glossary') {
$deeplClient->deleteGlossary($glossary);
}
}
// multilingual glossary example
$glossaries = $deeplClient->listMultilingualGlossaries();
foreach ($glossaries as $glossary) {
if ($glossary->name === 'Old glossary') {
$deeplClient->deleteMultilingualGlossary($glossary);
}
}In addition to introducing multilingual glossaries, we introduce several new methods that enhance the functionality for managing glossaries. Below are the details for each new method:
- Method:
updateMultilingualGlossary($glossary, ?string $name, ?array $dictionaries): MultilingualGlossaryInfo
- Description: Updates a glossary or glossary dictionary with new entries or name.
- Parameters:
string|MultilingualGlossaryInfo $glossary: Glossary ID orMultilingualGlossaryInfoof glossary to update.string|null $name: Optional, new name for glossary.array|null $dictionaries: Optional, array ofMultilingualGlossaryDictionaryEntriesto update or add to glossary.
- Returns:
MultilingualGlossaryInfocontaining details about the updated glossary. - Example:
$entries = GlossaryEntries::fromEntries(['artist' => 'Maler', 'hello' => 'guten tag']);
$myGlossaryDict = new MultilingualGlossaryDictionaryEntries('en', 'de', $entries);
$myGlossary = $deeplClient->createMultilingualGlossary('My glossary', [$myGlossaryDict]);
$newEntries = GlossaryEntries::fromEntries(['hello' => 'hallo', 'prize' => 'Gewinn']);
$myUpdatedGlossaryDict = new MultilingualGlossaryDictionaryEntries('en', 'de', $newEntries);
$myUpdatedGlossary = $deeplClient->updateMultilingualGlossary(
$myGlossary, 'My updated glossary', [$myUpdatedGlossaryDict]);
print_r($myUpdatedGlossary->dictionaries[0]->getEntries()); // Array ( [artist] => Maler, [hello] => hallo, [prize] => Gewinn)
print_r($myUpdatedGlossary->name); // 'My updated glossary'- Method:
replaceMultilingualGlossaryDictionary($glossary, MultilingualGlossaryDictionaryEntries $dictionaryEntries): MultilingualGlossaryDictionaryInfo
- Description: This method replaces the existing glossary dictionary with a new set of entries.
- Parameters:
string|MultilingualGlossaryInfo $glossary: Glossary ID orMultilingualGlossaryInfoof glossary to update.MultilingualGlossaryDictionaryEntries $dictionaryEntries: Replacement dictionary with entries.
- Returns:
MultilingualGlossaryDictionaryInfocontaining information about the replaced glossary dictionary. - Note: Ensure that the new dictionary entries are complete and valid, as this method will completely overwrite the existing entries. It will also create a new glossary dictionary if one did not exist for the given language pair.
- Example:
$entries = GlossaryEntries::fromEntries(['artist' => 'Maler', 'hello' => 'guten tag']); $myGlossaryDict = new MultilingualGlossaryDictionaryEntries('en', 'de', $entries); $myGlossary = $deeplClient->createMultilingualGlossary('My glossary', [$myGlossaryDict]); $newEntries = GlossaryEntries::fromEntries(['hello' => 'hallo', 'prize' => 'Gewinn']); $myUpdatedGlossaryDict = new MultilingualGlossaryDictionaryEntries('en', 'de', $newEntries); $myUpdatedGlossary = $deeplClient->replaceMultilingualGlossaryDictionary( $myGlossary, $myUpdatedGlossaryDict); print_r($myUpdatedGlossary->getEntries()); // Array ( [hello] => hallo, [prize] => Gewinn)
-
Method:
deleteMultilingualGlossaryDictionary($glossary, ?MultilingualGlossaryDictionaryInfo $dictionary, ?string $sourceLang = null, ?string $targetLang = null): void
-
Description: This method deletes a specified glossary dictionary from a given glossary.
-
Parameters:
string|MultilingualGlossaryInfo $glossary: Glossary ID orMultilingualGlossaryInfoof glossary to be deleted.MultilingualGlossaryDictionaryInfo|null $dictionary: Optional parameter of the dictionary to delete. Either theMultilingualGlossaryDictionaryInfoor both the sourceLang and targetLang can be provided to identify the dictionary.string|null $sourceLang: Optional parameter representing the source language of the dictionarystring|null $targetLang: Optional parameter representing the target language of the dictionary.
-
Returns: Void
-
Migration Note: Ensure that your application logic correctly identifies the dictionary to delete. If using
sourceLangandtargetLang, both must be provided to specify the dictionary. -
Example:
$entriesEnde = GlossaryEntries::fromEntries(['hello' => 'hallo']); $entriesDeen = GlossaryEntries::fromEntries(['hallo' => 'hello']); $glossaryDictEnde = new MultilingualGlossaryDictionaryEntries('en', 'de', $entriesEnde); $glossaryDictDeen = new MultilingualGlossaryDictionaryEntries('de', 'en', $entriesDeen); $glossaryInfo = $deeplClient->createMultilingualGlossary('My glossary', [$entriesEnde, $entriesDeen]); // Delete via specifying the glossary dictionary $deeplClient->deleteMultilingualGlossaryDictionary($glossaryInfo, $glossaryInfo->dictionaries[0], null, null); // Delete via specifying the language pair $deeplClient->deleteMultilingualGlossaryDictionary($glossaryInfo, null, "de", "en");