Skip to content

Repository files navigation

Language (I18N) Extension Specification

This document is the Language (I18N) Extension to the SpatioTemporal Asset Catalog (STAC) specification, which explains fields and recommendations around making multi-lingual STAC catalogs available.

The focus of this extension is to make multi-lingual static STAC catalogs available. There's also a dedicated language extension for STAC APIs. So there's a STAC Language extension and a STAC API Langauge extension.

Fields for Catalogs, Collections and Item Properties

The fields in the table below can be used in these parts of STAC documents:

  • Catalogs
  • Collections
  • Item Properties (incl. Summaries in Collections)
  • Assets (for both Collections and Items, incl. Item Asset Definitions in Collections)
  • Links
Field NameTypeDescription
languageLanguage ObjectREQUIRED. The language of the document.
languages[Language Object]Other languages the document is available in. This list MUST NOT contain the language of the document.

Note: OGC API - Records defines an additional field resourceLanguages to specify the list of languages the resource (assets) being described by the Record (Item, Catalog, or Collection) is available in. For details see list of languages for assets.

Language Object

Each Language Object describes an individual language. Implementors may add additional properties for their usecases (e.g. for formatting numbers or dates and times).

Field NameTypeDescription
codestringREQUIRED. This MUST be the valid Language-Tag for the language as specified in RFC 5646.
namestringThe name of the language in the language itself (e.g. "Deutsch" for German). This MUST NOT be translated.
alternatestringThe name of the language in another well-understood language, usually English (e.g. "German" for German).
dirstringThe direction for text in this language. Either ltr (left-to-right) or rtl (right-to-left). Defaults to ltr.

alternate

It is a good practice to provide language names in two languages so that they can be understood both by users that speak and don't speak the language. The name is always in the language of the language itself and caters for users that speak this language. alternate caters for users that don't speak the language. It is often English, but could be something else, e.g., it could be in the language of the document itself.

Fields for Links and Assets

The fields in the table below can be used in these parts of STAC documents:

  • Catalogs
  • Collections
  • Item Properties (incl. Summaries in Collections)
  • Assets (for both Collections and Items, incl. Item Asset Definitions in Collections)
  • Links
Field NameTypeDescription
hreflangstringThe language to be expected for the href in the link or asset. The language MUST BE a valid Language-Tag as specified in RFC 5646.

Best practices

  • The alternate relation type should be used to provide links to the same resource, but in other languages. Be aware that alternative representations can also point to alternative media types, e.g. an HTML representation of the JSON files. So to get all links to (Geo)JSON files for the various languages, you also need to check the media type.
  • Other links to STAC documents (e.g. for relation types item, child, parent, root) should only be provided in the language present in the current document.
  • STAC Assets should always be provided in all languages.
  • The STAC files for the individual languages should be provided in separate subfolders, but the default language can be provided in the parent of the sub-folders (for an example please see the examples folder).

Relation to other specifications

The specification aims for alignment with

More specifically, the language and languages properties are aligned with OGC API - Records. The hreflang property is defined in RFC 8288 and various OGC APIs, e.g. Features, Records and Common.

List of languages for assets

OGC API - Records defines an additional field resourceLanguages to specify the list of languages the resource (in STAC: Assets) being described by the Record (in STAC: Item, Catalog, or Collection) is available in. The field name might be confusing to STAC users as the term "resources" in STAC would be "assets". In many cases, assets are not translatable in STAC (e.g. raster imagery), but you can still get a list of language codes by reading the hreflang properties for all assets.

Examples in JavaScript:

letassetLanguages=newSet();Object.values(stac.assets).filter(asset=>typeofasset.hreflang==='string').forEach(asset=>assetLanguages.add(asset.hreflang));
letassetLanguages=[];for(keyinstac.assets){letasset=stac.assets[key]if(typeofasset.hreflang==='string'&&!assetLanguages.includes(asset.hreflang)){assetLanguages.push(asset.hreflang);}}

Implementations

The following client and/or server software implement this extension:

Contributing

All contributions are subject to the STAC Specification Code of Conduct. For contributions, please follow the STAC specification contributing guide Instructions for running tests are copied here for convenience.

Running tests

The same checks that run as checks on PR's are part of the repository and can be run locally to verify that changes are valid. To run tests locally, you'll need npm, which is a standard part of any node.js installation.

First you'll need to install everything with npm once. Just navigate to the root of this repository and on your command line run:

npm install

Then to check markdown formatting and test the examples against the JSON schema, you can run:

npm test

This will spit out the same texts that you see online, and you can then go and fix your markdown or examples.

If the tests reveal formatting problems with the examples, you can fix them with:

npm run format-examples

About

Fields and recommendations around making multi-lingual STAC catalogs available.

Resources

Stars

1 star

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - stac-extensions/language: Fields and recommendations around making multi-lingual STAC catalogs available. · GitHub
Skip to content

Repository files navigation

Language (I18N) Extension Specification

This document is the Language (I18N) Extension to the SpatioTemporal Asset Catalog (STAC) specification, which explains fields and recommendations around making multi-lingual STAC catalogs available.

The focus of this extension is to make multi-lingual static STAC catalogs available. There's also a dedicated language extension for STAC APIs. So there's a STAC Language extension and a STAC API Langauge extension.

Fields for Catalogs, Collections and Item Properties

The fields in the table below can be used in these parts of STAC documents:

  • Catalogs
  • Collections
  • Item Properties (incl. Summaries in Collections)
  • Assets (for both Collections and Items, incl. Item Asset Definitions in Collections)
  • Links
Field NameTypeDescription
languageLanguage ObjectREQUIRED. The language of the document.
languages[Language Object]Other languages the document is available in. This list MUST NOT contain the language of the document.

Note: OGC API - Records defines an additional field resourceLanguages to specify the list of languages the resource (assets) being described by the Record (Item, Catalog, or Collection) is available in. For details see list of languages for assets.

Language Object

Each Language Object describes an individual language. Implementors may add additional properties for their usecases (e.g. for formatting numbers or dates and times).

Field NameTypeDescription
codestringREQUIRED. This MUST be the valid Language-Tag for the language as specified in RFC 5646.
namestringThe name of the language in the language itself (e.g. "Deutsch" for German). This MUST NOT be translated.
alternatestringThe name of the language in another well-understood language, usually English (e.g. "German" for German).
dirstringThe direction for text in this language. Either ltr (left-to-right) or rtl (right-to-left). Defaults to ltr.

alternate

It is a good practice to provide language names in two languages so that they can be understood both by users that speak and don't speak the language. The name is always in the language of the language itself and caters for users that speak this language. alternate caters for users that don't speak the language. It is often English, but could be something else, e.g., it could be in the language of the document itself.

Fields for Links and Assets

The fields in the table below can be used in these parts of STAC documents:

  • Catalogs
  • Collections
  • Item Properties (incl. Summaries in Collections)
  • Assets (for both Collections and Items, incl. Item Asset Definitions in Collections)
  • Links
Field NameTypeDescription
hreflangstringThe language to be expected for the href in the link or asset. The language MUST BE a valid Language-Tag as specified in RFC 5646.

Best practices

  • The alternate relation type should be used to provide links to the same resource, but in other languages. Be aware that alternative representations can also point to alternative media types, e.g. an HTML representation of the JSON files. So to get all links to (Geo)JSON files for the various languages, you also need to check the media type.
  • Other links to STAC documents (e.g. for relation types item, child, parent, root) should only be provided in the language present in the current document.
  • STAC Assets should always be provided in all languages.
  • The STAC files for the individual languages should be provided in separate subfolders, but the default language can be provided in the parent of the sub-folders (for an example please see the examples folder).

Relation to other specifications

The specification aims for alignment with

More specifically, the language and languages properties are aligned with OGC API - Records. The hreflang property is defined in RFC 8288 and various OGC APIs, e.g. Features, Records and Common.

List of languages for assets

OGC API - Records defines an additional field resourceLanguages to specify the list of languages the resource (in STAC: Assets) being described by the Record (in STAC: Item, Catalog, or Collection) is available in. The field name might be confusing to STAC users as the term "resources" in STAC would be "assets". In many cases, assets are not translatable in STAC (e.g. raster imagery), but you can still get a list of language codes by reading the hreflang properties for all assets.

Examples in JavaScript:

letassetLanguages=newSet();Object.values(stac.assets).filter(asset=>typeofasset.hreflang==='string').forEach(asset=>assetLanguages.add(asset.hreflang));
letassetLanguages=[];for(keyinstac.assets){letasset=stac.assets[key]if(typeofasset.hreflang==='string'&&!assetLanguages.includes(asset.hreflang)){assetLanguages.push(asset.hreflang);}}

Implementations

The following client and/or server software implement this extension:

Contributing

All contributions are subject to the STAC Specification Code of Conduct. For contributions, please follow the STAC specification contributing guide Instructions for running tests are copied here for convenience.

Running tests

The same checks that run as checks on PR's are part of the repository and can be run locally to verify that changes are valid. To run tests locally, you'll need npm, which is a standard part of any node.js installation.

First you'll need to install everything with npm once. Just navigate to the root of this repository and on your command line run:

npm install

Then to check markdown formatting and test the examples against the JSON schema, you can run:

npm test

This will spit out the same texts that you see online, and you can then go and fix your markdown or examples.

If the tests reveal formatting problems with the examples, you can fix them with:

npm run format-examples

About

Fields and recommendations around making multi-lingual STAC catalogs available.

Resources

Stars

1 star

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - stac-extensions/language: Fields and recommendations around making multi-lingual STAC catalogs available. · GitHub
Skip to content

Repository files navigation

Language (I18N) Extension Specification

This document is the Language (I18N) Extension to the SpatioTemporal Asset Catalog (STAC) specification, which explains fields and recommendations around making multi-lingual STAC catalogs available.

The focus of this extension is to make multi-lingual static STAC catalogs available. There's also a dedicated language extension for STAC APIs. So there's a STAC Language extension and a STAC API Langauge extension.

Fields for Catalogs, Collections and Item Properties

The fields in the table below can be used in these parts of STAC documents:

  • Catalogs
  • Collections
  • Item Properties (incl. Summaries in Collections)
  • Assets (for both Collections and Items, incl. Item Asset Definitions in Collections)
  • Links
Field NameTypeDescription
languageLanguage ObjectREQUIRED. The language of the document.
languages[Language Object]Other languages the document is available in. This list MUST NOT contain the language of the document.

Note: OGC API - Records defines an additional field resourceLanguages to specify the list of languages the resource (assets) being described by the Record (Item, Catalog, or Collection) is available in. For details see list of languages for assets.

Language Object

Each Language Object describes an individual language. Implementors may add additional properties for their usecases (e.g. for formatting numbers or dates and times).

Field NameTypeDescription
codestringREQUIRED. This MUST be the valid Language-Tag for the language as specified in RFC 5646.
namestringThe name of the language in the language itself (e.g. "Deutsch" for German). This MUST NOT be translated.
alternatestringThe name of the language in another well-understood language, usually English (e.g. "German" for German).
dirstringThe direction for text in this language. Either ltr (left-to-right) or rtl (right-to-left). Defaults to ltr.

alternate

It is a good practice to provide language names in two languages so that they can be understood both by users that speak and don't speak the language. The name is always in the language of the language itself and caters for users that speak this language. alternate caters for users that don't speak the language. It is often English, but could be something else, e.g., it could be in the language of the document itself.

Fields for Links and Assets

The fields in the table below can be used in these parts of STAC documents:

  • Catalogs
  • Collections
  • Item Properties (incl. Summaries in Collections)
  • Assets (for both Collections and Items, incl. Item Asset Definitions in Collections)
  • Links
Field NameTypeDescription
hreflangstringThe language to be expected for the href in the link or asset. The language MUST BE a valid Language-Tag as specified in RFC 5646.

Best practices

  • The alternate relation type should be used to provide links to the same resource, but in other languages. Be aware that alternative representations can also point to alternative media types, e.g. an HTML representation of the JSON files. So to get all links to (Geo)JSON files for the various languages, you also need to check the media type.
  • Other links to STAC documents (e.g. for relation types item, child, parent, root) should only be provided in the language present in the current document.
  • STAC Assets should always be provided in all languages.
  • The STAC files for the individual languages should be provided in separate subfolders, but the default language can be provided in the parent of the sub-folders (for an example please see the examples folder).

Relation to other specifications

The specification aims for alignment with

More specifically, the language and languages properties are aligned with OGC API - Records. The hreflang property is defined in RFC 8288 and various OGC APIs, e.g. Features, Records and Common.

List of languages for assets

OGC API - Records defines an additional field resourceLanguages to specify the list of languages the resource (in STAC: Assets) being described by the Record (in STAC: Item, Catalog, or Collection) is available in. The field name might be confusing to STAC users as the term "resources" in STAC would be "assets". In many cases, assets are not translatable in STAC (e.g. raster imagery), but you can still get a list of language codes by reading the hreflang properties for all assets.

Examples in JavaScript:

letassetLanguages=newSet();Object.values(stac.assets).filter(asset=>typeofasset.hreflang==='string').forEach(asset=>assetLanguages.add(asset.hreflang));
letassetLanguages=[];for(keyinstac.assets){letasset=stac.assets[key]if(typeofasset.hreflang==='string'&&!assetLanguages.includes(asset.hreflang)){assetLanguages.push(asset.hreflang);}}

Implementations

The following client and/or server software implement this extension:

Contributing

All contributions are subject to the STAC Specification Code of Conduct. For contributions, please follow the STAC specification contributing guide Instructions for running tests are copied here for convenience.

Running tests

The same checks that run as checks on PR's are part of the repository and can be run locally to verify that changes are valid. To run tests locally, you'll need npm, which is a standard part of any node.js installation.

First you'll need to install everything with npm once. Just navigate to the root of this repository and on your command line run:

npm install

Then to check markdown formatting and test the examples against the JSON schema, you can run:

npm test

This will spit out the same texts that you see online, and you can then go and fix your markdown or examples.

If the tests reveal formatting problems with the examples, you can fix them with:

npm run format-examples

About

Fields and recommendations around making multi-lingual STAC catalogs available.

Resources

Stars

1 star

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - stac-extensions/language: Fields and recommendations around making multi-lingual STAC catalogs available. · GitHub
Skip to content

Repository files navigation

Language (I18N) Extension Specification

This document is the Language (I18N) Extension to the SpatioTemporal Asset Catalog (STAC) specification, which explains fields and recommendations around making multi-lingual STAC catalogs available.

The focus of this extension is to make multi-lingual static STAC catalogs available. There's also a dedicated language extension for STAC APIs. So there's a STAC Language extension and a STAC API Langauge extension.

Fields for Catalogs, Collections and Item Properties

The fields in the table below can be used in these parts of STAC documents:

  • Catalogs
  • Collections
  • Item Properties (incl. Summaries in Collections)
  • Assets (for both Collections and Items, incl. Item Asset Definitions in Collections)
  • Links
Field NameTypeDescription
languageLanguage ObjectREQUIRED. The language of the document.
languages[Language Object]Other languages the document is available in. This list MUST NOT contain the language of the document.

Note: OGC API - Records defines an additional field resourceLanguages to specify the list of languages the resource (assets) being described by the Record (Item, Catalog, or Collection) is available in. For details see list of languages for assets.

Language Object

Each Language Object describes an individual language. Implementors may add additional properties for their usecases (e.g. for formatting numbers or dates and times).

Field NameTypeDescription
codestringREQUIRED. This MUST be the valid Language-Tag for the language as specified in RFC 5646.
namestringThe name of the language in the language itself (e.g. "Deutsch" for German). This MUST NOT be translated.
alternatestringThe name of the language in another well-understood language, usually English (e.g. "German" for German).
dirstringThe direction for text in this language. Either ltr (left-to-right) or rtl (right-to-left). Defaults to ltr.

alternate

It is a good practice to provide language names in two languages so that they can be understood both by users that speak and don't speak the language. The name is always in the language of the language itself and caters for users that speak this language. alternate caters for users that don't speak the language. It is often English, but could be something else, e.g., it could be in the language of the document itself.

Fields for Links and Assets

The fields in the table below can be used in these parts of STAC documents:

  • Catalogs
  • Collections
  • Item Properties (incl. Summaries in Collections)
  • Assets (for both Collections and Items, incl. Item Asset Definitions in Collections)
  • Links
Field NameTypeDescription
hreflangstringThe language to be expected for the href in the link or asset. The language MUST BE a valid Language-Tag as specified in RFC 5646.

Best practices

  • The alternate relation type should be used to provide links to the same resource, but in other languages. Be aware that alternative representations can also point to alternative media types, e.g. an HTML representation of the JSON files. So to get all links to (Geo)JSON files for the various languages, you also need to check the media type.
  • Other links to STAC documents (e.g. for relation types item, child, parent, root) should only be provided in the language present in the current document.
  • STAC Assets should always be provided in all languages.
  • The STAC files for the individual languages should be provided in separate subfolders, but the default language can be provided in the parent of the sub-folders (for an example please see the examples folder).

Relation to other specifications

The specification aims for alignment with

More specifically, the language and languages properties are aligned with OGC API - Records. The hreflang property is defined in RFC 8288 and various OGC APIs, e.g. Features, Records and Common.

List of languages for assets

OGC API - Records defines an additional field resourceLanguages to specify the list of languages the resource (in STAC: Assets) being described by the Record (in STAC: Item, Catalog, or Collection) is available in. The field name might be confusing to STAC users as the term "resources" in STAC would be "assets". In many cases, assets are not translatable in STAC (e.g. raster imagery), but you can still get a list of language codes by reading the hreflang properties for all assets.

Examples in JavaScript:

letassetLanguages=newSet();Object.values(stac.assets).filter(asset=>typeofasset.hreflang==='string').forEach(asset=>assetLanguages.add(asset.hreflang));
letassetLanguages=[];for(keyinstac.assets){letasset=stac.assets[key]if(typeofasset.hreflang==='string'&&!assetLanguages.includes(asset.hreflang)){assetLanguages.push(asset.hreflang);}}

Implementations

The following client and/or server software implement this extension:

Contributing

All contributions are subject to the STAC Specification Code of Conduct. For contributions, please follow the STAC specification contributing guide Instructions for running tests are copied here for convenience.

Running tests

The same checks that run as checks on PR's are part of the repository and can be run locally to verify that changes are valid. To run tests locally, you'll need npm, which is a standard part of any node.js installation.

First you'll need to install everything with npm once. Just navigate to the root of this repository and on your command line run:

npm install

Then to check markdown formatting and test the examples against the JSON schema, you can run:

npm test

This will spit out the same texts that you see online, and you can then go and fix your markdown or examples.

If the tests reveal formatting problems with the examples, you can fix them with:

npm run format-examples

About

Fields and recommendations around making multi-lingual STAC catalogs available.

Resources

Stars

1 star

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - stac-extensions/language: Fields and recommendations around making multi-lingual STAC catalogs available. · GitHub
Skip to content

Repository files navigation

Language (I18N) Extension Specification

This document is the Language (I18N) Extension to the SpatioTemporal Asset Catalog (STAC) specification, which explains fields and recommendations around making multi-lingual STAC catalogs available.

The focus of this extension is to make multi-lingual static STAC catalogs available. There's also a dedicated language extension for STAC APIs. So there's a STAC Language extension and a STAC API Langauge extension.

Fields for Catalogs, Collections and Item Properties

The fields in the table below can be used in these parts of STAC documents:

  • Catalogs
  • Collections
  • Item Properties (incl. Summaries in Collections)
  • Assets (for both Collections and Items, incl. Item Asset Definitions in Collections)
  • Links
Field NameTypeDescription
languageLanguage ObjectREQUIRED. The language of the document.
languages[Language Object]Other languages the document is available in. This list MUST NOT contain the language of the document.

Note: OGC API - Records defines an additional field resourceLanguages to specify the list of languages the resource (assets) being described by the Record (Item, Catalog, or Collection) is available in. For details see list of languages for assets.

Language Object

Each Language Object describes an individual language. Implementors may add additional properties for their usecases (e.g. for formatting numbers or dates and times).

Field NameTypeDescription
codestringREQUIRED. This MUST be the valid Language-Tag for the language as specified in RFC 5646.
namestringThe name of the language in the language itself (e.g. "Deutsch" for German). This MUST NOT be translated.
alternatestringThe name of the language in another well-understood language, usually English (e.g. "German" for German).
dirstringThe direction for text in this language. Either ltr (left-to-right) or rtl (right-to-left). Defaults to ltr.

alternate

It is a good practice to provide language names in two languages so that they can be understood both by users that speak and don't speak the language. The name is always in the language of the language itself and caters for users that speak this language. alternate caters for users that don't speak the language. It is often English, but could be something else, e.g., it could be in the language of the document itself.

Fields for Links and Assets

The fields in the table below can be used in these parts of STAC documents:

  • Catalogs
  • Collections
  • Item Properties (incl. Summaries in Collections)
  • Assets (for both Collections and Items, incl. Item Asset Definitions in Collections)
  • Links
Field NameTypeDescription
hreflangstringThe language to be expected for the href in the link or asset. The language MUST BE a valid Language-Tag as specified in RFC 5646.

Best practices

  • The alternate relation type should be used to provide links to the same resource, but in other languages. Be aware that alternative representations can also point to alternative media types, e.g. an HTML representation of the JSON files. So to get all links to (Geo)JSON files for the various languages, you also need to check the media type.
  • Other links to STAC documents (e.g. for relation types item, child, parent, root) should only be provided in the language present in the current document.
  • STAC Assets should always be provided in all languages.
  • The STAC files for the individual languages should be provided in separate subfolders, but the default language can be provided in the parent of the sub-folders (for an example please see the examples folder).

Relation to other specifications

The specification aims for alignment with

More specifically, the language and languages properties are aligned with OGC API - Records. The hreflang property is defined in RFC 8288 and various OGC APIs, e.g. Features, Records and Common.

List of languages for assets

OGC API - Records defines an additional field resourceLanguages to specify the list of languages the resource (in STAC: Assets) being described by the Record (in STAC: Item, Catalog, or Collection) is available in. The field name might be confusing to STAC users as the term "resources" in STAC would be "assets". In many cases, assets are not translatable in STAC (e.g. raster imagery), but you can still get a list of language codes by reading the hreflang properties for all assets.

Examples in JavaScript:

letassetLanguages=newSet();Object.values(stac.assets).filter(asset=>typeofasset.hreflang==='string').forEach(asset=>assetLanguages.add(asset.hreflang));
letassetLanguages=[];for(keyinstac.assets){letasset=stac.assets[key]if(typeofasset.hreflang==='string'&&!assetLanguages.includes(asset.hreflang)){assetLanguages.push(asset.hreflang);}}

Implementations

The following client and/or server software implement this extension:

Contributing

All contributions are subject to the STAC Specification Code of Conduct. For contributions, please follow the STAC specification contributing guide Instructions for running tests are copied here for convenience.

Running tests

The same checks that run as checks on PR's are part of the repository and can be run locally to verify that changes are valid. To run tests locally, you'll need npm, which is a standard part of any node.js installation.

First you'll need to install everything with npm once. Just navigate to the root of this repository and on your command line run:

npm install

Then to check markdown formatting and test the examples against the JSON schema, you can run:

npm test

This will spit out the same texts that you see online, and you can then go and fix your markdown or examples.

If the tests reveal formatting problems with the examples, you can fix them with:

npm run format-examples

About

Fields and recommendations around making multi-lingual STAC catalogs available.

Resources

Stars

1 star

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - stac-extensions/language: Fields and recommendations around making multi-lingual STAC catalogs available. · GitHub
Skip to content

Repository files navigation

Language (I18N) Extension Specification

This document is the Language (I18N) Extension to the SpatioTemporal Asset Catalog (STAC) specification, which explains fields and recommendations around making multi-lingual STAC catalogs available.

The focus of this extension is to make multi-lingual static STAC catalogs available. There's also a dedicated language extension for STAC APIs. So there's a STAC Language extension and a STAC API Langauge extension.

Fields for Catalogs, Collections and Item Properties

The fields in the table below can be used in these parts of STAC documents:

  • Catalogs
  • Collections
  • Item Properties (incl. Summaries in Collections)
  • Assets (for both Collections and Items, incl. Item Asset Definitions in Collections)
  • Links
Field NameTypeDescription
languageLanguage ObjectREQUIRED. The language of the document.
languages[Language Object]Other languages the document is available in. This list MUST NOT contain the language of the document.

Note: OGC API - Records defines an additional field resourceLanguages to specify the list of languages the resource (assets) being described by the Record (Item, Catalog, or Collection) is available in. For details see list of languages for assets.

Language Object

Each Language Object describes an individual language. Implementors may add additional properties for their usecases (e.g. for formatting numbers or dates and times).

Field NameTypeDescription
codestringREQUIRED. This MUST be the valid Language-Tag for the language as specified in RFC 5646.
namestringThe name of the language in the language itself (e.g. "Deutsch" for German). This MUST NOT be translated.
alternatestringThe name of the language in another well-understood language, usually English (e.g. "German" for German).
dirstringThe direction for text in this language. Either ltr (left-to-right) or rtl (right-to-left). Defaults to ltr.

alternate

It is a good practice to provide language names in two languages so that they can be understood both by users that speak and don't speak the language. The name is always in the language of the language itself and caters for users that speak this language. alternate caters for users that don't speak the language. It is often English, but could be something else, e.g., it could be in the language of the document itself.

Fields for Links and Assets

The fields in the table below can be used in these parts of STAC documents:

  • Catalogs
  • Collections
  • Item Properties (incl. Summaries in Collections)
  • Assets (for both Collections and Items, incl. Item Asset Definitions in Collections)
  • Links
Field NameTypeDescription
hreflangstringThe language to be expected for the href in the link or asset. The language MUST BE a valid Language-Tag as specified in RFC 5646.

Best practices

  • The alternate relation type should be used to provide links to the same resource, but in other languages. Be aware that alternative representations can also point to alternative media types, e.g. an HTML representation of the JSON files. So to get all links to (Geo)JSON files for the various languages, you also need to check the media type.
  • Other links to STAC documents (e.g. for relation types item, child, parent, root) should only be provided in the language present in the current document.
  • STAC Assets should always be provided in all languages.
  • The STAC files for the individual languages should be provided in separate subfolders, but the default language can be provided in the parent of the sub-folders (for an example please see the examples folder).

Relation to other specifications

The specification aims for alignment with

More specifically, the language and languages properties are aligned with OGC API - Records. The hreflang property is defined in RFC 8288 and various OGC APIs, e.g. Features, Records and Common.

List of languages for assets

OGC API - Records defines an additional field resourceLanguages to specify the list of languages the resource (in STAC: Assets) being described by the Record (in STAC: Item, Catalog, or Collection) is available in. The field name might be confusing to STAC users as the term "resources" in STAC would be "assets". In many cases, assets are not translatable in STAC (e.g. raster imagery), but you can still get a list of language codes by reading the hreflang properties for all assets.

Examples in JavaScript:

letassetLanguages=newSet();Object.values(stac.assets).filter(asset=>typeofasset.hreflang==='string').forEach(asset=>assetLanguages.add(asset.hreflang));
letassetLanguages=[];for(keyinstac.assets){letasset=stac.assets[key]if(typeofasset.hreflang==='string'&&!assetLanguages.includes(asset.hreflang)){assetLanguages.push(asset.hreflang);}}

Implementations

The following client and/or server software implement this extension:

Contributing

All contributions are subject to the STAC Specification Code of Conduct. For contributions, please follow the STAC specification contributing guide Instructions for running tests are copied here for convenience.

Running tests

The same checks that run as checks on PR's are part of the repository and can be run locally to verify that changes are valid. To run tests locally, you'll need npm, which is a standard part of any node.js installation.

First you'll need to install everything with npm once. Just navigate to the root of this repository and on your command line run:

npm install

Then to check markdown formatting and test the examples against the JSON schema, you can run:

npm test

This will spit out the same texts that you see online, and you can then go and fix your markdown or examples.

If the tests reveal formatting problems with the examples, you can fix them with:

npm run format-examples

About

Fields and recommendations around making multi-lingual STAC catalogs available.

Resources

Stars

1 star

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); GitHub - stac-extensions/language: Fields and recommendations around making multi-lingual STAC catalogs available. · GitHub
Skip to content

Repository files navigation

Language (I18N) Extension Specification

This document is the Language (I18N) Extension to the SpatioTemporal Asset Catalog (STAC) specification, which explains fields and recommendations around making multi-lingual STAC catalogs available.

The focus of this extension is to make multi-lingual static STAC catalogs available. There's also a dedicated language extension for STAC APIs. So there's a STAC Language extension and a STAC API Langauge extension.

Fields for Catalogs, Collections and Item Properties

The fields in the table below can be used in these parts of STAC documents:

  • Catalogs
  • Collections
  • Item Properties (incl. Summaries in Collections)
  • Assets (for both Collections and Items, incl. Item Asset Definitions in Collections)
  • Links
Field NameTypeDescription
languageLanguage ObjectREQUIRED. The language of the document.
languages[Language Object]Other languages the document is available in. This list MUST NOT contain the language of the document.

Note: OGC API - Records defines an additional field resourceLanguages to specify the list of languages the resource (assets) being described by the Record (Item, Catalog, or Collection) is available in. For details see list of languages for assets.

Language Object

Each Language Object describes an individual language. Implementors may add additional properties for their usecases (e.g. for formatting numbers or dates and times).

Field NameTypeDescription
codestringREQUIRED. This MUST be the valid Language-Tag for the language as specified in RFC 5646.
namestringThe name of the language in the language itself (e.g. "Deutsch" for German). This MUST NOT be translated.
alternatestringThe name of the language in another well-understood language, usually English (e.g. "German" for German).
dirstringThe direction for text in this language. Either ltr (left-to-right) or rtl (right-to-left). Defaults to ltr.

alternate

It is a good practice to provide language names in two languages so that they can be understood both by users that speak and don't speak the language. The name is always in the language of the language itself and caters for users that speak this language. alternate caters for users that don't speak the language. It is often English, but could be something else, e.g., it could be in the language of the document itself.

Fields for Links and Assets

The fields in the table below can be used in these parts of STAC documents:

  • Catalogs
  • Collections
  • Item Properties (incl. Summaries in Collections)
  • Assets (for both Collections and Items, incl. Item Asset Definitions in Collections)
  • Links
Field NameTypeDescription
hreflangstringThe language to be expected for the href in the link or asset. The language MUST BE a valid Language-Tag as specified in RFC 5646.

Best practices

  • The alternate relation type should be used to provide links to the same resource, but in other languages. Be aware that alternative representations can also point to alternative media types, e.g. an HTML representation of the JSON files. So to get all links to (Geo)JSON files for the various languages, you also need to check the media type.
  • Other links to STAC documents (e.g. for relation types item, child, parent, root) should only be provided in the language present in the current document.
  • STAC Assets should always be provided in all languages.
  • The STAC files for the individual languages should be provided in separate subfolders, but the default language can be provided in the parent of the sub-folders (for an example please see the examples folder).

Relation to other specifications

The specification aims for alignment with

More specifically, the language and languages properties are aligned with OGC API - Records. The hreflang property is defined in RFC 8288 and various OGC APIs, e.g. Features, Records and Common.

List of languages for assets

OGC API - Records defines an additional field resourceLanguages to specify the list of languages the resource (in STAC: Assets) being described by the Record (in STAC: Item, Catalog, or Collection) is available in. The field name might be confusing to STAC users as the term "resources" in STAC would be "assets". In many cases, assets are not translatable in STAC (e.g. raster imagery), but you can still get a list of language codes by reading the hreflang properties for all assets.

Examples in JavaScript:

letassetLanguages=newSet();Object.values(stac.assets).filter(asset=>typeofasset.hreflang==='string').forEach(asset=>assetLanguages.add(asset.hreflang));
letassetLanguages=[];for(keyinstac.assets){letasset=stac.assets[key]if(typeofasset.hreflang==='string'&&!assetLanguages.includes(asset.hreflang)){assetLanguages.push(asset.hreflang);}}

Implementations

The following client and/or server software implement this extension:

Contributing

All contributions are subject to the STAC Specification Code of Conduct. For contributions, please follow the STAC specification contributing guide Instructions for running tests are copied here for convenience.

Running tests

The same checks that run as checks on PR's are part of the repository and can be run locally to verify that changes are valid. To run tests locally, you'll need npm, which is a standard part of any node.js installation.

First you'll need to install everything with npm once. Just navigate to the root of this repository and on your command line run:

npm install

Then to check markdown formatting and test the examples against the JSON schema, you can run:

npm test

This will spit out the same texts that you see online, and you can then go and fix your markdown or examples.

If the tests reveal formatting problems with the examples, you can fix them with:

npm run format-examples

About

Fields and recommendations around making multi-lingual STAC catalogs available.

Resources

Stars

1 star

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages