extensionBase: Use UUID as fallback gettext domain
Nowadays we can set up translations automatically, but only when the domain is provided with the metadata. This can be a problem, for example our extension templates use the automatic translation handling that we recommend, but as a result the code will throw an error unless `gettext-domain` is added to the metadata. Binding a text domain is cheap enough to not care about unnecessary or duplicated calls, so add a final fallback to the UUID when no domain was provided as parameter or in the metadata. There is already a precedent with the `gnome-extensions pack` command that falls back to the UUID when no explicit gettext domain was included in the metadata. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2888>
This commit is contained in:
parent
92ccfe7f65
commit
a6d8e7ab6f
@ -55,10 +55,7 @@ export class ExtensionBase {
|
|||||||
throw new Error(`${this.constructor.name} did not pass metadata to parent`);
|
throw new Error(`${this.constructor.name} did not pass metadata to parent`);
|
||||||
|
|
||||||
this.metadata = metadata;
|
this.metadata = metadata;
|
||||||
|
this.initTranslations();
|
||||||
const domain = this.metadata['gettext-domain'];
|
|
||||||
if (domain)
|
|
||||||
this.initTranslations(domain);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -116,14 +113,12 @@ export class ExtensionBase {
|
|||||||
/**
|
/**
|
||||||
* Initialize Gettext to load translations from extensionsdir/locale. If
|
* Initialize Gettext to load translations from extensionsdir/locale. If
|
||||||
* domain is not provided, it will be taken from metadata['gettext-domain']
|
* domain is not provided, it will be taken from metadata['gettext-domain']
|
||||||
|
* if provided, or use the UUID
|
||||||
*
|
*
|
||||||
* @param {string=} domain - the gettext domain to use
|
* @param {string=} domain - the gettext domain to use
|
||||||
*/
|
*/
|
||||||
initTranslations(domain) {
|
initTranslations(domain) {
|
||||||
domain ||= this.metadata['gettext-domain'];
|
domain ||= this.metadata['gettext-domain'] ?? this.uuid;
|
||||||
|
|
||||||
if (!domain)
|
|
||||||
throw new Error('initTranslations() was called without providing a valid domain');
|
|
||||||
|
|
||||||
// Expect USER extensions to have a locale/ subfolder, otherwise assume a
|
// Expect USER extensions to have a locale/ subfolder, otherwise assume a
|
||||||
// SYSTEM extension that has been installed in the same prefix as the shell
|
// SYSTEM extension that has been installed in the same prefix as the shell
|
||||||
|
Loading…
Reference in New Issue
Block a user