Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improved translations for Danish #6220

Closed
FlowIT-JIT opened this issue Feb 20, 2023 · 5 comments
Closed

Improved translations for Danish #6220

FlowIT-JIT opened this issue Feb 20, 2023 · 5 comments
Assignees
Labels
bug Something isn't working high-priority Urgent to have fixed resolved Fixed but not yet released (available in the nightly builds)
Milestone

Comments

@FlowIT-JIT
Copy link

FlowIT-JIT commented Feb 20, 2023

Hi,

We have added support for Danish by creating our own locale. But since only you guys knows when changes are required, we'd rather hand over our work to you, hoping it will be incorporated into a future release.

locales.js

import { LocaleHelper, LocaleManager } from "@bryntum/gantt";
import English from "@bryntum/gantt/locales/gantt.locale.En";

// Created by Jimmy Thomsen @ FlowIT A/S (jit@flowit.dk).
// https://bryntum.com/docs/gantt/guide/Gantt/customization/localization
// Inspired by gantt-5.1.0/lib/Gantt/localization/En.js from the original source code,
// as well as gantt-5.1.0/examples/localization/locales/custom.locale.De.js which reveals
// the relevant keys in the localization object.
// To see the original English language strings, simply search for the translation
// keys in gantt-5.1.0/build/gantt.umd.js which contains it all.

// This will be a truthy empty string so it can be used as a localized result.
const emptyString = new String();

const locale = LocaleHelper.mergeLocales(English, {

    localeName : "Da",
    localeDesc : "Dansk",

    App : {
        "Localization demo" : "Lokaliseringsdemo"
    },

    //region Common

    Object : {
        Yes      : "Ja",
        No       : "Nej",
        Cancel   : "Annullér",
        Ok       : "OK",
        Save     : "Gem",
        newEvent : "Ny begivenhed"
    },

    //endregion

    //region Shared localization

    Button : {
        "Add column"    : "Tilføj kolonne",
        Apply           : "Anvend",
        "Display hints" : "Vis tips",
        "Remove column" : "Fjern kolonne"
    },

    Checkbox : {
        "Auto apply"    : "Anvend automatisk",
        Automatically   : "Automatisk",
        toggleRowSelect : "Skift rækkevalg",
        toggleSelection : "Skift valg af hele datasættet"
    },

    CodeEditor : {
        "Code editor"   : "Kode-editor",
        "Download code" : "Hent kode"
    },

    Combo : {
        noResults          : "Ingen resultater",
        Theme              : "Vælg tema",
        Language           : "Vælg sprog",
        Size               : "Vælg størrelse",
        recordNotCommitted : "Række kunne ikke tilføjes",
        addNewValue        : value => `Tilføj ${value}`
    },

    Tooltip : {
        infoButton       : "Klik her for information og for at ændre emne eller lokalitet",
        codeButton       : "Klik her for at se den indbyggede kode-editor",
        hintCheck        : "Marker denne indstilling for automatisk at vise tips når eksemplet indlæses",
        fullscreenButton : "Fuld skærm"
    },

    Shared : {
        "Locale changed" : "Sprog ændret",
        "Full size"      : "Fuld størrelse",
        "Phone size"     : "Telefonstørrelse"
    },

    UndoRedo : {
        Undo           : "Fortryd",
        Redo           : "Gentag",
        UndoLastAction : "Fortryd foregående handling",
        RedoLastAction : "Gentag den foregående fortrudte handling",
        NoActions      : "Ingen handlinger registreret"
    },

    //endregion

    //region Columns

    InactiveColumn : {
        Inactive : "Inaktiv"
    },

    AddNewColumn : {
        "New Column" : "Tilføj ny kolonne..."
    },

    EarlyStartDateColumn : {
        "Early Start" : "Tidlig start"
    },

    EarlyEndDateColumn : {
        "Early End" : "Tidlig afslutning"
    },

    LateStartDateColumn : {
        "Late Start" : "Sen start"
    },

    LateEndDateColumn : {
        "Late End" : "Sen afslutning"
    },

    TotalSlackColumn : {
        "Total Slack" : "Samlet buffertid"
    },

    CalendarColumn : {
        Calendar : "Kalender"
    },

    ConstraintDateColumn : {
        "Constraint Date" : "Begrænsningsdato"
    },

    ConstraintTypeColumn : {
        "Constraint Type" : "Begrænsningstype"
    },

    DeadlineDateColumn : {
        Deadline : "Tidsfrist"
    },

    DependencyColumn : {
        "Invalid dependency" : "Ugyldig afhængighed, ændringen blev annulleret"
    },

    DurationColumn : {
        Duration : "Varighed"
    },

    EffortColumn : {
        Effort : "Indsats"
    },

    EndDateColumn : {
        Finish : "Færdig"
    },

    EventModeColumn : {
        "Event mode" : "Begivenhedstilstand",
        Manual       : "Manuel",
        Auto         : "Automatisk"
    },

    ManuallyScheduledColumn : {
        "Manually scheduled" : "Manuelt planlagt"
    },

    MilestoneColumn : {
        Milestone : "Milepæl"
    },

    NameColumn : {
        Name : "Navn"
    },

    NoteColumn : {
        Note : "Note"
    },

    PercentDoneColumn : {
        "% Done" : "% færdig"
    },

    PredecessorColumn : {
        Predecessors : "Forgængere"
    },

    ResourceAssignmentColumn : {
        "Assigned Resources" : "Tildelte ressourcer",
        "more resources"     : "Yderligere ressourcer"
    },

    ResourceInfoColumn : {
        eventCountText : function(data) {
            return data + " begivenhed" + (data !== 1 ? "er" : "");
        }
    },

    RollupColumn : {
        Rollup : "Oprulning"
    },

    SchedulingModeColumn : {
        "Scheduling Mode" : "Planlægningstilstand"
    },

    ShowInTimelineColumn : {
        "Show in timeline" : "Vis på tidslinje"
    },

    SequenceColumn : {
        Sequence : "#"
    },

    StartDateColumn : {
        Start : "Start"
    },

    SuccessorColumn : {
        Successors : "Efterfølgere"
    },

    WBSColumn : {
        WBS      : "WBS",
        renumber : "Omnummer"
    },

    //endregion

    //region Engine

    ConflictEffectDescription : {
        descriptionTpl : "Denne handling forårsager en planlægningskonflikt for: {0} og {1}"
    },

    ConstraintIntervalDescription : {
        dateFormat : "LL"
    },

    ProjectConstraintIntervalDescription : {
        startDateDescriptionTpl : "Projektets startdato {0}",
        endDateDescriptionTpl   : "Projektets slutdato {0}"
    },

    ManuallyScheduledParentConstraintIntervalDescription : {
        startDescriptionTpl : "Manuelt planlagt \"{2}\" tvinger sine underliggende elementer til ikke at starte tidligere end {0}",
        endDescriptionTpl   : "Manuelt planlagt \"{2}\" tvinger sine underliggende elementer til ikke at slutte senere end {1}"
    },

    DisableManuallyScheduledConflictResolution : {
        descriptionTpl : "Deaktivér manuel planlægning for \"{0}\""
    },

    DependencyConstraintIntervalDescription : {
        descriptionTpl : "Afhængighed ({2}) fra \"{3}\" til \"{4}\""
    },

    RemoveDependencyResolution : {
        descriptionTpl : "Slet afhængighed af \"{1}\" til \"{2}\""
    },

    DeactivateDependencyResolution : {
        descriptionTpl : "Deaktivér afhængighed af \"{1}\" til \"{2}\""
    },

    DateConstraintIntervalDescription : {
        startDateDescriptionTpl : "Opgave \"{2}\" {3} {0} begrænsning",
        endDateDescriptionTpl   : "Opgave \"{2}\" {3} {1} begrænsning",
        constraintTypeTpl       : {
            startnoearlierthan  : "Start ikke tidligere end",
            startnolaterthan    : "Start ikke senere end",
            muststarton         : "Skal starte på",
            mustfinishon        : "Skal slutte på",
            finishnoearlierthan : "Afslut ikke tidligere end",
            finishnolaterthan   : "Afslut ikke senere end"
        }
    },

    RemoveDateConstraintConflictResolution : {
        descriptionTpl : "Fjern \"{1}\" begrænsningen på opgave \"{0}\""
    },

    RemoveDependencyCycleEffectResolution : {
        descriptionTpl : "Slet afhængighed"
    },

    DeactivateDependencyCycleEffectResolution : {
        descriptionTpl : "Deaktivér afhængighed"
    },

    CycleEffectDescription : {
        descriptionTpl : "En cirkulær reference blev fundet mellem følgende opgaver: {0}"
    },

    EmptyCalendarEffectDescription : {
        descriptionTpl : "\"{0}\"-kalenderen har ingen arbejdsintervaller."
    },

    Use24hrsEmptyCalendarEffectResolution : {
        descriptionTpl : "Brug 24-timers kalenderen (mandag - fredag)."
    },

    Use8hrsEmptyCalendarEffectResolution : {
        descriptionTpl : "Brug 8-timers kalenderen (mandag - fredag 08:00 - 12:00, 13:00 - 17:00)."
    },

    //endregion

    //region Gantt

    DependencyField : {
        invalidDependencyFormat : "Ugyldigt afhængighedsformat"
    },

    ProjectLines : {
        "Project Start" : "Start",
        "Project End"   : "Slut"
    },

    TaskTooltip : {
        Start    : "Start",
        End      : "Afslutning",
        Duration : "Varighed",
        Complete : "Færdig"
    },

    AssignmentGrid : {
        Name     : "Ressourcenavn",
        Units    : "Enheder",
        unitsTpl : function(value) {
            return value.value ? value.value + "%" : "";
        }
    },

    SchedulerProBase : {
        propagating     : "Beregner projekt",
        storePopulation : "Loading data",
        finalizing      : "Færdiggør resultater"
    },

    Gantt : {
        Edit                   : "Redigér",
        Indent                 : "Ryk ind",
        Outdent                : "Ryk ud",
        "Convert to milestone" : "Konvertér til milepæl",
        Add                    : "Tilføj...",
        "New task"             : "Ny opgave",
        "New milestone"        : "Ny milepæl",
        "Task above"           : "Opgave over",
        "Task below"           : "Opgave under",
        "Delete task"          : "Slet",
        Milestone              : "Milepæl",
        "Sub-task"             : "Underopgave",
        Successor              : "Efterfølger",
        Predecessor            : "Forgænger",
        changeRejected         : "Ændring afvist"
    },

    Indicators : {
        earlyDates   : "Tidlig start/afslutning",
        lateDates    : "Sen start/afslutning",
        deadlineDate : "Frist",
        Start        : "Start",
        End          : "Afslutning"
    },

    SchedulingIssueResolutionPopup : {
        "Cancel changes"   : "Annullér ændringer",
        schedulingConflict : "Planlægningskonflikt",
        emptyCalendar      : "Kalenderfejl (tom)",
        cycle              : "Cirkulær reference",
        Apply              : "Anvend"
    },

    CycleResolutionPopup : {
        dependencyLabel        : "Vælg venligst en afhængighed:",
        invalidDependencyLabel : "Der er ugyldige afhængigheder involveret som skal håndteres:"
    },

    //endregion

    //region SchedulerPro

    DependencyType : {
        SS           : "SS",
        SF           : "SA",
        FS           : "AS",
        FF           : "AA",
        StartToStart : "Start-til-Start",
        StartToEnd   : "Start-til-Afslutning",
        EndToStart   : "Afslutning-til-Start",
        EndToEnd     : "Afslutning-til-Afslutning",
        short        : [
            "SS",
            "SA",
            "AS",
            "AA"
        ],
        long : [
            "Start-til-Start",
            "Start-til-Afslutning",
            "Afslutning-til-Start",
            "Afslutning-til-Afslutning"
        ]
    },

    ConstraintTypePicker : {
        none                : "Ingen",
        muststarton         : "Skal starte på",
        mustfinishon        : "Skal slutte på",
        startnoearlierthan  : "Start ikke tidligere end",
        startnolaterthan    : "Start ikke senere end",
        finishnoearlierthan : "Afslut ikke tidligere end",
        finishnolaterthan   : "Afslut ikke senere end"
    },

    CalendarField : {
        "Default calendar" : "Standardkalender"
    },

    TaskEditorBase : {
        Information   : "Informationen",
        Save          : "Gem",
        Cancel        : "Annullér",
        Delete        : "Slet",
        calculateMask : "Beregner...",
        saveError     : "Kan ikke gemme, ret venligst fejl først"
    },

    SchedulerTaskEditor : {
        editorWidth : "30em"
    },

    GanttTaskEditor : {
        editorWidth : "54em"
    },

    SchedulerGeneralTab : {
        labelWidth   : "15em",
        General      : "Generelt",
        Name         : "Navn",
        Resources    : "Ressourcer",
        "% complete" : "% færdig",
        Duration     : "Varighed",
        Start        : "Start",
        Finish       : "Afslutning",
        Preamble     : "Præambel",
        Postamble    : "Postambel"
    },

    SchedulerAdvancedTab : {
        labelWidth           : "15em",
        Advanced             : "Avanceret",
        Calendar             : "Kalender",
        "Manually scheduled" : "Manuelt planlagt",
        "Constraint type"    : "Begrænsningstype",
        "Constraint date"    : "Begrænsningsdato",
        Inactive             : "Inaktiv"
    },

    GeneralTab : {
        labelWidth   : "15em",
        General      : "Generelt",
        Name         : "Navn",
        "% complete" : "% færdig",
        Duration     : "Varighed",
        Start        : "Start",
        Finish       : "Afslutning",
        Effort       : "Indsats",
        Dates        : "Datoer"
    },

    AdvancedTab : {
        labelWidth           : "15em",
        Advanced             : "Avanceret",
        Calendar             : "Kalender",
        "Scheduling mode"    : "Planlægningstilstand",
        "Effort driven"      : "Hårdt arbejde",
        "Manually scheduled" : "Manuelt planlagt",
        "Constraint type"    : "Begrænsningstype",
        "Constraint date"    : "Begrænsningsdato",
        Constraint           : "Begrænsning",
        Rollup               : "Oprulning",
        Inactive             : "Inaktiv"
    },

    DependencyTab : {
        Predecessors      : "Forgængere",
        Successors        : "Efterfølgere",
        ID                : "ID",
        Name              : "Navn",
        Type              : "Type",
        Lag               : "Forsinkelse",
        cyclicDependency  : "Cirkulær afhængighed",
        invalidDependency : "Ugyldig afhængighed"
    },

    ResourcesTab : {
        Resources : "Ressourcer",
        Resource  : "Ressource",
        Units     : "Enheder",
        unitsTpl  : function(value) {
            return value.value ? value.value + "%" : "";
        }
    },

    NotesTab : {
        Notes : "Noter"
    },

    SchedulingModePicker : {
        Normal           : "Normal",
        "Fixed Duration" : "Fast varighed",
        "Fixed Units"    : "Faste enheder",
        "Fixed Effort"   : "Fast arbejde"
    },

    ResourceHistogram : {
        barTipInRange         : "<b>{resource}</b> {startDate} - {endDate}<br>{allocated} af {available} allokeret",
        barTipOnDate          : "<b>{resource}</b> am {startDate}<br>{allocated} af {available} allokeret",
        groupBarTipAssignment : "<b>{resource}</b> - <span class=\"{cls}\">{allocated} af {available}</span>",
        groupBarTipInRange    : "{startDate} - {endDate}<br><span class=\"{cls}\">{allocated} af {available}</span> allokeret:<br>{assignments}",
        groupBarTipOnDate     : "Am {startDate}<br><span class=\"{cls}\">{allocated} af {available}</span> allokeret:<br>{assignments}",
        plusMore              : "+{value} mere"
    },

    ResourceUtilization : {
        barTipInRange         : "<b>{event}</b> {startDate} - {endDate}<br><span class=\"{cls}\">{allocated}</span> allokeret",
        barTipOnDate          : "<b>{event}</b> den {startDate}<br><span class=\"{cls}\">{allocated}</span> allokeret",
        groupBarTipAssignment : "<b>{event}</b> - <span class=\"{cls}\">{allocated}</span>",
        groupBarTipInRange    : "{startDate} - {endDate}<br><span class=\"{cls}\">{allocated} af {available}</span> allokeret:<br>{assignments}",
        groupBarTipOnDate     : "Den {startDate}<br><span class=\"{cls}\">{allocated} af {available}</span> allokeret:<br>{assignments}",
        plusMore              : "+{value} mere",
        nameColumnText        : "Ressource / begivenhed"
    },

    NestedEvents : {
        deNestingNotAllowed : "Udpakning ikke tilladt",
        nestingNotAllowed   : "Indlejring ikke tilladt"
    },

    //endregion

    //region Mixins

    CrudManagerView : {
        serverResponseLabel : "Svar fra server:"
    },

    //endregion

    //region Features

    ColumnPicker : {
        column          : "Kolonne",
        columnsMenu     : "Kolonner",
        hideColumn      : "Skjul kolonne",
        hideColumnShort : "Skjul",
        newColumns      : "Nye kolonner"
    },

    Filter : {
        applyFilter  : "Anvend filter",
        filter       : "Filter",
        editFilter   : "Redigér filter",
        on           : "Aktiv",
        before       : "Før",
        after        : "Efter",
        equals       : "Ligmed",
        lessThan     : "Mindre end",
        moreThan     : "Større end",
        removeFilter : "Fjern filter"
    },

    FilterBar : {
        enableFilterBar  : "Vis filtreringspanel",
        disableFilterBar : "Skjul filtreringspanel"
    },

    Group : {
        group                : "Gruppér",
        groupAscending       : "Gruppér stigende",
        groupDescending      : "Gruppér faldende",
        groupAscendingShort  : "Stigende",
        groupDescendingShort : "Faldende",
        stopGrouping         : "Stop gruppering",
        stopGroupingShort    : "Stop"
    },

    HeaderMenu : {
        moveBefore : text => `Flyt før "${text}\"`,
        moveAfter  : text => `Flyt efter "${text}\"`
    },

    MergeCells : {
        mergeCells  : "Sammenflet celler",
        menuTooltip : "Sammenflet celler med samme værdi ved sortering på denne kolonne"
    },

    Search : {
        searchForValue : "Søg efter værdi"
    },

    Sort : {
        sort                   : "Sortér",
        sortAscending          : "Sortér stigende",
        sortDescending         : "Sortér faldende",
        multiSort              : "Multi-sortering",
        removeSorter           : "Fjern sortering",
        addSortAscending       : "Tilføj stigende sortering",
        addSortDescending      : "Tilføj faldende sortering",
        toggleSortAscending    : "Skift til stigende",
        toggleSortDescending   : "Skift til faldende",
        sortAscendingShort     : "Stigende",
        sortDescendingShort    : "Faldende",
        removeSorterShort      : "Fjern",
        addSortAscendingShort  : "+ Stigende",
        addSortDescendingShort : "+ Faldende"
    },

    Summary : {
        "Summary for" : function(date) {
            return "Opsummering for " + date;
        }
    },

    //endregion

    //region Trial

    /*TrialButton : {
        downloadTrial : "Demo herunterladen"
    },

    TrialPanel : {
        title            : "Bitte Felder ausfüllen",
        name             : "Name",
        email            : "Email",
        company          : "Gesellschaft",
        product          : "Produkt",
        cancel           : "Abbrechen",
        submit           : "Einreichen",
        downloadStarting : "Download startet, bitte warten..."
    },*/

    //endregion

    //region Grid

    RatingColumn : {
        cellLabel : column => `${column.text} ${column.location?.record ? `vurdering : ${column.location.record[column.field]}` : ""}`
    },

    GridBase : {
        loadFailedMessage  : "Indlæsning af data fejlede!",
        syncFailedMessage  : "Synkronisering af data fejlede!",
        unspecifiedFailure : "Uspecificeret fejl",
        networkFailure     : "Netværksfejl",
        parseFailure       : "Der opstod en fortolkningsfejl af serverens svar (parser fejl)",
        loadMask           : "Indlæser...",
        syncMask           : "Gemmer ændringer, vent venligst...",
        noRows             : "Ingen rækker at vise",
        moveColumnLeft     : "Flyt til venstre sektion",
        moveColumnRight    : "Flyt til højre sektion",
        moveColumnTo       : function(region) {
            return "Flyt kolonne til " + region;
        }
    },

    CellMenu : {
        removeRow : "Slet"
    },

    RowExpander : {
        loading : "Indlæser"
    },

    //region Export

    PdfExport : {
        "Waiting for response from server" : "Venter på svar fra serveren...",
        "Export failed"                    : "Eksport fejlede",
        "Server error"                     : "Serverfejl",
        "Generating pages"                 : "Genererer sider...",
        "Click to abort"                   : "Annullér"
    },

    ExportDialog : {
        width          : "40em",
        labelWidth     : "12em",
        exportSettings : "Eksportindstillinger",
        export         : "Eksport",
        exporterType   : "Sideopdeling",
        cancel         : "Annullér",
        fileFormat     : "Filformat",
        rows           : "Rækker",
        alignRows      : "Justér rækker",
        columns        : "Kolonner",
        paperFormat    : "Papirformat",
        orientation    : "Orientering",
        repeatHeader   : "Gentag sidehoved"
    },

    ExportRowsCombo : {
        all     : "Alle rækker",
        visible : "Synlige rækker"
    },

    ExportOrientationCombo : {
        portrait  : "Stående",
        landscape : "Liggende"
    },

    RowCopyPaste : {
        copyRecord  : "Kopiér",
        cutRecord   : "Klip",
        pasteRecord : "Indsæt"
    },

    EventCopyPaste : {
        copyEvent  : "Kopiér",
        cutEvent   : "Klip",
        pasteEvent : "Indsæt"
    },

    TaskCopyPaste : {
        copyTask  : "Kopiér",
        cutTask   : "Klip",
        pasteTask : "Indsæt"
    },

    SinglePageExporter : {
        singlepage : "Enkelt side"
    },

    MultiPageExporter : {
        multipage     : "Flere sider",
        exportingPage : function(data) {
            return "Eksporterer side " + data.currentPage + "/" + data.totalPages;
        }
    },

    MultiPageVerticalExporter : {
        multipagevertical : "Flere sider (vertikalt)",
        exportingPage     : function(data) {
            return "Eksporterer side " + data.currentPage + "/" + data.totalPages;
        }
    },

    ScheduleRangeCombo : {
        completeview : "Komplet tidsplan",
        currentview  : "Synlig tidsplan",
        daterange    : "Tidsinterval",
        completedata : "Komplet tidsplan (for alle begivenheder)"
    },

    SchedulerExportDialog : {
        "Schedule range" : "Tidsplansområde",
        "Export from"    : "Fra",
        "Export to"      : "Til"
    },

    //endregion

    //endregion

    //region Widgets

    FilePicker : {
        file : "Fil"
    },

    DateField : {
        invalidDate : "Ugyldig dato"
    },

    DatePicker : {
        gotoPrevYear  : "Gå til foregående år",
        gotoPrevMonth : "Gå til foregående måned",
        gotoNextMonth : "Gå til næste måned",
        gotoNextYear  : "Gå til næste år"
    },

    Field : {
        // native input ValidityState statuses
        badInput        : "Ugyldig feltværdi",
        patternMismatch : "Værdien passer ikke til det tilladte mønster",
        rangeOverflow   : function(value) {
            return `Værdien skal være mindre eller ligmed ${value.max}`;
        },
        rangeUnderflow : function(value) {
            return `Værdien skal være større eller ligmed ${value.min}`
        },
        stepMismatch : "Værdien skal passe til trinnet",
        tooLong      : "Værdien skal være kortere",
        tooShort     : "Værdien skal være længere",
        typeMismatch : "Værdien skal være i et bestemt format",
        valueMissing : "Dette felt er påkrævet",

        invalidValue          : "Ugyldig feltværdi",
        minimumValueViolation : "Minimumsværdi ikke mødt",
        maximumValueViolation : "Maksimumværdi oversteget",
        fieldRequired         : "Dette felt er påkrævet",
        validateFilter        : "Værdien skal vælges fra listen"
    },

    List : {
        loading : "Indlæser..."
    },

    PagingToolbar : {
        firstPage : "Gå til første side",
        prevPage  : "Gå til foregående side",
        page      : "Side",
        nextPage  : "Gå til næste side",
        lastPage  : "Gå til sidste side",
        reload    : "Genindlæse aktuel side",
        noRecords : "Ingen rækker at vise",
        pageCountTemplate(store) {
            return `af ${store.lastPage}`;
        },
        summaryTemplate(store) {
            const start = (store.currentPage - 1) * store.pageSize + 1;

            return `Viser rækkerne ${start} - ${start + store.pageSize - 1} af ${store.allCount}`;
        }
    },

    PanelCollapser : {
        Collapse : "Kollaps",
        Expand   : "Udvid"
    },

    Popup : {
        close : "Luk dialog"
    },

    NumberFormat : {
        locale   : "da",
        currency : "DKK"
    },

    DurationField : {
        invalidUnit : "Ugyldig enhed"
    },

    TimeField : {
        invalidTime : "Ugyldig tidsangivelse"
    },

    TimePicker : {
        hour   : "Time",
        minute : "Minut"
    },

    //endregion

    //region Dates

    DateHelper : {
        locale         : "da",
        weekStartDay   : 1,
        // Non-working days which match weekends by default, but can be changed according to schedule needs
        nonWorkingDays : {
            0 : true,
            6 : true
        },
        // Days considered as weekends by the selected country, but could be working days in the schedule
        weekends : {
            0 : true,
            6 : true
        },
        unitNames : [
            { single : "Millisekund", plural : "Millisekunder", abbrev : "ms" },
            { single : "Sekund", plural : "Sekunder", abbrev : "s" },
            { single : "Minut", plural : "Minutter", abbrev : "min" },
            { single : "Time", plural : "Timer", abbrev : "t" },
            { single : "Dag", plural : "Dage", abbrev : "d" },
            { single : "Uge", plural : "Uger", abbrev : "u" },
            { single : "Måned", plural : "Måneder", abbrev : "mdr" },
            { single : "Kvartal", plural : "Kvartaler", abbrev : "kv" },
            { single : "År", plural : "År", abbrev : "år" },
            { single : "Årti", plural : "Årtier", abbrev : "årti(er)" }
        ],
        // Used to build a RegExp for parsing time units.
        // The full names from above are added into the generated Regexp.
        // So you may type "2 w" or "2 wk" or "2 week" or "2 weeks" into a DurationField.
        // When generating its display value though, it uses the full localized names above.
        unitAbbreviations : [
            ["mil", "ms"],
            ["s", "sek"],
            ["m", "min"],
            ["t"],
            ["d"],
            ["u"],
            ["m", "mdr"],
            ["k", "kv"],
            ["å", "år"],
            ["årti", "årtier"]
        ],
        parsers : {
            L  : "DD.MM.YYYY",
            LT : "HH:mm"
        },
        ordinalSuffix : function(number) {
            return number;
        }
    },

    //endregion

    //region Scheduler

    ExcelExporter : {
        "No resource assigned" : "Ingen ressourcer tilknyttet"
    },

    Dependencies : {
        from    : "Fra",
        to      : "Til",
        valid   : "Gyldig",
        invalid : "Ugyldig"
    },

    DependencyEdit : {
        From              : "Fra",
        To                : "Til",
        Type              : "Type",
        Lag               : "Forsinkelse",
        "Edit dependency" : "Redigér afhængighed",

        Save         : "Gem",
        Delete       : "Slet",
        Cancel       : "Annullér",
        StartToStart : "Start-Start",
        StartToEnd   : "Start-Afslutning",
        EndToStart   : "Afslutning-Start",
        EndToEnd     : "Afslutning-Afslutning",

        // this field appears in the Gantt
        Active : "Aktiv"
    },

    EventEdit : {
        Name         : "Navn",
        Resource     : "Ressource",
        Start        : "Start",
        End          : "Afslutning",
        Save         : "Gem",
        Delete       : "Slet",
        Cancel       : "Annullér",
        "Edit event" : "Redigér begivenhed",
        Repeat       : "Gentag"
    },

    TaskEdit : {
        "Edit task"            : "Redigér opgave",
        ConfirmDeletionTitle   : "Bekræft sletning",
        ConfirmDeletionMessage : "Er du sikker på at du vil slette denne opgave?"
    },

    SchedulerBase : {
        "Add event"      : "Tilføj begivenhed",
        "Delete event"   : "Slet begivenhed",
        "Unassign event" : "Fjern tilknytning til begivenhed"
    },

    EventDrag : {
        eventOverlapsExisting : "Begivenhed overlapper med eksisterende begivenhed for denne ressource",
        noDropOutsideTimeline : "Begivenhed må ikke slippes helt uden for tidslinjen"
    },

    TimeAxisHeaderMenu : {
        pickZoomLevel   : "Zoom",
        activeDateRange : "Datointerval",
        startText       : "Startdato",
        endText         : "Slutdato",
        todayText       : "idag"
    },

    EventFilter : {
        filterEvents : "Filtrér opgaver",
        byName       : "Efter navn"
    },

    TimeRanges : {
        showCurrentTimeLine : "Vis aktuel tidslinje"
    },

    PresetManager : {
        minuteAndHour : {
            topDateFormat : "ddd DD.MM, HH:mm"
        },
        hourAndDay : {
            topDateFormat : "ddd DD.MM"
        },
        weekAndDay : {
            displayDateFormat : "HH:mm"
        }
    },

    RecurrenceConfirmationPopup : {
        "delete-title"              : "Du er ved at slette en begivenhed",
        "delete-all-message"        : "Vil du slette alle forekomster af denne begivenhed?",
        "delete-further-message"    : "Vil du slette denne og alle fremtidige forekomster af denne begivenhed, eller kun den valgte forekomst?",
        "delete-further-btn-text"   : "Slet alle fremtidige begivenheder",
        "delete-only-this-btn-text" : "Slet kun denne begivenhed",

        "update-title"              : "Du er ved at ændre en gentagende begivenhed",
        "update-all-message"        : "Vil du ændre alle forekomster af denne begivenhed?",
        "update-further-message"    : "Vil du ændre netop denne forekomst af begivenheden, eller denne og alle fremtidige forekomster?",
        "update-further-btn-text"   : "Alle fremtidige begivenheder",
        "update-only-this-btn-text" : "Kun denne begivenhed",

        Yes    : "Ja",
        Cancel : "Annullér",

        width : 600
    },

    RecurrenceLegend : {
        // list delimiters
        " and "         : " og ",
        // frequency patterns
        Daily           : "Daglig",
        "Weekly on {1}" : function(data) {
            return "Ugentligt " + data.days;
        },
        "Monthly on {1}" : function(data) {
            return "Månedligt " + data.days;
        },
        "Yearly on {1} of {2}" : function(data) {
            return "Årligt " + data.days + " i " + data.months;
        },
        "Every {0} days" : function(data) {
            return "For hver " + data.interval + " dage";
        },
        "Every {0} weeks on {1}" : function(data) {
            return "For hver " + data.interval + " uger  " + data.days;
        },
        "Every {0} months on {1}" : function(data) {
            return "For hver " + data.interval + " måneder " + data.days;
        },
        "Every {0} years on {1} of {2}" : function(data) {
            return "For hver " + data.interval + " år " + data.days + " i " + data.months;
        },
        // day position translations
        position1     : "den første",
        position2     : "den anden",
        position3     : "den tredje",
        position4     : "den fjerde",
        position5     : "den femte",
        "position-1"  : "den sidste",
        // day options
        day           : "dag",
        weekday       : "ugedag",
        "weekend day" : "dag i weekenden",
        // {0} - day position info ("the last"/"the first"/...)
        // {1} - day info ("Sunday"/"Monday"/.../"day"/"weekday"/"weekend day")
        // For example:
        //  "the last Sunday"
        //  "the first weekday"
        //  "the second weekend day"
        daysFormat    : function(data) {
            return data.position + " " + data.days;
        }
    },

    RecurrenceEditor : {
        "Repeat event"      : "Gentag begivenhed",
        Cancel              : "Annullér",
        Save                : "Gem",
        Frequency           : "Frekvens",
        Every               : "Alle",
        DAILYintervalUnit   : "dag(e)",
        WEEKLYintervalUnit  : "uge(r)",
        MONTHLYintervalUnit : "Måned(er)",
        YEARLYintervalUnit  : "År",
        Each                : "For hver",
        "On the"            : "på",
        "End repeat"        : "Stop gentagelse",
        "time(s)"           : "tid(er)"
    },

    RecurrenceDaysCombo : {
        day           : "dag",
        weekday       : "ugedag",
        "weekend day" : "dag i weekenden"
    },

    RecurrencePositionsCombo : {
        position1    : "første",
        position2    : "anden",
        position3    : "tredje",
        position4    : "fjerde",
        position5    : "femte",
        "position-1" : "sidste"
    },

    RecurrenceStopConditionCombo : {
        Never     : "Aldrig",
        After     : "Efter",
        "On date" : "På dato"
    },

    RecurrenceFrequencyCombo : {
        Daily   : "Dagligt",
        Weekly  : "Ugentligt",
        Monthly : "Månedligt",
        Yearly  : "Årligt"
    },

    RecurrenceCombo : {
        None   : "Ingen",
        Custom : "Tilpasset..."
    },

    //endregion

    //region Examples

    Column : {
        columnLabel       : column => `${column.text ? `${column.text} column. ` : ""}SPACE for kontekstmenu${column.sortable ? ", ENTER for at sortere" : ""}`,
        cellLabel         : emptyString,
        Name              : "Navn",
        Age               : "Alder",
        City              : "By",
        Food              : "Mad",
        Color             : "Farve",
        "First name"      : "Fornavn",
        Surname           : "Efternavn",
        Team              : "Hold",
        Score             : "Point",
        Rank              : "Rang",
        Percent           : "Procent",
        Birthplace        : "Fødselssted",
        Start             : "Start",
        Finish            : "Slutning",
        Template          : "Skabelon",
        Date              : "Dato",
        Check             : "Tjek",
        Contact           : "Kontakt",
        Favorites         : "Favoritter",
        "Customer#"       : "Kunde#",
        When              : "Når",
        Brand             : "Mærke",
        Model             : "Model",
        "Personal best"   : "Personlig rekord",
        "Current rank"    : "Nuværende rang",
        Hometown          : "Hjemby",
        Satisfaction      : "Tilfredshed",
        "Favorite color"  : "Favoritfarve",
        Rating            : "Vurdering",
        Cooks             : "Tilbereder",
        Birthday          : "Fødselsdag",
        Staff             : "Personale",
        Machines          : "Maskiner",
        Type              : "Type",
        "Task color"      : "Opgavens farve",
        "Employment type" : "Beskæftigelsestype",
        Capacity          : "Kapacitet",
        "Production line" : "Produktionslinje",
        Company           : "Firma",
        End               : "Slutning"
    }

    //endregion

});

LocaleManager.registerLocale("Da", { desc : "Danish", locale });

export default { English: English, Danish: locale };
@matsbryntse
Copy link
Member

Thanks for sharing, Danish + 30+ other locales will already be supported in 5.3 :)

@Mhbuur
Copy link

Mhbuur commented Sep 8, 2023

@matsbryntse the danish translations are way off (looks like auto translated from english).
Please reconsider using the above contribution instead :-)

@matsbryntse matsbryntse added bug Something isn't working high-priority Urgent to have fixed labels Sep 8, 2023
@matsbryntse matsbryntse reopened this Sep 8, 2023
@matsbryntse
Copy link
Member

Will do, thanks for the heads up!

@Mhbuur
Copy link

Mhbuur commented Oct 9, 2023

@matsbryntse when can we expect this to be included?

@matsbryntse
Copy link
Member

Hopefully in the next patch

@matsbryntse matsbryntse changed the title Support for danish (translations attached) Improved translations for Danish Oct 9, 2023
@matsbryntse matsbryntse self-assigned this Oct 9, 2023
@matsbryntse matsbryntse added ready for review Issue is fixed, the pull request is being reviewed resolved Fixed but not yet released (available in the nightly builds) and removed ready for review Issue is fixed, the pull request is being reviewed labels Oct 9, 2023
@matsbryntse matsbryntse added this to the 5.5.5 milestone Oct 9, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working high-priority Urgent to have fixed resolved Fixed but not yet released (available in the nightly builds)
Projects
None yet
Development

No branches or pull requests

3 participants