GE Lua Documentation

Press F to search!

translateLanguage

Definition


-- @/=[C]:-1
function translateLanguage(...)

Callers

@/lua/ge/extensions/career/modules/milestones/general.lua
      local name = c.getLabel(s, -1, -1)
      if type(name) == "table" then name = translateLanguage(name.txt,name.txt, true) .. (dumps(name.context or {})) end
      local target = c.getTarget(s)
      local desc = c.getDescription(s, -1, target)
      if type(desc) == "table" then desc = translateLanguage(desc.txt,desc.txt, true) .. (dumps(desc.context or {})) end
@/lua/ge/extensions/scenario/scenarios.lua

  log('D', logTag, 'Starting scenario : '..tostring(translateLanguage(scenario.name, scenario.name)))
  log('D', logTag, 'Scenario path : '..tostring(scenario.sourceFile))
@/lua/ge/extensions/editor/missionEditor/additionalAttributes.lua
  end
  if self.mission.grouping.label ~= "" and translateLanguage(self.mission.grouping.label, self.mission.grouping.label, true) == self.mission.grouping.label then
    table.insert(issues, {label = 'Grouping Label has no translation!', severity='minor'})
  if not self._groupLabelTranslated then
    self._groupLabelTranslated = translateLanguage(self.mission.grouping.label, noTranslation, true)
  end
      local m = listById[mId]
      im.Text(string.format("%s - %s - %s",os.date('%Y-%m-%d %H:%M:%S', m.date), translateLanguage(m.name, m.name, true), m.id) )
      im.tooltip("Click to remove")
@/lua/ge/extensions/render/openxr.lua
  translationId = "ui.openXR.errors."..(translationId or err)
  log("E", "", "openXR error detected: "..translateLanguage(translationId, "", false))
  guihooks.trigger("toastrMsg", {type = "error", title = "ui.openXR.errorsTitle", msg = translationId, config = { closeButton = true, timeOut = 0, extendedTimeOut = 0 } })
@/lua/ge/extensions/ui/apps/minimap/additionalInfo.lua
      if string.lower(lvl.levelName) == getCurrentLevelIdentifier() then
        locationName = translateLanguage(lvl.title, lvl.title, true)
      end
@/lua/ge/extensions/editor/missionEditor/objectives.lua
          local txt = self.mission.careerSetup.starOutroTexts[key]
          if translateLanguage(txt, txt, true) == txt then
            table.insert(issues,  {label = "Star " .. key .. " is not translated.", severity = "error"})
      local txt = self.mission.careerSetup.starOutroTexts[key]
      if translateLanguage(txt, txt, true) == txt then
        table.insert(issues,  {label = "Star " .. key .. " is not translated.", severity = "error"})
  if type(l) == "string" then
    return translateLanguage(l,l, true)
  end
  if type(l) == "table" then
    return translateLanguage(l.txt, l.txt, true)
  end
  if self.mission.careerSetup.defaultStarKeys[defaultIndex] then
    im.tooltip(translateLanguage(self.missionInstance.starLabels[self.mission.careerSetup.defaultStarKeys[defaultIndex]],self.missionInstance.starLabels[self.mission.careerSetup.defaultStarKeys[defaultIndex]], true))
  end
    if usingDefault then
      im.tooltip("Using Default Translation: " ..self.missionInstance.defaultStarOutroTexts[key].." : " ..translateLanguage(self.missionInstance.defaultStarOutroTexts[key], self.missionInstance.defaultStarOutroTexts[key], true))
    else
    else
      im.tooltip("Available Default Translation: " ..self.missionInstance.defaultStarOutroTexts[key].." : " ..translateLanguage(self.missionInstance.defaultStarOutroTexts[key], self.missionInstance.defaultStarOutroTexts[key], true))
    end
  if not self._translatedTexts[key] then
    self._translatedTexts[key] = translateLanguage(self.mission.careerSetup.starOutroTexts[key] or "", noTranslation, true)
  end
@/lua/ge/extensions/core/recoveryPrompt.lua
        label = function(options, target)
          return string.format("%s", translateLanguage(garage.name, garage.name, true))
        end,
        label = function(options)
          return string.format("%s", translateLanguage(garage.name, garage.name, true))
        end,
@/lua/ge/extensions/gameplay/missions/missionTypes/editorHelper.lua
    if not e._translated then
      e._translated = translateLanguage(ffi.string(e.ac), noTranslation)
    end
@/lua/ge/extensions/career/modules/insurance/repairScreen.lua
  data.repairOptions.noInsuranceRepairData.repairTimeOptions = {
    name = translateLanguage("insurance.perks.repairTime.name", "Repair time", true),
    choiceType = "multiple",
@/lua/ge/extensions/flowgraph/modules/uiModule.lua
    type = "crashTestStepDetails",
    header = translateLanguage("missions.crashTest.general.stagePoints", "missions.crashTest.general.stagePoints", true),
    stepScoreData = stepDetails.stepScoreData,
    type = "textPanel",
    header = translateLanguage("missions.drift.general.perfStats", "missions.drift.general.perfStats", true),
    attempt = {
    type = "textPanel",
    header = translateLanguage("missions.drift.general.tiers", "missions.drift.general.tiers", true),
    attempt = {
    type = "textPanel",
    header = translateLanguage("missions.drift.general.events", "missions.drift.general.events", true),
    attempt = {
@/gameplay/missionTypes/rallyLoop/editor.lua
  for _, mission in ipairs(missions) do
    local translatedName = translateLanguage(mission.name, mission.name, true)
    local displayName = string.format("%s (%s)", translatedName, mission.id)
@/gameplay/missionTypes/aiRace/customNodes/getRankStringNode.lua
  if self.pinIn.placement.value >= 1 and self.pinIn.placement.value <= 10 then -- top 10 placements have translation strings
    self.pinOut.rankStr.value = translateLanguage('missions.aiRace.general.rank'..self.pinIn.placement.value, tostring(self.pinIn.placement.value))
  else
@/lua/ge/extensions/tech/techCore.lua
  if name == nil then return nil end
  name = translateLanguage(name, name, true)
  local result = name
  for match, translationString in name:gmatch('(%{%{\'(.+)\' | translate%}%})') do
    result = result:gsub(match, translateLanguage(translationString, translationString, true))
  end
@/lua/ge/extensions/trackbuilder/trackBuilder.lua
  if im.Button("|<",style.thinButtonSize) then tbFunctions.navigate('first') end
  im.tooltip(translateLanguage("ui.trackBuilder.selection.first", "Select First Piece"))
  im.SameLine()
  if im.Button("<",style.thinButtonSize) then tbFunctions.navigate(-1) end
  im.tooltip(translateLanguage("ui.trackBuilder.selection.previous", "Select Previous Piece"))
  im.SameLine()
  end
  im.tooltip(translateLanguage("ui.trackBuilder.camera.focus", 'Focus camera on selected piece'))
  im.SameLine()
  if im.Button(">",style.thinButtonSize) then tbFunctions.navigate(1) end
  im.tooltip(translateLanguage("ui.trackBuilder.selection.next", "Select Next Piece"))
  im.SameLine()
  if im.Button(">|",style.thinButtonSize) then tbFunctions.navigate('last') end
  im.tooltip(translateLanguage("ui.trackBuilder.selection.last", "Select Last Piece"))
end
  end
  im.tooltip(translateLanguage("ui.trackBuilder.tooltip.modify", "Modify"))
  im.SameLine()
  end
  im.tooltip(translateLanguage("ui.trackBuilder.tooltip.remove", "Remove"))
  im.SameLine()
  end
  im.tooltip(translateLanguage("ui.trackBuilder.tooltip.reset", "Reset"))
  if hasInterpolation then
    im.SameLine()
    if im.Checkbox(translateLanguage("ui.trackBuilder.modifier.inverted", "Inverted") .. "##"..name, modifierValues[name].inverted) then
      tbFunctions.modifierChange(name)

  im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.matEditor.texture", 'Texture'))
  im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.matEditor.base", 'Base'))
  im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.matEditor.texture", 'Texture'))
  im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.matEditor.base", 'Base'))
  if im.ImageButton("##imageButton1", materialSettings.base.texId, im.ImVec2(64,64), im.ImVec2Zero, im.ImVec2One, im.ImColorByRGB(0,0,0,0).Value, im.ImColorByRGB(255,255,255,255).Value) then end

  im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.matEditor.decal", "Decal"))
  im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.matEditor.center", "Center"))
  im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.matEditor.decal", "Decal"))
  im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.matEditor.center", "Center"))
  if im.ImageButton("##imageButton2", materialSettings.center.texId, im.ImVec2(64,64), im.ImVec2Zero, im.ImVec2One, im.ImColorByRGB(255,0,0,0).Value, im.ImColorByRGB(255,255,255,255).Value) then end
  im.TextColored(style.textColor,"")
  im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.matEditor.border", "Border"))
  if im.ImageButton("##imageButton3", materialSettings.border.texId, im.ImVec2(64,64), im.ImVec2Zero, im.ImVec2One, im.ImColorByRGB(0,0,0,0).Value, im.ImColorByRGB(255,255,255,255).Value) then end

  if im.TreeNode1(translateLanguage("ui.trackBuilder.matEditor.paint", 'Paint')) then
    local changed = false
    local changed = false
    if im.SmallButton(translateLanguage("ui.trackBuilder.matEditor.selectAll", "Select All")) then setAllPaintModes(true) changed = true end
    im.SameLine()
    im.SameLine()
    if im.SmallButton(translateLanguage("ui.trackBuilder.matEditor.deselectAll", "Deselect All")) then setAllPaintModes(false) changed = true end

    if im.Checkbox(translateLanguage("ui.trackBuilder.matEditor.drawLeftBorder", "Draw Left Border"), materials.materialInfo.leftMesh.paint) then changed = true end
    if im.Checkbox(translateLanguage("ui.trackBuilder.matEditor.drawCenter", "Draw Center"), materials.materialInfo.centerMesh.paint) then changed = true end
    if im.Checkbox(translateLanguage("ui.trackBuilder.matEditor.drawLeftBorder", "Draw Left Border"), materials.materialInfo.leftMesh.paint) then changed = true end
    if im.Checkbox(translateLanguage("ui.trackBuilder.matEditor.drawCenter", "Draw Center"), materials.materialInfo.centerMesh.paint) then changed = true end
    if im.Checkbox(translateLanguage("ui.trackBuilder.matEditor.drawRightBorder", "Draw Right Border"), materials.materialInfo.rightMesh.paint) then changed = true end
    if im.Checkbox(translateLanguage("ui.trackBuilder.matEditor.drawCenter", "Draw Center"), materials.materialInfo.centerMesh.paint) then changed = true end
    if im.Checkbox(translateLanguage("ui.trackBuilder.matEditor.drawRightBorder", "Draw Right Border"), materials.materialInfo.rightMesh.paint) then changed = true end

    if im.Checkbox(translateLanguage("ui.trackBuilder.matEditor.drawLeftWall", "Draw Left Wall"), materials.materialInfo.leftWall.paint) then changed = true end
    if im.Checkbox(translateLanguage("ui.trackBuilder.matEditor.drawCeiling", "Draw Ceiling"), materials.materialInfo.ceilingMesh.paint) then changed = true end
    if im.Checkbox(translateLanguage("ui.trackBuilder.matEditor.drawLeftWall", "Draw Left Wall"), materials.materialInfo.leftWall.paint) then changed = true end
    if im.Checkbox(translateLanguage("ui.trackBuilder.matEditor.drawCeiling", "Draw Ceiling"), materials.materialInfo.ceilingMesh.paint) then changed = true end
    if im.Checkbox(translateLanguage("ui.trackBuilder.matEditor.drawRightWall", "Draw Right Wall"), materials.materialInfo.rightWall.paint) then changed = true end
    if im.Checkbox(translateLanguage("ui.trackBuilder.matEditor.drawCeiling", "Draw Ceiling"), materials.materialInfo.ceilingMesh.paint) then changed = true end
    if im.Checkbox(translateLanguage("ui.trackBuilder.matEditor.drawRightWall", "Draw Right Wall"), materials.materialInfo.rightWall.paint) then changed = true end
    if changed then

  if im.TreeNode1(translateLanguage("ui.trackBuilder.matEditor.baseTextures", "Base Textures")) then
    im.BeginChild1("baseTextureChild", im.ImVec2(-1,160))

  if im.TreeNode1(translateLanguage("ui.trackBuilder.matEditor.decalTextures", "Decal Textures")) then
    im.BeginChild1("decalTextureChild",im.ImVec2(-1,160))
local function bordersAndCenters()
  borderDrawSelector(translateLanguage("ui.trackBuilder.borders.leftBorderShape", 'Left Border Shape'),'leftMesh',borders, bordersTbl, 130)
  im.Separator()
  im.Separator()
  borderDrawSelector(translateLanguage("ui.trackBuilder.borders.rightBorderShape", 'Right Border Shape'),'rightMesh',borders, bordersTbl, 130)
  im.Separator()
  im.PushItemWidth(120)
  im.TextColored(style.textColor, translateLanguage("ui.trackBuilder.wallsCeiling.leftWall", "Left Wall"))
  if im.Checkbox(translateLanguage("ui.trackBuilder.wallsCeiling.active", "Active") .. "##leftWall", modifierValues.leftWall.active) then
  im.TextColored(style.textColor, translateLanguage("ui.trackBuilder.wallsCeiling.leftWall", "Left Wall"))
  if im.Checkbox(translateLanguage("ui.trackBuilder.wallsCeiling.active", "Active") .. "##leftWall", modifierValues.leftWall.active) then
      tbFunctions.modifierChange("leftWall")
  local x = im.GetCursorPosX()
  if im.DragFloat(translateLanguage("ui.trackBuilder.wallsCeiling.height", "Height") .. "##left", modifierValues.leftWall.value,0.1) then
    if modifierValues.leftWall.value[0] > 50 then
  im.Separator()
  im.TextColored(style.textColor, translateLanguage("ui.trackBuilder.wallsCeiling.rightWall", "Right Wall"))
  if im.Checkbox(translateLanguage("ui.trackBuilder.wallsCeiling.active", "Active") .. "##rightWall", modifierValues.rightWall.active) then
  im.TextColored(style.textColor, translateLanguage("ui.trackBuilder.wallsCeiling.rightWall", "Right Wall"))
  if im.Checkbox(translateLanguage("ui.trackBuilder.wallsCeiling.active", "Active") .. "##rightWall", modifierValues.rightWall.active) then
    tbFunctions.modifierChange("rightWall")
  x = im.GetCursorPosX()
  if im.DragFloat(translateLanguage("ui.trackBuilder.wallsCeiling.height", "Height") .. "##right", modifierValues.rightWall.value,0.1) then
    if modifierValues.rightWall.value[0] > 50 then
  im.Separator()
  im.TextColored(style.textColor, translateLanguage("ui.trackBuilder.wallsCeiling.ceiling", "Ceiling"))
  if im.Checkbox(translateLanguage("ui.trackBuilder.wallsCeiling.active", "Active") .. "##ceilingMesh", modifierValues.ceilingMesh.active) then
  im.TextColored(style.textColor, translateLanguage("ui.trackBuilder.wallsCeiling.ceiling", "Ceiling"))
  if im.Checkbox(translateLanguage("ui.trackBuilder.wallsCeiling.active", "Active") .. "##ceilingMesh", modifierValues.ceilingMesh.active) then
    tbFunctions.modifierChange("ceilingMesh")
  x = im.GetCursorPosX()
  if im.DragFloat(translateLanguage("ui.trackBuilder.wallsCeiling.height", "Height") .. "##ceil", modifierValues.ceilingMesh.value,0.1) then
    if modifierValues.ceilingMesh.value[0] > 50 then

  im.TextColored(style.textColor,string.format(translateLanguage("ui.trackBuilder.base.banking", "Banking") .. ": %.1f°", modifierValues.bank.value[0]))

  im.TextColored(style.textColor,string.format(translateLanguage("ui.trackBuilder.base.height", "Height") .. ": %.1fm", modifierValues.height.value[0]))
  im.SameLine()
  if im.Checkbox(translateLanguage("ui.trackBuilder.modifier.inverted", "Inverted") .. "##"..'height', modifierValues['height'].inverted) then
    tbFunctions.modifierChange('height')

  im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.base.width", "Width") .. ": " .. modifierValues.width.value[0]..'m')
  smallSetButtons("width",{0,1,2,5,10,15,20},im.ImVec2(30,0))
  saveSettings.fogValue[0] = fog
  im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.trackSettings.environmentSettings", "Environment settings"))

  im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.trackSettings.time", 'Time'))
  if im.SliderFloat(translateLanguage("ui.trackBuilder.trackSettings.time", "Time"),saveSettings.timeOfDay , 00, 1, "%.2f") then
  im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.trackSettings.time", 'Time'))
  if im.SliderFloat(translateLanguage("ui.trackBuilder.trackSettings.time", "Time"),saveSettings.timeOfDay , 00, 1, "%.2f") then
    tod.time = saveSettings.timeOfDay[0]
  end
  im.tooltip(translateLanguage("ui.trackBuilder.tooltip.morning", "Morning"))
  end
  im.tooltip(translateLanguage("ui.trackBuilder.tooltip.noon", "Noon"))
  end
  im.tooltip(translateLanguage("ui.trackBuilder.tooltip.night", "Night"))
  im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.trackSettings.azimuth", 'Azimuth'))
  im.tooltip(translateLanguage("ui.trackBuilder.tooltip.night", "Night"))
  im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.trackSettings.azimuth", 'Azimuth'))
  if im.SliderFloat(translateLanguage("ui.trackBuilder.trackSettings.azimuth", 'Azimuth'),saveSettings.azimuthValue,0,2*math.pi,"%.2f") then
  im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.trackSettings.azimuth", 'Azimuth'))
  if im.SliderFloat(translateLanguage("ui.trackBuilder.trackSettings.azimuth", 'Azimuth'),saveSettings.azimuthValue,0,2*math.pi,"%.2f") then
    if saveSettings.azimuthValue[0] ~=0  then

  im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.trackSettings.fog", 'Fog'))
  if im.SliderFloat(translateLanguage("ui.trackBuilder.trackSettings.fog", 'Fog'),saveSettings.fogValue, 0, 0.5, "%.8f",6) then
  im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.trackSettings.fog", 'Fog'))
  if im.SliderFloat(translateLanguage("ui.trackBuilder.trackSettings.fog", 'Fog'),saveSettings.fogValue, 0, 0.5, "%.8f",6) then
    core_environment.setFogDensity(saveSettings.fogValue[0])
local function raceSettings()
  im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.trackSettings.raceSettings", 'Race Settings'))
  if im.Checkbox(translateLanguage("ui.trackBuilder.trackSettings.reversible", "Reversible"),saveSettings.allowReverse) then
  im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.trackSettings.raceSettings", 'Race Settings'))
  if im.Checkbox(translateLanguage("ui.trackBuilder.trackSettings.reversible", "Reversible"),saveSettings.allowReverse) then
    tb.setReversible(saveSettings.allowReverse[0])
  end
  if im.InputInt(translateLanguage("ui.trackBuilder.trackSettings.defaultLaps", "Default Laps"),saveSettings.lapCount) then
    if saveSettings.lapCount[0] < 1 then saveSettings.lapCount[0] = 1 end
local function trackPositionSettings()
  im.TextColored(style.textColor, translateLanguage("ui.trackBuilder.trackSettings.trackTransform", "Track Transform"))

  if im.DragFloat3(translateLanguage("ui.trackBuilder.trackSettings.position", "Position"),trackPositionValues.position,0.1) then
    tb.setTrackPosition(trackPositionValues.position[0],trackPositionValues.position[1],trackPositionValues.position[2],trackPositionValues.rotation[0])
  end
  if im.DragFloat(translateLanguage("ui.trackBuilder.trackSettings.rotation", "Rotation"),trackPositionValues.rotation) then
    tb.setTrackPosition(trackPositionValues.position[0],trackPositionValues.position[1],trackPositionValues.position[2],trackPositionValues.rotation[0])
  local size = im.ImVec2(im.GetWindowWidth()-2,24)
  if im.Button(translateLanguage("ui.trackBuilder.trackSettings.alignTrackToCam", "Align Track to Camera"),size) then
    tb.rotateTrackToCamera()
  end
  if im.Button(translateLanguage("ui.trackBuilder.trackSettings.positionTrackBeforeCam", "Position Track before Camera"),size) then
    tb.positionTrackBeforeCamera()
  im.Separator()
  if im.Button(translateLanguage("ui.trackBuilder.trackSettings.alignTrackToVehicle", "Align Track to Vehicle"),size) then
    tb.rotateTrackToTrackVehicle()
  end
  if im.Button(translateLanguage("ui.trackBuilder.trackSettings.positionTrackAboveVehicle", "Position Track above Vehicle"),size) then
    tb.positionTrackAboveVehicle()
local function saveInputButtons()
  im.TextColored(style.textColor, translateLanguage("ui.trackBuilder.saveLoad.saveTrack", "Save Track"))
  im.InputText(translateLanguage("ui.trackBuilder.saveLoad.filename", "Filename"),saveSettings.saveStr)
  im.TextColored(style.textColor, translateLanguage("ui.trackBuilder.saveLoad.saveTrack", "Save Track"))
  im.InputText(translateLanguage("ui.trackBuilder.saveLoad.filename", "Filename"),saveSettings.saveStr)

  local text = translateLanguage("ui.trackBuilder.saveLoad.save", "Save Track")
  local previewText = translateLanguage("ui.trackBuilder.saveLoad.createPreview", "Create Preview")
  local text = translateLanguage("ui.trackBuilder.saveLoad.save", "Save Track")
  local previewText = translateLanguage("ui.trackBuilder.saveLoad.createPreview", "Create Preview")
  local name = ffi.string(saveSettings.saveStr)
    if file == name then
      text = translateLanguage("ui.trackBuilder.saveLoad.overwrite", "Overwrite Track")
      allowScreenshot = true
        if preview == name then
          previewText = translateLanguage("ui.trackBuilder.saveLoad.overwritePreview", "Overwrite Preview")
          allowPacking = true
    saveSettings.previewNames = tb.getPreviewNames()
    saveSettings.infoText = translateLanguage("ui.trackBuilder.saveLoad.trackWrittenTo", "Successfully saved track to ") .."'/trackEditor/"..ffi.string(saveSettings.saveStr)..".json'!"
  end
      screenshotTaken = false
      saveSettings.infoText = translateLanguage("ui.trackBuilder.saveLoad.previewCreated", "Successfully created preview ") .."'/trackEditor/".. ffi.string(saveSettings.saveStr)..".jpg'!"
    end
  if allowPacking then
    if im.Button(translateLanguage("ui.trackBuilder.saveLoad.packToMod", "Pack to Mod"), im.ImVec2(264,20)) then
      local modName = "mods/TrackBuilder_" .. ffi.string(saveSettings.saveStr)..".zip"
      zip:close()
      saveSettings.infoText = translateLanguage("ui.trackBuilder.saveLoad.modSaved", "Successfully packed track and preview to mod file  ") .."'/"..modName.."'!"
    end
local function additionalSaveSettings()
  im.TextColored(style.textColor, translateLanguage("ui.trackBuilder.saveLoad.description", "Description"))
  im.InputTextMultiline("##description", saveSettings.description, im.GetLengthArrayCharPtr(saveSettings.description), im.ImVec2(-1.0, im.GetTextLineHeight() * 3))
  im.InputTextMultiline("##description", saveSettings.description, im.GetLengthArrayCharPtr(saveSettings.description), im.ImVec2(-1.0, im.GetTextLineHeight() * 3))
  im.Combo1(translateLanguage("ui.trackBuilder.saveLoad.difficulty", 'Difficulty'), saveSettings.difficulty, difficulty)
  if not isOnGlowCity then
    im.Checkbox(translateLanguage("ui.trackBuilder.saveLoad.saveTimeSettings", 'Save time settings'),saveSettings.saveEnvironment)
  end

  im.Checkbox(translateLanguage("ui.trackBuilder.saveLoad.saveOnThisMap", "Save on this map"),saveSettings.saveOnMap)
end
local function loadTrackList()
  im.TextColored(style.textColor, translateLanguage("ui.trackBuilder.saveLoad.loadTrack", "Load Track"))
  if im.Button('X ') then im.ImGuiTextFilter_Clear(loadFilesFilter) end
  im.SameLine()
  im.ImGuiTextFilter_Draw(loadFilesFilter, translateLanguage("ui.trackBuilder.saveLoad.search", "Search"), 120)
  im.BeginChild1("LoadBox")
        ffi.copy(saveSettings.saveStr, file)
        saveSettings.infoText = translateLanguage("ui.trackBuilder.saveLoad.trackLoaded", "Loaded track ") .."'"..ffi.string(saveSettings.saveStr).."'!"
      end
        end
        im.tooltip(translateLanguage("ui.trackBuilder.tooltip.reset", "Reset"))
        dimensions = obstacleInfo[name].dimensions or 3
        end
        im.tooltip(translateLanguage("ui.trackBuilder.tooltip.reset", "Reset"))
        end
        im.tooltip(translateLanguage("ui.trackBuilder.tooltip.reset", "Reset"))

        if im.Button(translateLanguage("ui.trackBuilder.obstacles.remove", "Remove") .. "##o"..i) then
          o.active = false
        im.SameLine()
        if im.Button(translateLanguage("ui.trackBuilder.obstacles.copy", "Copy") .. "##o"..i) then
          copy = o
    end
    im.tooltip(translateLanguage("ui.trackBuilder.tooltip.addObstacle", "Add obstacle"))
  end
local function checkPoints()
  if im.Checkbox(translateLanguage("ui.trackBuilder.checkpoints.active", "Active") .. "##cp",modifierValues.checkpoint.active) then
    if modifierValues.checkpoint.active[0] then
  if #currentCheckpointList == 0 then
    im.TextWrapped(translateLanguage("ui.trackBuilder.checkpoints.info", "If you don't add any checkpoints, they will be automatically created when playing this track through the Time Trials game mode."))
  else
  im.SetCursorPosX(xPositions[1])
  im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.base.radius", "Radius") .. ": " .. (p.radius[0]*4)..'m')
  im.SameLine()
  im.SetCursorPosX(xPositions[3])
  im.TextColored(style.textColor, translateLanguage("ui.trackBuilder.base.length", "Length") .. ": " .. p.length[0]..'°')
    end
    im.tooltip(translateLanguage("ui.trackBuilder.advanced.splitPiece", "Split Piece"))
  end
  im.SetCursorPosX(xPositions[1])
  im.TextColored(style.textColor, translateLanguage("ui.trackBuilder.base.length", "Length") .. ": " .. (p.length[0]*4)..'m')
    end
    im.tooltip(translateLanguage("ui.trackBuilder.advanced.splitPiece", "Split Piece"))
    im.tooltip("Split Piece")
  im.SetCursorPosX(xPositions[1])
  im.TextColored(style.textColor, translateLanguage("ui.trackBuilder.base.radius", "Radius") .. ": " .. (p.size[0]*4)..'m')
  im.SameLine()
  im.SetCursorPosX(xPositions[3])
  im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.base.length", "Length") .. ": " .. p.angle[0]..'°')
  im.SetCursorPosX(xPositions[1])
  im.TextColored(style.textColor,translateLanguage("ui.trackBuilder.base.radius", "Radius") .. ": " .. (p.radius[0]*4)..'m')
  im.SameLine()
  end
  im.tooltip(translateLanguage("ui.trackBuilder.base.delete", "Delete Current Segment"))
end
  end
  im.tooltip(translateLanguage("ui.trackBuilder.base.closeTrack", "Close Track"))
end
 -- im.SetNextWindowPos(im.ImVec2(style.displaySize.x/2 - style.fullToolbarsWidth/2,0))
  im.Begin( translateLanguage("ui.trackBuilder.toolbar.title", "Toolbar"), nil, im.flags(im.WindowFlags_NoScrollbar, im.WindowFlags_NoResize, im.WindowFlags_NoCollapse, im.WindowFlags_NoDocking))
  if driving then
  if im.Button("<##"..name,style.slimButtonSize) then tbFunctions.modifierShift(name,-1) end
    im.tooltip(translateLanguage("ui.trackBuilder.tooltip.shiftBack", "Shift Modifier Back"))
    im.SameLine()
    if im.Button(">##"..name,style.slimButtonSize) then tbFunctions.modifierShift(name,1) end
    im.tooltip(translateLanguage("ui.trackBuilder.tooltip.shiftForward", "Shift Modifier Forward"))
    im.SameLine()
      im.SetCursorPosX(im.GetWindowWidth()/2 - 100)
      if im.Button(translateLanguage("ui.trackbuilder.menus.openAdvancedPieces","Open Advanced Pieces"),im.ImVec2(200,50)) then
        menuItems.advancedPieces.isOpen[0] = true
    im.Spacing()
    im.TextColored(style.textColor,string.format(translateLanguage("ui.trackbuilder.base.banking", "Banking") .. ": %.1f°", modifierValues.bank.value[0]))
    mainModifiers('bank','tb_bank_left','tb_bank_right',15,1,60,-720,720)

    im.TextColored(style.textColor,string.format(translateLanguage("ui.trackBuilder.base.height", "Height") .. ": %.1fm", modifierValues.height.value[0]))
    mainModifiers('height','tb_height_lower','tb_height_higher',1,5,25,-50000,50000)

    im.TextColored(style.textColor, translateLanguage("ui.trackBuilder.base.width", "Width") .. ": " .. modifierValues.width.value[0]..'m')
    mainModifiers('width','tb_width_slimmer','tb_width_wider',1,5,10,0,50)
  im.SetCursorPosX(selectorPositions[1])
  if im.Button(translateLanguage("ui.trackBuilder.base.drive","Drive"),im.ImVec2(100,24)) then
    tbFunctions.drive()
  im.SetCursorPosX(selectorPositions[2])
  if im.Button(translateLanguage("ui.trackBuilder.base.test","Test"),im.ImVec2(100,24)) then
    tbFunctions.drive(currentIndex-1)
  end
  im.tooltip(translateLanguage("ui.trackBuilder.base.testDrive",'Starts from the selected Piece'))
  if im.BeginMenuBar() then
    if im.BeginMenu(translateLanguage("ui.trackbuilder.menus.windows","Windows")) then
      for k,v in pairs(menuItemsSorted) do
    end
    if im.BeginMenu(translateLanguage("ui.trackbuilder.menus.editorSettings", "Editor Settings")) then
      if im.MenuItem1(translateLanguage("ui.trackbuilder.menus.removeTrack","Remove Track")) then
    if im.BeginMenu(translateLanguage("ui.trackbuilder.menus.editorSettings", "Editor Settings")) then
      if im.MenuItem1(translateLanguage("ui.trackbuilder.menus.removeTrack","Remove Track")) then
        toggleTrackBuilder()
      end
      if im.MenuItem1(translateLanguage("ui.trackbuilder.menus.resetTrack", "Reset Track")) then
        tb.removeTrack()
      im.Separator()
      if im.MenuItem2(translateLanguage("ui.trackbuilder.menus.onlyOnePiecesWindow","Only one Pieces Window"),"",menuSettings.hidePieces.value) then serializeSettings() end
      if im.MenuItem2(translateLanguage("ui.trackbuilder.menus.onlyOneModifierWindow", "Only one Modifier Window"),"",menuSettings.hideModifiers.value) then serializeSettings() end
      if im.MenuItem2(translateLanguage("ui.trackbuilder.menus.onlyOnePiecesWindow","Only one Pieces Window"),"",menuSettings.hidePieces.value) then serializeSettings() end
      if im.MenuItem2(translateLanguage("ui.trackbuilder.menus.onlyOneModifierWindow", "Only one Modifier Window"),"",menuSettings.hideModifiers.value) then serializeSettings() end
      if im.MenuItem2(translateLanguage("ui.trackBuilder.settings.cameraFollow", "Automatic camera follow"),"",menuSettings.camActivated.value) then
      if im.MenuItem2(translateLanguage("ui.trackbuilder.menus.onlyOneModifierWindow", "Only one Modifier Window"),"",menuSettings.hideModifiers.value) then serializeSettings() end
      if im.MenuItem2(translateLanguage("ui.trackBuilder.settings.cameraFollow", "Automatic camera follow"),"",menuSettings.camActivated.value) then
        tb.camActivated = menuSettings.camActivated.value[0]
      end
      if editor.uiSliderFloat(translateLanguage("ui.trackBuilder.settings.cameraFollowDistance", "Follow Distance"),menuSettings.camDistance.value, 10, 200, "%.1f", nil, camDistanceChanged) then tb.camDistance = menuSettings.camDistance.value[0] end
      if camDistanceChanged[0] == true then serializeSettings() end

  if im.Begin(translateLanguage("ui.trackbuilder.menus.trackBuilder", "Track Builder"), open, flags) then
    style.toolbarWidth = (#menuItemsSorted + #additionalMenuItemsSorted) * 44 + 16 + (#menuItemsSorted + #additionalMenuItemsSorted - 1) * 8 +  (#paintModesSorted) * 44 + 16 + (#paintModesSorted - 1) * 8 - 4
    if not trackSpawned then
      if im.Button(translateLanguage("ui.trackbuilder.menus.startTrackBuilder", "Start Track Builder Here"), im.ImVec2(-1,0)) then
        trackSpawned = true
      end
      if im.Button(translateLanguage("ui.trackbuilder.menus.startTrackBuilderOnGlowCity", "Switch to Glow City"), im.ImVec2(-1,0)) then
        freeroam_freeroam.startTrackBuilder('glow_city',true)
  paintModes = {
    Select = {tooltip=translateLanguage("ui.trackBuilder.toolbar.select", "Select segment"), active=im.BoolPtr(true), icon=editor.icons.near_me},
    Paint = {tooltip=translateLanguage("ui.trackBuilder.toolbar.paint", "Paint material"), active=im.BoolPtr(false), icon=editor.icons.brush},
    Select = {tooltip=translateLanguage("ui.trackBuilder.toolbar.select", "Select segment"), active=im.BoolPtr(true), icon=editor.icons.near_me},
    Paint = {tooltip=translateLanguage("ui.trackBuilder.toolbar.paint", "Paint material"), active=im.BoolPtr(false), icon=editor.icons.brush},
    ChangeMesh = {tooltip=translateLanguage("ui.trackBuilder.toolbar.changeShape", "Change track shapes"), active=im.BoolPtr(false), icon=editor.icons['tb_shapes'] or editor.icons.stop},
    Paint = {tooltip=translateLanguage("ui.trackBuilder.toolbar.paint", "Paint material"), active=im.BoolPtr(false), icon=editor.icons.brush},
    ChangeMesh = {tooltip=translateLanguage("ui.trackBuilder.toolbar.changeShape", "Change track shapes"), active=im.BoolPtr(false), icon=editor.icons['tb_shapes'] or editor.icons.stop},
    Merge = {tooltip=translateLanguage("ui.trackBuilder.toolbar.merge", "Merge"), active=im.BoolPtr(false), icon=editor.icons.extension},
    ChangeMesh = {tooltip=translateLanguage("ui.trackBuilder.toolbar.changeShape", "Change track shapes"), active=im.BoolPtr(false), icon=editor.icons['tb_shapes'] or editor.icons.stop},
    Merge = {tooltip=translateLanguage("ui.trackBuilder.toolbar.merge", "Merge"), active=im.BoolPtr(false), icon=editor.icons.extension},
  }
    advancedModifiers = {
      name = translateLanguage("ui.trackBuilder.menus.advancedModifiers", "Advanced Modifiers"),
      isOpen = im.BoolPtr(false), wasOpen = false, size = im.ImVec2(280,0), icon = editor.icons.adjust
    advancedPieces = {
      name = translateLanguage("ui.trackBuilder.menus.advancedPieces", "Advanced Pieces"),
      isOpen = im.BoolPtr(false), wasOpen = false, size = im.ImVec2(280,0), icon = editor.icons['tb_loop'] or editor.icons.stop
    borders = {
      name = translateLanguage("ui.trackBuilder.menus.trackShape", "Track Shape"),
      isOpen = im.BoolPtr(false), wasOpen = false, size = im.ImVec2(280,0), icon = editor.icons['tb_shapes'] or editor.icons.stop,
    sidewalls = {
      name =translateLanguage("ui.trackBuilder.menus.wallsCeiling", "Walls and Ceiling"),
      isOpen = im.BoolPtr(false), wasOpen = false, size = im.ImVec2(280,0), icon = editor.icons['tb_tunnel'] or editor.icons.stop
    obstacles = {
      name = translateLanguage("ui.trackBuilder.menus.obstacles", "Obstacles"),
      isOpen = im.BoolPtr(false), wasOpen = false, size = im.ImVec2(280,504), icon = editor.icons.remove_circle_outline
    materialEditor = {
      name = translateLanguage("ui.trackBuilder.menus.materialEditor", "Material Editor"),
      isOpen = im.BoolPtr(false), wasOpen = false, size = im.ImVec2(280,0), icon = editor.icons.brush,
  additionalMenuItems = {
    checkpoints = {name = translateLanguage("ui.trackBuilder.menus.checkpoints", "CheckPoints"), isOpen = im.BoolPtr(false), wasOpen = false, size = im.ImVec2(280,0), icon = editor.icons.flag},
    postionrotation = {name = translateLanguage("ui.trackBuilder.menus.trackSettings", "Track Settings"),  isOpen = im.BoolPtr(false), wasOpen = false, size = im.ImVec2(280,0), icon = editor.icons.settings},
    checkpoints = {name = translateLanguage("ui.trackBuilder.menus.checkpoints", "CheckPoints"), isOpen = im.BoolPtr(false), wasOpen = false, size = im.ImVec2(280,0), icon = editor.icons.flag},
    postionrotation = {name = translateLanguage("ui.trackBuilder.menus.trackSettings", "Track Settings"),  isOpen = im.BoolPtr(false), wasOpen = false, size = im.ImVec2(280,0), icon = editor.icons.settings},
    saveload = {name= translateLanguage("ui.trackBuilder.menus.saveLoad", "Save and Load"),isOpen = im.BoolPtr(false), wasOpen = false, size = im.ImVec2(280,420), icon = editor.icons.save},
    postionrotation = {name = translateLanguage("ui.trackBuilder.menus.trackSettings", "Track Settings"),  isOpen = im.BoolPtr(false), wasOpen = false, size = im.ImVec2(280,0), icon = editor.icons.settings},
    saveload = {name= translateLanguage("ui.trackBuilder.menus.saveLoad", "Save and Load"),isOpen = im.BoolPtr(false), wasOpen = false, size = im.ImVec2(280,420), icon = editor.icons.save},
    --debug = {name = 'debug', value = im.BoolPtr(false), icon = editor.icons.bug_report}
@/lua/ge/extensions/career/modules/delivery/progress.lua
        showLevelUpPopup = true,
        unlockPopupHeader = string.format("%s %s: Level %d", translateLanguage(branch.name, branch.name), branch.isSkill and "Skill" or "Branch", career_branches.getBranchLevel(branch.id) or 0)
      }

      if branch.isBranch then branchInfo[key].animationData.name = "Branch: " .. translateLanguage(branchInfo[key].animationData.name, branchInfo[key].animationData.name) end
      if branch.isSkill then branchInfo[key].animationData.name = "Skill: " .. translateLanguage(branchInfo[key].animationData.name, branchInfo[key].animationData.name) end
      if branch.isBranch then branchInfo[key].animationData.name = "Branch: " .. translateLanguage(branchInfo[key].animationData.name, branchInfo[key].animationData.name) end
      if branch.isSkill then branchInfo[key].animationData.name = "Skill: " .. translateLanguage(branchInfo[key].animationData.name, branchInfo[key].animationData.name) end
    end
@/lua/ge/extensions/flowgraph/nodes/gameplay/playerMoves.lua
      if self.msgSent and not hasMoved then
        guihooks.trigger('ScenarioRealtimeDisplay', {msg = translateLanguage("missions.general.moveToStart", "missions.general.moveToStart", true), context = "accelerateToBegin"})
      end
@/lua/ge/extensions/gameplay/missions/progress.lua
    if next(sumChange) then
      career_modules_playerAttributes.addAttributes(sumChange, {tags={"gameplay","reward","mission"}, label="Received challenge rewards: " .. (translateLanguage(mission.name,mission.name,true) or "(Unnamed Mission)")})
    end
    if branch and not branch.missing then
      rewardInfo.attributeName = translateLanguage(branch.name, branch.name, true)
      rewardInfo.attributeColor = branch.color
      rewardInfo.progressBar = {
        name = translateLanguage(branch.name, branch.name),
        level = "Level " .. level,
      local attempt = attemptsForProgressKey[attemptIndex] or {}
      local row = {}--{ { text = translateLanguage(mission.name, mission.name, true) } }
    local attempt = attemptsForProgressKey[#attemptsForProgressKey]
    local row = {}--{ { text = translateLanguage(mission.name, mission.name, true) } }
      if missionInstance.saveData.progress[progressKey] ~= nil then
        local row = {}--{ { text = translateLanguage(m.name, m.name, true) } }
        local aggregateForProgressKey = missionInstance.saveData.progress[progressKey].aggregate
@/lua/ge/extensions/flowgraph/nodes/ui/contextTranslation.lua
      self.string = self.pinIn["translationString"].value or ""
      translationString = translateLanguage(self.string, self.string)
@/lua/ge/extensions/gameplay/rally.lua
  settings.setValue('rallyCodriverTiming', newVal)
  local msg = translateLanguage('ui.rally.codriverTiming', 'Codriver timing', true)
  guihooks.trigger('Message', {
@/lua/ge/extensions/career/modules/spawnPoints.lua
      if spawnPointData.objectname == spawnPointName then
        return translateLanguage(spawnPointData.translationId, spawnPointData.translationId)
      end
@/lua/ge/extensions/gameplay/drift/quickMessages.lua
  for id, _ in pairs(quickMessages) do
    quickMessages[id].msg = translateLanguage("missions.drift.quickMessage."..id,"missions.drift.quickMessage."..id,true)
  end
@/gameplay/missions/gridmap_v2/flowgraph/001-Survival/customNodes/genericEndScreenTextNode.lua

  local finalString = translateLanguage('missions.gridmapv2.survival.score', "missions.gridmapv2.survival.score", true) .. " : " .. self.pinIn.score.value .. "

" .. translateLanguage('missions.gridmapv2.survival.1star', "missions.gridmapv2.survival.1star", true) .. " : " .. self.pinIn.firstStarScore.value .. "
" .. translateLanguage('missions.gridmapv2.survival.2stars', "missions.gridmapv2.survival.2stars", true) .. " : " .. self.pinIn.secondStarScore.value .. "
" .. translateLanguage('missions.gridmapv2.survival.3stars', "missions.gridmapv2.survival.3stars", true) .. " : " .. self.pinIn.thirdStarScore.value

  local finalString = translateLanguage('missions.gridmapv2.survival.score', "missions.gridmapv2.survival.score", true) .. " : " .. self.pinIn.score.value .. "

" .. translateLanguage('missions.gridmapv2.survival.1star', "missions.gridmapv2.survival.1star", true) .. " : " .. self.pinIn.firstStarScore.value .. "
" .. translateLanguage('missions.gridmapv2.survival.2stars', "missions.gridmapv2.survival.2stars", true) .. " : " .. self.pinIn.secondStarScore.value .. "
" .. translateLanguage('missions.gridmapv2.survival.3stars', "missions.gridmapv2.survival.3stars", true) .. " : " .. self.pinIn.thirdStarScore.value

  local finalString = translateLanguage('missions.gridmapv2.survival.score', "missions.gridmapv2.survival.score", true) .. " : " .. self.pinIn.score.value .. "

" .. translateLanguage('missions.gridmapv2.survival.1star', "missions.gridmapv2.survival.1star", true) .. " : " .. self.pinIn.firstStarScore.value .. "
" .. translateLanguage('missions.gridmapv2.survival.2stars', "missions.gridmapv2.survival.2stars", true) .. " : " .. self.pinIn.secondStarScore.value .. "
" .. translateLanguage('missions.gridmapv2.survival.3stars', "missions.gridmapv2.survival.3stars", true) .. " : " .. self.pinIn.thirdStarScore.value

  local finalString = translateLanguage('missions.gridmapv2.survival.score', "missions.gridmapv2.survival.score", true) .. " : " .. self.pinIn.score.value .. "

" .. translateLanguage('missions.gridmapv2.survival.1star', "missions.gridmapv2.survival.1star", true) .. " : " .. self.pinIn.firstStarScore.value .. "
" .. translateLanguage('missions.gridmapv2.survival.2stars', "missions.gridmapv2.survival.2stars", true) .. " : " .. self.pinIn.secondStarScore.value .. "
" .. translateLanguage('missions.gridmapv2.survival.3stars', "missions.gridmapv2.survival.3stars", true) .. " : " .. self.pinIn.thirdStarScore.value
@/lua/ge/extensions/editor/missionPlaybook/missionTreeViewer.lua
  im.BeginGroup()
  im.Text(translateLanguage(mission.name, mission.name, true))
@/lua/ge/extensions/career/modules/branches/leagues.lua
      }
      condition.label = string.format("Get %d stars from '%s'", condition.stars, translateLanguage(otherLeague.name, otherLeague.name, true))
      local branch = career_branches.getBranchById(condition.skillId)
      condition.label = string.format("Reach level %d of '%s'", condition.level,  translateLanguage(branch.name, branch.name, true))
    elseif condition.type == "skillStars" then
      local branch = career_branches.getBranchById(condition.skillId)
      condition.label = string.format("Get %d stars in '%s'", condition.stars,  translateLanguage(branch.name, branch.name, true))
    elseif condition.type == "branchStars" then
      local branch = career_branches.getBranchById(condition.branchId)
      condition.label = string.format("Get %d stars in '%s'", condition.stars,  translateLanguage(branch.name, branch.name, true))
    elseif condition.type == "inDevelopment" then
      condition.hidden = true
      --condition.label = translateLanguage("ui.career.inDevelopment", "ui.career.inDevelopment", true)
      --condition.progress = {}
  local branch = career_branches.getBranchById(skillId)
  league.name = string.format("%s Challenges", translateLanguage(branch.name, branch.name, true))
  league.description = string.format("Fallback for %s Skill", translateLanguage(branch.name, branch.name, true))
  league.name = string.format("%s Challenges", translateLanguage(branch.name, branch.name, true))
  league.description = string.format("Fallback for %s Skill", translateLanguage(branch.name, branch.name, true))
  league.missions = missions
@/lua/ge/extensions/career/modules/playerDriving.lua
      career_modules_payment.pay({money = {amount = fine}}, {label = "Fine for being arrested by the police"})
      ui_message(translateLanguage("ui.traffic.policeFine", "You got fined by the police: ")..fine, 5, "careerPursuit")
    end
@/lua/ge/extensions/gameplay/missions/missionScreen.lua
        if layout.header and layout.header.header then
          headerName = translateLanguage(layout.header.header, layout.header.header, true)
        end
@/lua/ge/extensions/gameplay/police.lua
        if gameplay_traffic.showMessages and policePlayer and not policePlayer.role.flags.busy then
          ui_message(string.format('%s %s', translateLanguage('ui.traffic.suspectFlee', 'A suspect is fleeing from you! Vehicle:'), targetVeh.modelName), 5, 'traffic', 'traffic')
        end
        for _, v in ipairs(veh.pursuit.offensesList) do
          table.insert(offensesTranslated, translateLanguage(string.format('ui.traffic.infractions.%s', v), v))
        end

        ui_message(string.format('%s %s', translateLanguage('ui.traffic.infractions.title', 'Offenses:'), table.concat(offensesTranslated, ', ')), 5, 'trafficInfractions', 'traffic')
      end
@/lua/ge/extensions/editor/missionPlaybook.lua
  if not condensed then
    im.Text("Playing Mission: \"" ..translateLanguage(mission.name, mission.name, true).."\"")
    im.SameLine()
        im.SameLine()
        im.TextColored(grayColor, translateLanguage(mission.starLabels[key],mission.starLabels[key], true))
        toggle = im.IsItemClicked() or toggle
  else
    local txt = "Mission: \"" ..translateLanguage(mission.name, mission.name, true).."\" "
    local sortedStars = mission.careerSetup._activeStarCache.sortedStars
@/lua/ge/extensions/flowgraph/nodes/ui/updatedUI/endScreenBegin.lua
          end, {
          label = "Start Next Mission '" .. translateLanguage(mission.name, mission.name).."'",
          disabled = not mission.unlocks.startable
@/lua/ge/extensions/editor/missionEditor.lua
  if shownMission then
    im.HeaderText(translateLanguage(shownMission.name, shownMission.name, true))
    im.SameLine()
  for _, elem in ipairs(translation) do
    if translateLanguage(elem.value, "NoTranslation!") ~= "NoTranslation!" then
      elem.value = translateLanguage(elem.value, elem.value)
    if translateLanguage(elem.value, "NoTranslation!") ~= "NoTranslation!" then
      elem.value = translateLanguage(elem.value, elem.value)
    end
    local instance = gameplay_missions_missions.getMissionById(mission.id)
    local translatedName = translateLanguage(mission.name, mission.name, true)
    local missionType = mission.missionType
      if type(translatedStarLabel) == "string" then
        translatedStarLabel = translateLanguage(translatedStarLabel, translatedStarLabel, true)
      elseif type(translatedStarLabel) == "table" and translatedStarLabel.txt then
      elseif type(translatedStarLabel) == "table" and translatedStarLabel.txt then
        translatedStarLabel = translateLanguage(translatedStarLabel.txt, translatedStarLabel.txt, true)
      else
    local instance = gameplay_missions_missions.getMissionById(mission.id)
    local translatedName = translateLanguage(mission.name, mission.name, true)
    local missionType = mission.missionType
    local instance = gameplay_missions_missions.getMissionById(mission.id)
    local translatedName = translateLanguage(mission.name, mission.name, true)
    local type2 = ""
    if not scenario.isMissionAsScenario then
      csvdata:add(scenario.sourceFile, translateLanguage(scenario.name, scenario.name, true), dateStr, origin, string.lower(scenario.levelName), type2)
    end
--  for _, qr in ipairs(scenario_quickRaceLoader.getQuickraceList()) do
--    csvdata:add(translateLanguage(qr.scenarioName, qr.scenarioName, true), tonumber(qr.date), "Time Trial")
--  end
    for _, elem in ipairs(translation) do
      if elem ~= "" and translateLanguage(elem, "NoTranslation!") ~= "NoTranslation!" then
        if not addedKeys[elem] then
        if not addedKeys[elem] then
          table.insert(finalList,{key = elem, value = translateLanguage(elem, elem)})
          count = count +1
@/lua/ge/extensions/career/modules/delivery/generator.lua
  local storage = fac.materialStorages[materialType]
  local facName = translateLanguage(fac.name, fac.name, true)
  log("I","",string.format("Moved %d %s from %s (%d -> %d)", change, materialType, facName, storage.storedVolume, storage.storedVolume + change))

    table.sort(facilities, function(a,b) return translateLanguage(a.name, a.name, true) < translateLanguage(b.name, b.name, true)end)

    table.sort(facilities, function(a,b) return translateLanguage(a.name, a.name, true) < translateLanguage(b.name, b.name, true)end)
@/lua/ge/extensions/editor/missionEditor/general.lua
  end
  if translateLanguage(self.mission.name, self.mission.name, true) == self.mission.name then
    table.insert(issues, {label = 'Name has no translation!', severity='warning'})
  end
  if type(self.mission.description) == "string" and translateLanguage(self.mission.description, self.mission.description, true) == self.mission.description then
    table.insert(issues, {label = 'Description has no translation!', severity='warning'})
  if not self._titleTranslated then
    self._titleTranslated = translateLanguage(self.mission.name, noTranslation, true)
  end
    end
    self._descTranslated = translateLanguage(str, noTranslation, true)
  end
@/lua/ge/extensions/flowgraph/nodes/input/blacklistAction.lua
      table.insert(allCategories[info.cat], name)
      info.title = translateLanguage(info.title, info.title, true)
      info.desc = translateLanguage(info.desc or "No Description", info.desc or "No Description", true)
      info.title = translateLanguage(info.title, info.title, true)
      info.desc = translateLanguage(info.desc or "No Description", info.desc or "No Description", true)
    end
@/lua/ge/extensions/ui/apps.lua
      for _, typeKey in ipairs(appData.types) do
        table.insert(appData.typesTranslated, translateLanguage(typeKey, typeKey, true))
      end
@/lua/ge/extensions/gameplay/rally/util.lua
  end
  local translated = translateLanguage(missionName, missionName, true)
  -- log('D', 'rallyUtil', 'translatedMissionName: translated = ' .. tostring(translated))
@/lua/ge/extensions/gameplay/drift/display.lua
  if gameplay_drift_destination.getGoingWrongWay() and not outOfBoundsFlag then
    rtMessage(translateLanguage("missions.drift.general.wrongWayFirst", "missions.drift.general.wrongWayFirst"))
    wrongWayFlag = true
  if gameplay_drift_bounds.getIsOutOfBounds() and not isInConcludingPhase then
    rtMessage(translateLanguage("missions.crawl.general.outOfBounds", "missions.crawl.general.outOfBounds"))
    outOfBoundsFlag = true
@/lua/ge/extensions/editor/missionEditor/progressSingle.lua
function C:draw()
  im.HeaderText("Progress - "..translateLanguage(self.mission.name, self.mission.name, true))
  im.SameLine()
@/lua/ge/extensions/flowgraph/nodes/ui/missionEndScreen.lua
      if mission then
        table.insert(defaultBtns,{label="Start Next Mission '" .. translateLanguage(mission.name, mission.name).."'" , cmd='gameplay_missions_missionManager.startFromWithinMission(gameplay_missions_missions.getMissionById("'..mid..'"))', disabled = not mission.unlocks.startable})
      end
@/lua/ge/extensions/freeroam/gasStations.lua
        for _, fuelType in ipairs(tableKeysSorted(invalidTanks)) do
          guihooks.trigger('Message',{msg = {txt = "ui.freeroam.refuel.notFilled", context = {fuelType = translateLanguage("ui.general.fuelType."..fuelType, fuelType, true)}}, category = "refueling-"..fuelType, icon = "warning", ttl=8})
        end
@/lua/ge/extensions/flowgraph/nodes/ui/endScreen.lua
      if mission then
        table.insert(buttonsTable,{label="Start Next Mission '" .. translateLanguage(mission.name, mission.name).."'" , cmd='gameplay_missions_missionManager.startFromWithinMission(gameplay_missions_missions.getMissionById("'..mid..'"))', disabled = not mission.unlocks.startable})
      end
@/lua/ge/extensions/editor/missionEditor/progressSetup.lua
function C:draw()
  im.HeaderText("Progress - "..translateLanguage(self.mission.name, self.mission.name, true))
  im.SameLine()
@/lua/ge/extensions/career/modules/fuel.lua
  else
    career_modules_playerAttributes.addAttributes({money=-overallPrice}, {tags={"fuel","buying"},label = "Refuelled at "..(translateLanguage(gasStation.facility.name, gasStation.facility.name, true))})
    gameplay_statistic.metricAdd("career/fuel/paidPrice.money", overallPrice)
@/lua/ge/extensions/flowgraph/nodes/ui/updatedUI/endScreenWhole.lua
          end, {
          label = "Start Next Mission '" .. translateLanguage(mission.name, mission.name).."'",
          disabled = not mission.unlocks.startable
@/lua/ge/extensions/career/modules/milestones/generalMilestones/missions.lua
  local branchName = career_branches.getBranchById(branchKey).name
  branchName = translateLanguage(branchName, branchName, true)
  -- all stars
@/lua/ge/extensions/util/richPresence.lua
  elseif fgActivityId and mission then
    msg = "Playing " .. translateLanguage(mission.name, mission.name, true) -- suppress errors for translations
    appendLevel, appendVehicle = true, true
    if scenario.name then
      msg = "Playing " .. translateLanguage(scenario.name, scenario.name, true)
    elseif scenario.isQuickRace then
@/lua/ge/extensions/gameplay/rally/loop/rallyLoopManager.lua
  self.streamData.showDebugInfo = self:getDrawFlag('showDebugInfo')
  self.streamData.missionName = self.missionName and translateLanguage(self.missionName, self.missionName, true) or nil
@/lua/ge/extensions/editor/util/editorElementHelper.lua
    if not e._translated then
      e._translated = translateLanguage(ffi.string(e.ac), noTranslation)
    end
@/lua/ge/extensions/gameplay/rally/tools/loopToolbox.lua
  for _, mission in ipairs(missions) do
    local translatedName = translateLanguage(mission.name, mission.name, true)
    local displayName = string.format("%s (%s)", translatedName, mission.id)
      if mission then
        missionName = translateLanguage(mission.name, mission.name, true)
      end
@/lua/ge/extensions/util/docCreator.lua
      elseif type(v) == 'string' then
        tbl[k] = translateLanguage(v, v, true) -- true = silent logs
        v = tbl[k]
@/lua/ge/extensions/ui/gridSelectorUtils/translateHelper.lua

  local translated = translateLanguage(key, key, true)
@/lua/ge/extensions/gameplay/drift/freeroam/driftSpots.lua
    if career_career.isActive() then
      local spotName = translateLanguage(spot.info.name, spot.info.name, true)
      career_modules_playerAttributes.addAttributes(rewards, {tags={"gameplay", "drift"}, label="Objective completed on " .. spotName})
@/lua/ge/extensions/gameplay/drift/scoring.lua
  for id, data in pairs(driftTiers) do
    driftTiers[id].name = translateLanguage(tierTranslationPrefix..data.id, tierTranslationPrefix..data.id, true)
  end
@/lua/ge/extensions/gameplay/drift/scoreboard.lua
  if hours > 0 then
      table.insert(parts, hours .. (hours == 1 and " "..translateLanguage("ui.timespan.hour", "ui.timespan.hour", true) or " "..translateLanguage("ui.timespan.hour.plural", "ui.timespan.hour.plural", true)))
  end
  if hours > 0 then
      table.insert(parts, hours .. (hours == 1 and " "..translateLanguage("ui.timespan.hour", "ui.timespan.hour", true) or " "..translateLanguage("ui.timespan.hour.plural", "ui.timespan.hour.plural", true)))
  end
  if minutes > 0 then
      table.insert(parts, minutes .. (minutes == 1 and " " ..translateLanguage("ui.timespan.minute", "ui.timespan.minute", true) or " " ..translateLanguage("ui.timespan.minute.plural", "ui.timespan.minute.plural", true)))
  end
  if minutes > 0 then
      table.insert(parts, minutes .. (minutes == 1 and " " ..translateLanguage("ui.timespan.minute", "ui.timespan.minute", true) or " " ..translateLanguage("ui.timespan.minute.plural", "ui.timespan.minute.plural", true)))
  end
  if seconds > 0 or #parts == 0 then
      table.insert(parts, seconds .. (seconds == 1 and " "..translateLanguage("ui.timespan.second", "ui.timespan.second", true) or " "..translateLanguage("ui.timespan.second.plural", "ui.timespan.second.plural", true)))
  end
  if seconds > 0 or #parts == 0 then
      table.insert(parts, seconds .. (seconds == 1 and " "..translateLanguage("ui.timespan.second", "ui.timespan.second", true) or " "..translateLanguage("ui.timespan.second.plural", "ui.timespan.second.plural", true)))
  end
  for name, data in pairs(compiledStats) do
    data.name = translateLanguage("missions.drift.stats."..name, "missions.drift.stats."..name, true)
  end
@/lua/ge/extensions/flowgraph/nodes/ui/genericMissionDataText.lua
    local key = "missions.missions.general." .. k
    table.insert(self.pinInLocal.title.hardTemplates, {label=translateLanguage(key, k, true), value = key})
  end
@/lua/ge/extensions/ui/policeInfo.lua
  if M.enabled and vehId == be:getPlayerVehicleID(0) then
    lastPursuitData.alert = {txt = 'ui.apps.police.offenseAlert', context = {value = translateLanguage('ui.traffic.infractions.'..name, name)}}
  end
@/lua/ge/extensions/core/vehicleTriggers.lua
                      im.TableNextColumn()
                      im.Text(translateLanguage(trg.name, trg.name, true))
                      im.TableNextColumn()
                im.TableNextColumn()
                im.Text(translateLanguage(evt.name, evt.name, true))
                im.TableNextColumn()
                im.TableNextColumn()
                im.Text(translateLanguage(evt.desc, evt.desc, true))
                im.TableNextColumn()
@/lua/ge/extensions/career/modules/insurance/insurance.lua
        local perkStaticData = perks[perkId]
        local suffixTranslatedIntro = translateLanguage(perkStaticData.intro, perkStaticData.intro, true)
        local translatedIntro = ""
        perkInfo.intro = translatedIntro
        perkInfo.description = translateLanguage(perkStaticData.description, perkStaticData.description, true)
      end
    end
    insuranceInfo.name = translateLanguage(insuranceInfo.name, insuranceInfo.name, true)
    insuranceInfo.slogan = translateLanguage(insuranceInfo.slogan, insuranceInfo.slogan, true)
    insuranceInfo.name = translateLanguage(insuranceInfo.name, insuranceInfo.name, true)
    insuranceInfo.slogan = translateLanguage(insuranceInfo.slogan, insuranceInfo.slogan, true)
    for coverageOptionName, coverageOptionInfo in pairs(insuranceInfo.coverageOptions) do
      coverageOptionInfo.unit = availableCoverageOptions[coverageOptionName].unit
      coverageOptionInfo.niceName = translateLanguage(availableCoverageOptions[coverageOptionName].niceName, availableCoverageOptions[coverageOptionName].niceName, true)
      coverageOptionInfo.desc = translateLanguage(availableCoverageOptions[coverageOptionName].desc, availableCoverageOptions[coverageOptionName].desc, true)
      coverageOptionInfo.niceName = translateLanguage(availableCoverageOptions[coverageOptionName].niceName, availableCoverageOptions[coverageOptionName].niceName, true)
      coverageOptionInfo.desc = translateLanguage(availableCoverageOptions[coverageOptionName].desc, availableCoverageOptions[coverageOptionName].desc, true)
    end
    availableClasses[classInfo.id] = classInfo
    classInfo.name = translateLanguage(classInfo.name, classInfo.name, true)
    classInfo.description = translateLanguage(classInfo.description, classInfo.description, true)
    classInfo.name = translateLanguage(classInfo.name, classInfo.name, true)
    classInfo.description = translateLanguage(classInfo.description, classInfo.description, true)
  end