Skip to Content
API ReferenceUI Labels

UI Labels

ModelViewer, SimpleModelViewer, and CompareViewer accept a labels prop to override built-in text. Buttons, tooltips, accessible names, tool hints, loading/error messages, and AR placement controls all use this dictionary.

Usage

import { ModelViewer, type ModelViewerLabels } from "@liveroom-tech/react-immersive"; const french: ModelViewerLabels = { guidedTour: "Visite guidée", startGuidedTour: "Commencer la visite", stopGuidedTour: "Terminer la visite", previous: "Précédent", next: "Suivant", tapToPlace: "Touchez pour placer", download: "Télécharger", recordingVideo: "Enregistrement : {progress}%", visibleEntries: "Éléments visibles : {count}", }; <ModelViewer modelUrl="/car.glb" licenseKey="your-license-key" labels={french} />;

Unspecified keys fall back to English. Empty strings are accepted. Labels are local to each viewer instance; switching dictionaries updates the UI without reloading the model. Values are plain text, not HTML or React nodes.

Placeholders and application translations

Dynamic text uses named placeholders such as {count}, {progress}, {name}, or {status}. Keep the placeholders you need in the translated string; you can reorder or repeat them. For example, objectCount: "Objets : {count}" displays Objets : 3. Placeholder values are substituted literally, and unsupported placeholders remain unchanged.

This dictionary does not format numbers or choose plural forms automatically. Your application can supply a dictionary from its own localization system. Annotation titles/descriptions, image alt text, link labels, category names, model/object metadata, custom panel content, and raw server/loader diagnostics remain application data. Automatically generated object action buttons also use the dictionary; labels on caller-supplied actions remain application data. API values such as "angle", "vertex", and environment preset IDs stay the same when their displayed labels change.

Default dictionary and types

import { DEFAULT_MODEL_VIEWER_LABELS, type ModelViewerLabels, type ModelViewerLabelKey, } from "@liveroom-tech/react-immersive/utils"; // Also exported from the main package and /simple-model-viewer. type Labels = Partial<Record<ModelViewerLabelKey, string>>; const englishTour = DEFAULT_MODEL_VIEWER_LABELS.guidedTour;

Complete catalog

Only labels for enabled controls appear in a viewer. The following list is shared by both components. Placeholder names in defaults show the values supplied by the viewer.

KeyEnglish default
actionChangeColorChange Color
actionChangeLightColorChange Light Color
actionChangeMaterialChange Material
actionsActions
actionSetBrightnessSet Brightness
actionToggleLightToggle Light
actionToggleVisibilityToggle Visibility
addedAdded
addTextAdd text
allAll
ambientLightColorAmbient Light Color
ambientLightIntensityAmbient Light Intensity
angleAngle
angleFirstArmHintPick the first arm
angleNewHintPick a point to start a new angle
angleSecondArmHintPick the second arm
angleVertexHintPick the angle's vertex
annotationCategoriesAnnotation categories
annotationMarkerAnnotation {id}: {title}
annotationsAnnotations
annotationTitlePlaceholderTitle *
areaArea
areaCornersHintPick polygon corners in order, then Finish area
areaDistinctPointsArea points must be distinct.
areaEdgesCrossArea edges must not cross or touch each other.
areaMinimumPointsPick at least three points to finish the area.
areaNewHintPick a point to start a new area
areaNotPlanarArea points must lie on one plane.
areaStraightLineArea points must not lie on one straight line.
areaZeroThe polygon has no measurable area.
arFindSurfaceMove your device over a flat surface
arGestureHintPinch to resize · Twist to rotate
arReleaseToPlaceRelease to place
arRelocateRelocate
arScanCodeScan the code and choose AR.
autoAuto
autoRotateAuto Rotate
backgroundBackground
backgroundColorBackground Color
bindingMismatchMany{count} object bindings don't match this model
bindingMismatchOne1 object binding doesn't match this model
cameraControllerCamera controller
cameraControllerSettingsCamera controller settings
cameraKeyboardHelp3D view. Arrow keys orbit, Shift with Up or Down zooms, and W, A, S, D, Space and C move the camera.
cancelCancel
checkingYourLicenseKeyChecking your license key...
chooseImageChoose image
chooseModelChoose model
clearClear
clearMeasurementsClear measurements
closeClose
closeAnnotationClose annotation
closePanelClose panel
closePhoneHandoffClose phone handoff
closeSceneObjectsPanelClose scene objects panel
colorColor
colourColour
compareAfterAfter
compareBeforeBefore
compareDividerComparison divider
compareDividerValue{before} {percent}%, {after} {rest}%
confirmTexturePositionConfirm this texture position and exit positioning mode
contextLostMessageThe graphics connection was interrupted. The viewer will rebuild when it returns, or you can reload it now.
contextLostTitle3D view interrupted
contextRestoringMessageRebuilding the 3D view. Please wait…
contextRestoringTitleReloading viewer…
decalAdded{count} added
decalDirectionMissingNo visible surface in that direction. Try another arrow or rotate the view.
decalDragHintDrag the decal on the object. Release to save; Escape to cancel.
decalImageImage {index}
decalNudgeControlsMove decal in small steps
decalNudgeHintClick to fine-tune · Hold to move
decalSurfaceMissingCould not find a surface on this object for the decal.
decalTextText {index}
descriptionDescription
directLightColorDirect Light Color
directLightIntensityDirect Light Intensity
disableUVCheckerDisable UV checker
dismissDismiss
distanceDistance
distanceHintPick points on the model to measure distances
doneDone
donePositioningDone positioning
downdown
downloadDownload
downloadGLBDownload GLB
downloadOptionsDownload options
downloadPNGDownload PNG
downloadUVLayoutDownload UV Layout
dragTheDecalAcrossTheObjectsSurfaceDrag the decal across the object's surface
dropModelHintDrag and drop {formats} here
enableUVCheckerEnable UV checker
enterAREnter AR
enterFullscreenEnter fullscreen
enterVREnter VR
environmentEnvironment
environmentApartmentapartment
environmentCitycity
environmentDawndawn
environmentForestforest
environmentLobbylobby
environmentNightnight
environmentParkpark
environmentStudiostudio
environmentSunsetsunset
environmentWarehousewarehouse
exitFullscreenExit fullscreen
explodeAmountExplode amount
explodedViewExploded view
exportingExporting…
exposureExposure
failedToLoadPleaseContactTheSiteAdministratorFailed to load. Please contact the site administrator.
finishAreaFinish area
fullscreenEnterFailedCould not enter fullscreen. Check your browser or iframe fullscreen permissions and try again.
fullscreenExitFailedCould not exit fullscreen. Press Escape to exit.
guidedTourGuided Tour
hideHide
hideObjectHide {name}
imageImage
imageToAddImage to add
invalidLicenseInvalid License
isolateIsolate
isolatedObjectIsolated: {name}
isolatedObjectsIsolated: {count} objects
isolateObjectIsolate {name}
keepTheOtherSideKeep the other side
largeModelWarningVery large model ({millions}M triangles) — it may render and move slowly on this device, and click/hover selection on the model is disabled. Use the objects panel to select parts.
learnMoreLearn more
leftleft
licenseHasBeenRevokedOrHasExpiredLicense has been revoked or has expired
lightingLighting
loadErrorDeniedThe server refused access to the file ({status}). Check that the file is public, or that a signed URL hasn't expired.
loadErrorHtmlThe server sent back a web page instead of a model. There's probably no file at this path: many servers answer a missing file with their index.html.
loadErrorInvalidExplicitFormatThe file couldn't be read as {format}. Check that it's a valid {format} file and that modelFormat matches it.
loadErrorInvalidFileThe file couldn't be read as {format}. Check that it's a valid {format} file.
loadErrorMissingFormatThe file couldn't be read as {format}. The URL has no file extension, so set modelFormat to the file's format.
loadErrorNetworkThe download was blocked or failed. Check that the URL is correct and, if the file is on another domain, that its server allows cross-origin requests (CORS) from this site.
loadErrorNotFoundNothing was found at this address ({status}). Check that modelUrl points to the file.
loadErrorPointCloudThis PLY file is a point cloud: it has points but no faces, and the viewer shows meshes. Turn it into a mesh first, for example with MeshLab or Blender.
loadErrorStatusThe server responded with {status} when the file was requested.
loadErrorTitleThis model couldn't be loaded
loadingModelLoading model...
materialMaterial
materialVariantsMaterial variants
measurementAngleDistinctPick a point away from the angle's vertex.
measurementReferenceFaceRequiredPick a triangle face to define the reference plane.
measurementSnappingMeasurement snapping
measurementToolMeasurement tool
measurementTooManyPointsFinish or clear this measurement before adding more points.
missingUVsAreShownInMagentaMissing UVs are shown in magenta.
moveMove
moveBackwardMove backward
moveDecalMove decal {direction}
moveDecalOnSurfaceMove {direction} on the visible surface
moveForwardMove forward
moveLeftMove left
moveRightMove right
nextNext
nextAnnotationNext annotation
noneAddedYetNone added yet
noSnappingNo snapping
noTextureAppliedNo texture applied
noTextureCoordinatesThis part has no texture coordinates, so an image can't be placed on it.
objectCount{count} objects
objectNavigatorObjects in the 3D view
objectNavigatorHintArrow keys browse · Enter selects · Esc clears
objectNavigatorPosition{position} of {count}
objectSelected{name} selected
offsetXOffset X
offsetYOffset Y
okOK
openOnPhoneOpen on phone
openPanelOpen panel
openSceneObjectsPanelOpen scene objects panel
openThisExperienceOnAPhoneForAROpen this experience on a phone for AR
orbitControlOrbit Control
pauseCinematicPause cinematic
playCinematicPlay cinematic
pointLockPoint Lock
pointToPlanePoint to plane
pointToPlaneFaceHintPick the reference face
pointToPlaneNewHintPick a face to start a new measurement
pointToPlanePointHintPick a point to measure its perpendicular distance
positionPosition
preparingLargeModelPreparing large model ({millions}M triangles) — the first display can take a while on this device...
previousPrev
previousAnnotationPrevious annotation
qrCodeToOpenThisModelOnAPhoneQR code to open this model on a phone
recordCinematicVideoRecord cinematic video
recordingVideoRecording video · {progress}%
recordTurntableVideoRecord turntable video
releaseToLoadYourModelRelease to load your model
reloadViewerReload viewer
removeRemove
removeSectionCutRemove section cut
removeTextureRemove texture
replaceImageReplace image
resetCameraViewReset camera view
rightright
rotationRotation
sceneObjectsSCENE OBJECTS
sceneSettingsScene Settings
searchNodesLabelsSearch nodes, labels
searchObjectsSearch objects
sectionAxisSection axis
sectionCutSection cut
sectionPositionSection position
selectionClearedSelection cleared
showShow
showAllShow all
showAllObjectShow all {name}
showObjectShow {name}
simpleLargeModelWarningVery large model detected ({millions}M triangles) — it may render and move slowly on this device, and click/hover selection on the model is disabled. Use the scene objects panel to select parts.
sizeSize
snapAutoSnap: auto
snapEdgeSnap: edge
snapVertexSnap: vertex
startGuidedTourStart guided tour
startMeasuringStart measuring
stopCinematicAndResetCameraStop cinematic and reset camera
stopGuidedTourStop guided tour
stopMeasuringStop measuring
tapToPlaceTap to place
textText
textColourText colour
textToAddText to add
textureOffsetHintDouble-click the object in the preview to drag its texture directly (scroll to zoom), or edit its offset numerically.
texturePositionTexture position
texturePositioningHintDrag to move · Scroll to zoom · Click elsewhere to finish
texturePositioningStartHintDouble-click to move or zoom
texturePreviewtexture preview
toggleBoundingDimensionsToggle bounding dimensions
turnTurn
uncategorizedUncategorized
undoMeasurementPointUndo measurement point
upup
uploadedModelUploaded model
uploadImageUpload image
uvCoordinatesMissingThis model does not contain UV coordinates.
uvExportFailedCould not create the UV layout archive.
verifyingLicenseVerifying License
videoAlreadyRecordingA video export is already in progress.
videoBitrateInvalidVideo bitrate must be a positive number.
videoContextLostVideo export stopped because the WebGL context was lost.
videoDidNotStartVideo recording did not start.
videoDurationInvalidVideo duration must be greater than 0 and at most 300 seconds.
videoEmptyThe browser produced an empty video.
videoEncodingFailedThe browser could not encode the video.
videoExitXRExit the XR session before recording a video.
videoExportFailedCould not export the video.
videoFormatVideo format
videoFrameRateInvalidVideo frame rate must be between 1 and 60.
videoGIFUnsupportedVideo recording as GIF is not supported in this browser.
videoGifWidthInvalidGIF width must be a whole number of pixels from 16 to 4096.
videoMP4UnsupportedVideo recording as MP4 is not supported in this browser.
videoNotReadyViewer not ready for video export.
videoPathRequiredEnable a cinematic camera path before recording it.
videoTimedOutVideo export timed out. Keep the viewer tab visible while recording.
videoUnsupportedVideo recording is not supported in this browser.
videoWebMUnsupportedVideo recording as WEBM is not supported in this browser.
viewIn3DView in 3D
viewInARView in AR
viewThisModelInARWithAppleQuickLookView this model in AR with Apple Quick Look
viewThisModelInVRView this model in VR
viewThisModelInYourSpaceView this model in your space
visibleEntries{count} visible entries
yourTextYour text