VIEW THIS AS

Auto mode follows the Route Engine until you choose a viewpoint.

YOU ARE HERE

ROUTE CHECK

CONNECTED TO

WHAT NEXT

Use the canonical route for this room, or HELP if you are unsure.

Translate | SPDX License IDs, Package URLs and SBOM Component Identifiers — Preserve Software Supply-Chain Meaning Across Languages

If you are searching for how to translate SPDX license identifiers, how to translate Package URLs or PURLs, how to translate SBOM data, or how to localize software-supply-chain documentation without changing package identity or licensing meaning, the first rule is to separate human language from machine syntax. Translate descriptions, warnings and explanatory prose; preserve governed identifiers, expressions, package coordinates and relationship semantics exactly.

This matters in software bills of materials, dependency inventories, vulnerability management, open-source compliance, license review, package registries, DevSecOps pipelines, application security, software procurement, product security, incident response and multilingual developer documentation. A translation can read beautifully and still break a build, misidentify a package or change legal meaning if it rewrites an SPDX identifier, alters an AND/OR license expression, percent-decodes a PURL incorrectly, or moves one component relationship to another.

This guide explains how to translate SPDX, Package URL and SBOM information safely. It covers license identifiers, license expressions, package identity, PURL syntax, SBOM components, relationships, versions, qualifiers, hashes, vulnerabilities and QA. It remains a specialist owner beneath the broader translation architecture rather than becoming a competing general software-localization hub.

1. Software-supply-chain translation contains both language and code

An SBOM can contain human-readable names, descriptions and notices beside package identifiers, hashes, versions, licenses and relationship types. These fields do not all behave like prose. The translation workflow must classify each field before any language transformation begins.

Translation control: mark fields as translatable, protected, conditional or generated. Quality assurance: compare the target schema with the source and confirm that every protected field remained in the correct category.

2. SPDX is an international open standard

The SPDX project publishes a standard for communicating software bill-of-materials and related supply-chain information. SPDX 3.0 is the current stable specification listed by the project, while later work can appear as release candidates before becoming final. The standard is also published as ISO/IEC 5962:2021.

Translation control: record the SPDX version used by the source document. Quality assurance: do not rewrite an older valid document into a newer data model merely because the translation happens later.

3. The SPDX License List is governed reference data

The SPDX License List assigns standardized short identifiers to licenses and exceptions. As of September 16, 2026, the SPDX site labels the current License List as version 3.29.0. Those short identifiers are designed to be stable machine-readable references.

Translation control: preserve each short identifier exactly. Quality assurance: check identifiers against the current or project-specified SPDX License List rather than inventing abbreviations from translated license names.

4. License names may be explained; license IDs should not be translated

A user-facing interface can translate the full descriptive name of a license where appropriate, but identifiers such as MIT, Apache-2.0 or GPL-3.0-only remain canonical. Replacing them with local-language initials would break interoperability.

Translation control: translate display names separately from SPDX IDs. Quality assurance: compare every target identifier with the source and the SPDX License List.

5. SPDX expressions carry legal logic

A license field can contain a single identifier or a compound expression. Operators such as AND, OR and WITH are part of a formal syntax. They should not be translated into natural-language conjunctions inside the machine expression.

Translation control: protect the entire expression as structured syntax. Quality assurance: parse the target expression with an SPDX-aware parser rather than visually reviewing it only.

6. AND and OR are not stylistic alternatives

In a license expression, AND means that multiple license obligations apply together, while OR represents a choice among alternatives. Changing one operator to another changes the licensing meaning even though both may sound grammatical in a sentence.

Translation control: leave operators unchanged inside the expression. Quality assurance: compare the parsed expression tree between source and target.

7. Parentheses preserve grouping

Compound SPDX expressions can use parentheses to group choices and combinations. Removing them because the target language uses different punctuation can change how the expression is interpreted.

Translation control: treat parentheses as syntax, not typography. Quality assurance: normalize and parse both source and target expressions to confirm equivalent structure.

8. WITH attaches an exception to a license

The SPDX License List includes recognized license exceptions, and the WITH operator connects an exception to a license. An exception is not a stand-alone license. Translating the word “with” inside prose is fine; translating WITH inside the formal expression is not.

Translation control: preserve the exception identifier and WITH operator. Quality assurance: verify that the exception belongs to the intended license expression.

9. Deprecated identifiers need governed handling

The SPDX License List can deprecate identifiers while retaining historical meaning. A translation should not silently replace a deprecated identifier with a newer preferred expression unless the project explicitly includes data normalization.

Translation control: distinguish translation from license-data migration. Quality assurance: record whether the source string is preserved for historical fidelity or normalized under an approved rule.

10. License text is not the same as a license identifier

A full license text is legal prose; the SPDX ID is a reference to a standardized license. Translating the full license may require legal review, whereas preserving the identifier requires exact syntax control. These are separate tasks.

Translation control: do not infer that translating an SPDX ID means translating the underlying legal license text. Quality assurance: label translated legal text clearly and preserve the original identifier.

11. Copyright notices sit outside SPDX short-form license IDs

SPDX short-form identifiers express licensing information, while copyright notices identify rights holders and dates. Translators should not remove or rewrite copyright notices merely because a standardized license ID appears nearby.

Translation control: preserve legal names and dates according to the project’s legal-copy rules. Quality assurance: compare source and target notices independently from license expressions.

12. An SBOM is a relationship-rich data set

An SBOM is not simply a list of package names. It can describe components, versions, suppliers, files, licenses, hashes, relationships and other metadata. Translation should preserve that graph of relationships.

Translation control: keep component IDs and relationship edges stable. Quality assurance: compare component counts and relationship counts before and after localization.

13. Component names may be partly human-readable and partly canonical

A package name can be a registry coordinate, a product name, a module label or a display string. Some names should remain untouched because package managers resolve them exactly; others can have localized descriptions.

Translation control: identify whether the name is a machine coordinate or a display field. Quality assurance: try resolving protected package names in the original ecosystem.

14. Versions are not linguistic content

Version strings such as 1.4.2, 2026.09, 3.0-rc1 or vendor-specific tags carry release identity. Translating decimal separators, replacing hyphens or expanding “rc” can break matching.

Translation control: preserve version strings exactly. Quality assurance: compare package-name-plus-version pairs rather than names and versions independently.

15. Package URL gives software packages a structured identifier

Package URL, usually written PURL, provides a standardized syntax for identifying software packages independently from a single ecosystem. ECMA-427, first edition December 2025, standardized PURL and describes it as a valid URL and URI composed of seven components.

Translation control: treat the whole PURL as protected syntax. Quality assurance: validate it with a PURL parser and compare its parsed components.

16. A PURL begins with the pkg scheme

A normal PURL begins with the fixed scheme pkg:. That prefix is not a label to translate. Replacing it with a local-language word would make the identifier invalid.

Translation control: protect the scheme and delimiters. Quality assurance: reject identifiers that no longer parse as PURLs.

17. The type identifies the package ecosystem

The PURL type indicates the package ecosystem or package type, such as npm, pypi, maven or another registered type. Type names are part of the syntax and should not be localized.

Translation control: preserve the type token exactly. Quality assurance: validate the type against the current PURL type definitions used by the project.

18. Namespace can carry organization or ecosystem-specific identity

Some package ecosystems use a namespace for an owner, group or organization. That namespace may look like a normal word or company name, but it is part of the package coordinate.

Translation control: do not transliterate or translate namespace strings unless the ecosystem specification explicitly defines such a transformation. Quality assurance: resolve the resulting package coordinate.

19. The package name is often case-sensitive or ecosystem-sensitive

Different package systems have different normalization rules. A translator should never assume that changing capitalization, punctuation or Unicode characters is safe just because the visible word still looks similar.

Translation control: preserve the package name exactly as encoded. Quality assurance: compare canonicalized source and target through an ecosystem-aware tool.

20. The version component is part of package identity

A PURL can include a version after the at-sign. The same package name at another version can have different dependencies, vulnerabilities and licenses. Translating or dropping the version can therefore alter security meaning.

Translation control: preserve version content and delimiter. Quality assurance: ensure vulnerability findings still point to the same version after localization.

21. Qualifiers add key-value detail

PURL qualifiers can express additional package context such as architecture, distribution, repository information or other type-specific details. They follow structured key-value syntax.

Translation control: preserve qualifier keys and encoded values according to the PURL specification. Quality assurance: parse the query-style qualifier section rather than editing it as a sentence.

22. Subpath points inside a package

A PURL can include a subpath that identifies a path within a package. File and directory names may themselves be case-sensitive and encoded. Localization can easily turn a valid path into a nonexistent one.

Translation control: preserve subpath characters and separators. Quality assurance: compare the parsed subpath and, where possible, resolve it against the package contents.

23. Percent-encoding is syntax, not decoration

URLs and PURLs use character encoding rules. A sequence such as percent followed by hexadecimal digits represents encoded data. Replacing it with a visually similar character or decoding and re-encoding inconsistently can create a different identifier.

Translation control: use a standards-aware PURL library for normalization. Quality assurance: compare canonical representations after parsing.

24. PURL is not a human-facing product URL

A PURL may look like a URL, but its purpose is package identity rather than ordinary web navigation. Translators should not rewrite it to resemble a local storefront, documentation site or translated web slug.

Translation control: keep package identity separate from user-facing hyperlinks. Quality assurance: confirm that translated documentation still points to the original PURL in data fields.

25. PURL and CPE solve different identification problems

Software security systems can use several identifier schemes. Package URL identifies package coordinates, while other schemes such as CPE have their own syntax and use cases. Translation should not substitute one scheme for another because both refer to software.

Translation control: preserve the identifier namespace. Quality assurance: label crosswalks explicitly instead of presenting them as translations.

26. PURL and repository URLs are not interchangeable

A Git repository URL may host source code, while a PURL identifies a distributable package. One repository can produce several packages or versions. Translators should not replace one with the other to make the text “more readable.”

Translation control: keep source-location and package-identity fields separate. Quality assurance: verify which field downstream tools consume.

27. SBOM relationship types are semantics

Relationships such as dependency, containment, generation or other model-defined connections describe how components relate. Translating them into vague prose can destroy graph meaning if the machine enum is altered.

Translation control: preserve enum values and translate only display labels. Quality assurance: compare the relationship graph programmatically.

28. Direct and transitive dependencies should remain distinguishable

A top-level application may depend directly on one library which in turn depends on another. Flattening the graph into a translated list loses why a package is present and who introduced it.

Translation control: maintain edge direction and parent-child context. Quality assurance: reconstruct a dependency path in the target data.

29. Build-time and runtime components can have different relevance

Some components are used only during building or testing, while others ship into the final product. Translation should not collapse environment or scope labels if downstream security or compliance decisions depend on them.

Translation control: preserve scope enums and lifecycle metadata. Quality assurance: check whether the same component appears in different scopes.

30. Hashes are identity evidence, not text

Cryptographic hashes may verify files, packages or artifacts. They must never be reformatted with spaces, localized digits or line wrapping that changes the string.

Translation control: protect algorithm names and digest values. Quality assurance: recompute hashes where the original artifact is available.

31. Checksums and cryptographic hashes should not be “corrected” linguistically

A long hexadecimal digest can look like random text. Spell-checkers, smart punctuation and OCR tools can corrupt it. A translator has no basis to repair a missing character by intuition.

Translation control: pass digests through programmatically. Quality assurance: verify length, character set and, if possible, digest computation.

32. Vulnerability identifiers belong to a separate namespace

An SBOM can be enriched with CVE, CWE, advisory or vendor vulnerability information. Those identifiers have their own standards and should remain unchanged. This page does not compete with the existing eduKateSG vulnerability-identifier owner.

Translation control: translate vulnerability descriptions while preserving identifiers. Quality assurance: keep package-to-vulnerability relationships stable.

33. License findings can vary by package version

A package can change licensing between releases or include files under different licenses. Translation should preserve the exact version and the source of license conclusions rather than assuming a package name always has one license.

Translation control: keep evidence fields attached to the correct component version. Quality assurance: compare package, version, license expression and evidence together.

34. Declared license and concluded license can differ

SBOM and compliance systems may distinguish what a package declares from what an analyzer or reviewer concludes. Merging those labels in translation can make an automated inference look like the supplier’s own statement.

Translation control: preserve provenance terms such as declared, detected, concluded or asserted. Quality assurance: trace each license result back to its evidence source.

35. Supplier and originator names are identity fields

Company, project and person names can appear in SBOM metadata. Transliteration or translation may be appropriate for a display alias, but machine identity and legal names should remain traceable to the source.

Translation control: keep canonical names and translated display names in separate fields. Quality assurance: verify supplier identity through the same component record.

36. Download locations and repository locations are structured URLs

Software metadata frequently includes download URLs, repository URLs and homepage URLs. Translating URL paths or query parameters can break access and evidence links.

Translation control: protect complete URLs unless the publisher provides a localized canonical URL. Quality assurance: resolve final links and compare destinations.

37. File names and paths are usually protected

SBOMs can inventory files as well as packages. A file path can be case-sensitive and can contain characters significant to the build or operating system. Translating a filename inside the machine field can make it refer to another file or none at all.

Translation control: leave file paths unchanged. Quality assurance: compare the complete path set after localization.

38. Package managers impose ecosystem-specific rules

npm, Maven, PyPI, NuGet, Cargo and other ecosystems differ in naming, namespace and version conventions. A translation workflow should not apply one normalization rule to every package ecosystem.

Translation control: use the PURL type as a cue to the relevant ecosystem rules. Quality assurance: validate representative identifiers with ecosystem-specific libraries or registries.

39. Semantic-version strings still belong to data, not prose

Version ranges and semantic-version constraints can contain operators such as greater-than, less-than, caret or tilde. Replacing those with words or typographic look-alikes can change dependency resolution.

Translation control: protect constraint syntax. Quality assurance: parse the source and target constraint with the same package-manager semantics.

40. SBOM serial numbers and document namespaces are identifiers

SBOM formats can contain document-level identifiers or namespaces that distinguish one document from another. They may look like URLs or UUIDs but should not be localized.

Translation control: keep document identity outside translatable prose. Quality assurance: ensure references among documents still resolve correctly.

41. JSON, JSON-LD, RDF and other structured forms require schema protection

SPDX and related standards can be serialized in machine-readable formats. Translating property names, IRIs or enum values can invalidate the document even when the visible descriptions are excellent.

Translation control: localize only schema-approved literal text fields. Quality assurance: run formal validation after translation.

42. YAML and indentation-sensitive formats add another risk

Where SBOM or build metadata appears in YAML, spacing can affect structure. A translator who wraps lines or changes indentation while editing prose can alter the document.

Translation control: use structured editors rather than word processors. Quality assurance: parse the final file before delivery.

43. XML entities and escaping must survive

XML-based supply-chain data can use escaped characters and namespaces. Translating encoded markup as if it were visible text can create malformed output.

Translation control: keep markup outside the translation layer. Quality assurance: validate well-formedness and schema conformance.

44. Translation memory should be identifier-aware

SBOM descriptions and compliance notices repeat, but the component names, versions and license expressions can differ. A high fuzzy match may carry stale package metadata from another release.

Translation control: mask protected fields as variables in the CAT tool. Quality assurance: search the target for package or license strings absent from the current source.

45. Machine translation should receive placeholders, not raw identifiers

A robust pipeline replaces identifiers with stable placeholders, translates only the prose and restores the original values after translation. This reduces the chance that an engine changes punctuation, case or encoding.

Translation control: use deterministic placeholder mapping. Quality assurance: compare restored values against the source map.

46. Generative AI should not invent package coordinates

A model can suggest that a package probably lives in npm or PyPI, but a plausible coordinate is not evidence. It can also hallucinate versions that never existed.

Translation control: use AI for explanation, terminology and anomaly triage, not package identity. Quality assurance: require registry or source-system verification for every generated coordinate.

47. Generative AI should not simplify license expressions

A complex expression may look redundant to a language model. Removing parentheses or changing AND to OR for readability can change legal meaning.

Translation control: exclude formal expressions from generative rewriting. Quality assurance: compare parsed logical structure before and after the pipeline.

48. OCR is a poor source for SBOM machine fields

Software-supply-chain data should preferably come from the original digital artifact. Screenshots or PDFs can introduce OCR errors in hashes, package names and license identifiers.

Translation control: use structured exports whenever available. Quality assurance: validate every OCR-derived identifier against an authoritative source.

49. Right-to-left interfaces need code isolation

Arabic and Hebrew developer interfaces can show PURLs, hashes and SPDX expressions inside right-to-left prose. Without directional isolation, punctuation and operators may appear to move even when the underlying value is correct.

Translation control: isolate left-to-right technical strings. Quality assurance: test visual display, copy-paste and parser input.

50. Accessibility benefits from human explanations beside machine syntax

A screen reader can spell a PURL or license expression, but that may not help a non-specialist understand why the data matters. Interfaces can provide localized explanations while retaining the exact machine string.

Translation control: pair protected identifiers with readable accessible labels. Quality assurance: test both developer and non-developer user journeys.

51. Worked example: one npm package in an SBOM

An SBOM lists an npm package, its version, PURL, SHA-256 hash and SPDX license expression. The translated compliance report localizes the description and remediation note but leaves package name, version, PURL, hash and license expression unchanged.

Lesson: the most visible text is not always the most operationally important. Check: resolve the PURL and compare the hash and license expression with the source record.

52. Worked example: dual licensing

A component is available under one license OR another. The translated user guide explains the choice in natural language, while the SPDX expression retains the formal OR operator. Another component requires compliance with two licenses together and therefore uses AND.

Lesson: explanatory language can change; formal logic cannot. Check: parse both expressions and confirm their Boolean structure.

53. Worked example: package with qualifiers

A PURL identifies a package variant for a particular distribution or architecture through qualifiers. The translator does not translate the qualifier key or value. A separate localized label can explain that the package targets a particular operating environment.

Lesson: machine identity and user explanation belong in different fields. Check: canonicalize the PURL and compare parsed qualifiers.

54. Worked example: dependency graph

An application depends on library A, which depends on library B. A translated report describes the chain in the target language, but the underlying relationship graph remains A-to-B rather than accidentally becoming B-to-A.

Lesson: relational direction is data. Check: reconstruct at least one dependency path from the target SBOM.

55. Search intent: “translate SPDX license identifier”

A user may want the human meaning of an identifier, the full license name in another language, or help understanding a compound expression. The safe answer preserves the SPDX ID and translates the explanation around it.

Best practice: show the canonical identifier, explain the license name or expression in the target language, and avoid presenting a translated abbreviation as a replacement ID.

56. Search intent: “translate Package URL”

A PURL is not translated like a sentence. The useful response explains its components—type, namespace, name, version, qualifiers and subpath—while preserving the original string.

Best practice: parse first, explain second, and never edit the PURL to look more natural in the target language.

57. Search intent: “translate SBOM”

A user translating an SBOM usually needs localized descriptions, notices or compliance text while keeping the machine-readable inventory intact. The job is therefore selective localization rather than whole-file translation.

Best practice: classify fields by translatability, validate the final schema and compare component relationships and protected identifiers exactly.

58. Official reference route: SPDX

The SPDX project publishes the current specification and License List. Its License List page identifies standardized short identifiers and exceptions and, on 16 September 2026, lists version 3.29.0. The project’s specifications page lists SPDX 3.0 as the current stable document version.

Reference: SPDX specifications and SPDX License List.

59. Official reference route: Package URL

ECMA-427, first edition December 2025, defines Package URL syntax for identifying software packages across ecosystems and supply-chain use cases. The Package-URL community maintains the specification and type definitions.

Reference: ECMA-427 Package-URL and Package-URL specification repository.

60. Connection to the master translation architecture

This specialist article belongs beneath eduKateSG’s Master Art of Translation — Technical Translation System. The master owns the broad controls for specifications, terminology and change management; this page owns software-supply-chain identity and licensing syntax.

Readers strengthening technical word knowledge can use the Vocabulary Learning Hub, while this article remains narrowly focused on SPDX, PURL and SBOM data.

61. Release checklist

Before release, verify SPDX version, License List version, every license identifier, every AND/OR/WITH operator, parentheses, package name, version, PURL, qualifier, subpath, hash, component ID and relationship. Validate structured files, lock identifiers in CAT tools, resolve package coordinates where possible, compare component counts and graphs, test RTL display and ensure translated explanations remain attached to the correct component.

Then perform ordinary linguistic QA for technical clarity, legal caution, developer readability and consistent terminology. Schema validity and language quality are separate controls and both must pass.

62. Final rule: translate the software explanation, preserve the supply-chain evidence

Modern software is assembled from many components, and organizations increasingly rely on standardized identifiers and SBOMs to understand what they run. Translation should make that information accessible without weakening its technical precision. Preserve governed license syntax, package identity and graph relationships; translate the human explanation around them; and keep any normalization or migration as a separate, auditable engineering decision.

Discover more from eduKate Singapore

Subscribe now to keep reading and get access to the full archive.

Continue reading