Opsætningsfil

Bemærk: Har du behov for den gamle version af Crowdin CLI (0,5,5 eller tidligere), se Crowdin Github for alle detaljer.

Introduktion

Crowdin-CLI benytter en YAML-opsætningsfil indeholdende en beskrivelse af ressourcerne, som skal håndteres: Filer, som skal uploades til Crowdin og placeringen af de dertil hørende oversættelser.

For at benytte Crowdin-CLI skal du først generere din opsætningsfil og herefter afvikle værktøjet. Som standard ser Crowdin-CLI efter en opsætningsfil med navnet crowdin.yaml (filnavnet behøves derfor ikke angivet, medmindre dette ikke er crowdin.yaml).

For at oprette opsætningsfilen, så kør følgende kommando:

$ crowdin generate

Opsætningsstruktur

En gyldig Crowdin-CLI YAML-opsætningsfil har flg- struktur, så tjek at du udfylder alle de nødvendige oplysninger:

  • Filhoved med projektakkreditiver, præferencer og adgangsoplysninger
  • Et filmatrixelement, der beskriver et sæt kilde- og oversættelsesfiler, du vil håndtere
  • Nødvendige felter i filermatrixerne: Kilde, der definerer filtre for kildefilerne og Oversættelse med instruktioner om, hvor de oversatte filer skal gemmes, eller hvor der skal søges efter allerede eksisterende oversættelser, hvis disse skal uploades under opsætningen af CLI

Se artiklen API-integrationsopsætning for at lære, hvor du kan finde dine projektakkreditiver.

Oprettelse af en simpel opsætningsfil

En typisk YAML-opsætningsfil ligner følgende:

"project_identifier": "din-projektidentifikator"
"api_key": "54e01e81--din-api-nøgle--f6a2724a"                                   #can be found in din projektindstillingsside
"base_path": "/home/office/source-code"

"filer": [
  {
    "source" : "/resources/en/*.json",                                          #fildefilsfilter
    "translation" : "/resources/%two_letters_code%/%original_file_name%"        #hvor oversættelser er lagret
  }
]

Bemærk: Hvis du i Windows benytter den gængse mappeserarator, skal den være dobbelt i overensstemmelse med YAML-syntaksen:

{
"source" : "\\resources\\en\\*.json",
"translation" : "\\resources\\%two_letters_code%\\%original_file_name%"
}

For at køre ovenstående opsætningsfil og uploade kildefiler til Crowdin:

$ crowdin upload sources -b

Hent oversættelser fra Crowdin og placér dem de rigtige steder:

$ crowdin download

API-referencer fra miljøvariabler

Du kan indlæse API-akkreditiverne fra en miljøvariabel, f.eks.:

"api_key_env": CROWDIN_API_KEY
"project_identifier_env": CROWDIN_PROJECT_ID
"base_path_env": CROWDIN_BASE_PATH

Hvis blandet, prioriteres api_key og project_identifier:

"api_key_env": CROWDIN_API_KEY            #Lav prioritet
"project_identifier_env": CROWDIN_PROJECT #Lav prioritet
"base_path_env": CROWDIN_BASE_PATH        #Lav prioritet
"api_key": "xxx"                          #Høj prioritet
"project_identifier": "yyy"               #Høj prioritet
"base_path": "zzz"                        #Høj prioritet

Split projektopsætning og API-referencer

crowdin.yaml-filen indeholder en beskrivelse af de ressourcer, som skal håndteres samt API-akkreditiver (api_key, project_identifier, base_path). Det betyder, at det er reiskabelt at lagre denne i kodedepotet, da API-nøglen vil være tilgængelig for andre brugere. Crowdin-CLI understøtter 2 typer opsætningsfiler: + en beskrivelse, placeret i projektmappen, af de ressourcer, som skal håndteres + API-akkreditiver, sandsynligvis placeret i $HOME/.crowdin.yaml

Bemærk: API-akkreditiver fra .crowdin.yaml-opsætningsfilen har højere prioritet end akkreditiver fra projektmappen (crowdin.yaml).

Har du behov for at køre en kommando med brugerspecifikke akkreditiver (f.eks. upload-kilder). så eksekvér flg. kommando:

$ crowdin upload sources --identity 'path-to-user-credentials-file'

Hvis brugerspecifikke akkreditiver er placeret i $HOME/.crowdin.yaml, kan du blot køre:

$ crowdin upload sources -b

Generel opsætning

Den ovenfor viste prøveopsætning har kilde- og oversættelsesattributter indeholdende standard jokertegn (også betegnet globbing mønstre) for at gøre det nemmere at arbejde med flere filer.

Her er mønstre, du kan bruge:

* (stjerne)

Representerer ethvert tegn i et fil- eller mappenavn. Angives “*.json”, vil den inkludere alle filer af typen “.json”.

**** (dobbeltstjerne)

Matcher enhver streng rekursivt (inkl. undermapper). Bemærk, at du kan benytte ** i både kilde- og oversættelsesmønstre. Når du benytter ** i oversættelsesmønsteret, vil det altid indeholde understier fra kilden til en bestemt fil. F.eks. kan du benytte kilden: ‘/da/****.po’ for at uploade alle *.po-filer til Crowdin rekursivt. Oversættelsesmønsteret vil være ‘/%two_letters_code%/*/%original_file_name%’.

? (spørgsmålstegn)

Matcher ethvert enkelttegn.

[set]

Matcher ethvert enkelttegn i et sæt. Opfører sig nøjagtigt som tegnsæt i Regexp inkl. sætnegering ([^a-z]).

** (omvendt skråstreg)

Escaper det næste metategn.

Pladsholdere

Crowdin-CLI gør det muligt at benytte flg. pladsholdere til at indsætte passende variabler i det resulterende filnavn:

Navn Beskriveslse
%language% Sprognavn (f.eks. Dansk)
%two_letters_code% Sprogkode ISO 639-1 (dvs. UK)
%three_letters_code% Sprogkode ISO 639-2/T (dvs. ukr)
%locale% Landestandard (f.eks. uk-UA)
%locale_with_underscore% Landestandard (f.eks. uk_UA)
%original_file_name% Oprindeligt filnavn
%android_code% Android Landestandard-ID benyttes ved navngivning af "værdier"-mapper
%osx_code% OS X-landestandard-ID benyttet ved navngivning af ".lproj"-mapper
%original_path% Benyt navne på overordnede mapper i Crowdin-projektet for at opbygge en filsti i den resulterende pakke
%file_extension% Oprindeligt filtypenavn
%file_name% Filnavn uden fiíltypeangivelse

Du kan også definere stien til filer i det resulterende depot ved at sætte et skråstreg (/) i starten af mønsteret.

Din oversættelsesindstilling kan se ud som: “/ locale /%two_letters_code%/ LC_MESSAGES /%original_file_name%”.

Brug af jokertegn

Opbygning af filer og mapper på den lokale maskine:

- base_path
      |
      |-- mappe
      |     |
      |     |-- 1.xml
      |     |-- 1.txt
      |     |-- 123.txt
      |     |-- 123_test.txt
      |     |-- a.txt
      |     |-- a1.txt
      |     |-- crowdin?test.txt
      |     |-- crowdin_test.txt
      |
      |-- 1.xml
      |-- 1.txt
      |-- 123.txt
      |-- 123_test.txt
      |-- a.txt
      |-- a1.txt
      |-- crowdin?test.txt
      |-- crowdin_test.txt
      |-- 3.txt

Eks. 1. Brug af jokertegn i kildestien:

#........din projektkonfiguration........
"files" : [
  {
    "source" : "/**/?[0-9].txt", #upload a1.txt, folder/a1.txt
    "translation" : "/**/%two_letters_code%_%original_file_name%"
  },
  {
    "source" : "/**/*\\?*.txt", #upload crowdin?test.txt, folder/crowdin?test.txt
    "translation" : "/**/%two_letters_code%_%original_file_name%"
  },
  {
    "source" : "/**/[^0-2].txt", #upload 3.txt, folder/3.txt, a.txt, folder/a.txt (ignore 1.txt, folder/1.txt)
    "translation" : "/**/%two_letters_code%_%original_file_name%"
  }
]

Eks. 2. Brug af jokertegn til ignorering af filer:

#........din projektkonfiguration........

"files": [
  {
    "source" : "/**/*.*", #upload alle filer, som base_path indeholder
    "translation" : "/**/%two_letters_code%_%original_file_name%",
    "ignore" : [
      "/**/%two_letters_code%_%original_file_name%", #ignorér de oversatte filer
      "/**/?.txt",                                   #ignorér 1.txt, a.txt, mappe/1.txt, mappe/a.txt
      "/**/[0-9].txt",                               #ignorér 1.txt, mappe/1.txt
      "/**/*\\?*.txt",                               #ignorér crowdin?test.txt, mappe/crowdin?test.txt
      "/**/[0-9][0-9][0-9].txt",                     #ignorér 123.txt , mappe/123.txt
      "/**/[0-9]*_*.txt"                             #ignorér 123_test.txt, mappe/123_test.txt
    ]
  }
]

Sprogtilknytning

Ofte har softwareprojekter tilpassede navne til lokalmapper. Crowdin giver mulighed for at mappe dine egne sprog.

Lad os antage, at dine lokalmapper er navngivet ‘en’, ‘uk’, ‘fr’, ‘de’. De kan alle repræsenteres af parameteren %two_letters_code%. Du har stadig en mappe med navnet ‘zh_CH’. For at få dette til at fungere med Crowdin-CLI uden ændringer i dit projekt, kan du føje et languages_mapping-afsnit til dit filsæt.

Mappingformatet er som følgende: “crowdin_language_code”: “kode_du_benytter” . Tjek den komplette liste over Crowdin-sprogkoder til brug for mapping.

Du kan også tilsidesætte sprogkoder for andre parametre såsom %android_code%, %locale% mv.

Du kan via brugerfladen (UI) opsætte Sprogmappning for ethvert af dit projektets målsprog: 1. Gå til afsnittet Projektindstillinger, Eksport. 2. Klik på Sprogmapping. 3. Vælg de ønskede sprog, variabler og tilføj tilpasset kode.

Omdøbe oversættelsesfil

Har du behov for at omdøbe en fil med oversættelser efter eksporten, kan du nemt gøre dette vha. parameteren translation_replace.

Hedder filen f.eks. “strings_en.xml”, kan den omdøbe til “strings.xml”. Til dette skal du føje en ny parameter (på samme niveau som oversættelsesparameteren) til opsætningsfilen (crowdin.yaml):

"files" : [
  {
    "source" : "/locale/**/en_*.po",
    "translation" : "/locale/**/%two_letters_code%_%original_file_name%",
    "translation_replace": {
        "en_" : ""
    }
  }
]

I dette tilfælde vil “_en” simpelthen blive slettet fra filnavnet.

Ignorere filer og mapper

Fra tid til anden er der filer og mapper, du ikke behøver at oversætte i Crowdin. I sådanne tilfælde kan lokale pr. fil-regler føjes til dit projekts opsætningsfil.

"files": [
  {
    "source" : "/**/*.properties",
    "translation" : "/**/%file_name%_%two_letters_code%.%file_extension%",
    "ignore" : [
      "/test/file.properties",
      "/example.properties"
    ]
  },
  {
    "source" : "/locale/en/**/*.po",
    "translation" : "/locale/%two_letters_code%/**/%original_file_name%",
    "ignore" : [
      "/locale/en/templates",
      "/locale/en/workflow"
    ]
  }
]

Flersøjle CSV

Indeholder en CSV-fil oversættelserne for alle målsprog, skal du angive passende sprogkoder i planen.

CSV-fileksempel:

identifier,source_phrase,context,Ukrainian,Russian,French
ident1,Source 1,Context 1,,,
ident2,Source 2,Context 2,,,
ident3,Source 3,Context 3,,,

Opsætningsfileksempel:

"files" : [
  {
    "source" : "multicolumn.csv",
    "translation" : "multicolumn.csv",
    "first_line_contains_header" : true,
    "scheme" : "identifier,source_phrase,context,uk,ru,fr"
  }
]

Lagring af mappestruktur på server

"preserve_hierarchy": true

Eksempel på filopsætning vha. preserve_hierarchy-muligheden:

"project_identifier": "test"
"api_key": "KeepTheAPIkeySecret"
"base_url": "https://api.crowdin.com"
"base_path": "/path/to/your/project"
"preserve_hierarchy": true

"files" : [
  {
    "source" : "/locale/en/**/*.po",
    "translation" : "/locale/%two_letters_code%/**/%original_file_name%"
  }
]

Som standard oprettes mapper uden filindehold til oversættelse ikke i Crowdin. F.eks.:

- locale
    |
    |-- en
        |
        |-- foo.po
        |-- bar.po

Som standard repræsenteres projektfiler som følgende:

- foo.po
- bar.po

Vha. indstillingen preserve_hierarchy, vil filstrukturen vil være følgende:

- en
  |
  |-- foo.po
  |-- bar.po

Upload af filer til specificeret sti med specificeret type

Denne funktion tilføjer understøttelse af 2 valgfrie parametre i yaml-filafsnittet: dest og type. Dette benyttes typisk til projekter, hvor det uploadede navn skal være anderledes, så Crowdin kan registrere typen korrekt. dest-parameteren giver mulighed for at angive et filnavn i Crowdin.

Bemærk! dest-parameteren virker kun for enkeltfiler

Eksempel på en opsætningsfil med begge parametre:

"project_identifier": "your-project-identifier"
"api_key": "54e01e81--your-api-key--f6a2724a"           #befinder sig på din projektindstillingsside
"base_path": "/home/office/source-code"

"files" : [
  {
    "source" : "/conf/messages",
    "dest" : "/messages.properties",
    "translation" : "/conf/messages.%two_letters_code%",
    "type" : "properties"
  },
  {
  "source" : "/app/strings.xml",
  "dest" : "/strings.xml",
  "translation" : "/res/values-%android_code%/%original_file_name%"
  }
]

Ændrede strengeopdateringer

Parameteren update_option er valgfri. Er den ikke er angivet, går oversættelser for ændrede strenge tabt. Nyttig til typografiske rettelser og mindre ændringer i kildestrengene.

Afhængigt af værdien benyttes update_option til at bevare oversættelser og bevare/fjerne valideringer af ændrede strenge under filopdatering.

Værdierne er: * update_as_unapproved - bevar oversættelser af ændrede strenge og fjern eksisterede valideringer af disse oversættelser * update_without_changes - bevar oversættelser og valideringer af ændrede strenge

Eksempel på en opsætningsfil med update_option-parameteren:

"project_identifier": "your-project-identifier"
"api_key": "54e01e81--your-api-key--f6a2724a"           #befinder sig på din projektindstillingsside
"base_path": "/home/office/source-code"

"files" : [
  {
    "source" : "/*.csv",
    "translation" : "/%three_letters_code%/%file_name%.csv",
    "first_line_contains_header" : true,
    "scheme" : "identifier,source_phrase,translation,context",
    "update_option" : "update_as_unapproved"
  },
  {
    "source": "/**/*.xlsx",
    "translation" : "/%three_letters_code%/folder/%file_name%.xlsx",
    "update_option" : "update_without_changes"
  }
]

Oversættelses-uploads

Kommandoen upload translations uploader eksisterende oversættelser til Crowdin. Er ingen indstillinger angivet, importeres uploadede oversættelser, selvom de er dubletter eller identiske med kildestrengen, og de godkendes ikke.

Værdierne er:

  • -l, –language=language_code - definerer sprogoversættelserne, som skal uploades til Crowdin. Oversættelser uploades som standard til alle projektets målsprog. (Crowdin Sprogkoder)
  • –[no-]import-duplicates - definerer, om der skal tilføjes oversættelse, hvis den samme oversættelse allerede findes i projektet
  • –[no-]import-duplicates - definerer, om der skal tilføjes en oversættelse, hvis den er lig en allerede eksisterende kildestreng i projektet
  • **–[no-]auto-approve-imported ** - godkender automatisk uploadede oversættelser

Yderligere muligheder for XML-filer

translate_content
valgfrit
bool Definerer, om tekster skal placeres inden for tags. Gyldige værdier er: 0 eller 1. Standard er 1.
translate_attibutes
valgfri
bool Definerer, om tagattributter skal oversættes. Gyldige værdier er: 0 eller 1. Standard er 1.
content_segmentation
valgfri
bool Definerer, om lange tekster skal opdeles i kortere tekstsegmenter. Gyldige værdier er: 0 eller 1. Standard er 1.
Vigtigt! Denne indstilling umuliggør upload af eksisterende oversættelser til XML-filer, når den er aktiveret.
translatable_elements
valgfri
matrix Dette er en matrix af strenge, hvori hvert element er XPaths tilet DOM-element, der skal importeres.
Eksempelsti: /path/to/node or /path/to/attribute[@attr]
Bemærk! Hvis angivet, tages parametrene translate_content og translate_attributes ikke i betragtning under importen.

Eksempel på en opsætningsfil med ekstra parametre:

"project_identifier": "your-project-identifier"
"api_key": "54e01e81--your-api-key--f6a2724a"           #befinder sig på din projektindstillingsside
"base_path": "/home/office/source-code"

"files" : [
  {
    "source" : "/app/sample1.xml",
    "translation" : "/app/%locale%/%original_file_name%",
    "translate_attributes" : 1,
    "translate_content" : 0
  },
  {
    "source" : "/app/sample2.xml",
    "translation" : "/app/%locale%/%original_file_name%",
    "translatable_elements" : [
      "/content/text",             # translatable texts are stored in "text" nodes of parent node "content"
      "/content/text[@value]"      # translatable texts are stored in "value" attribute of "text" nodes
    ]
  }
]

Escape-anførselstegnsvalg for .properties-filformater

Definerer, om et enkelt anførselstegn skal escapes af et andet enkelt anførselstegn eller bagudvendt stråstreg i eksporterede oversættelser. Du kan tilføje escape_quote-muligheden pr. fil. Gyldige værdier er: 0, 1, 2, 3. Standard er 3.

Værdierne er:

  • 0 - escape ikke enkelt anførselstegn
  • 1 - escape enkelt anførselstegn med et andet enkelt anførselstegn
  • 2 - escape enkelt anførselstegn med en bagudvendt skråstreg
  • 3 - escape kun enkelt anførselstegn med en anden enkelt anførselstegn i strenge indeholdende variabler ( {0})

Escaper specialtegn
Definerer, om visse specialtegn (=, :, ! og #) skal escapes med bagudvendt skråstreg i eksporterede oversættelser. Du kan tilføje escape_quote-muligheden pr. fil.

Gyldige værdier er: 0, 1. Standard er 0.

  • 0 - escaper ikke specialtegn
  • 1 - escaper specialtegn med en bagudvendt skråstreg

Opsætningsfileksempel:

"project_identifier": "your-project-identifier"
"api_key”: "54e01e81--your-api-key--f6a2724a"           #befinder sig på din projektindstillingsside
"base_path”: "/home/office/source-code"

"files" : [
  {
    "source" : "/en/strings.properties",
    "translation" : "/%two_letters_code%/%original_file_name%",
    "escape_quotes" : 1,
    "escape_special_characters: 0"
  }
]

Eksempelopsætninger

Upload af CSV-filer via API

"project_identifier": "test"
"api_key": "KeepTheAPIkeySecret"
"base_url": "https://api.crowdin.com"
"base_path": "/path/to/your/project"

"files" : [
  {
    "source" : "/*.csv",
    "translation" : "/%two_letters_code%/%original_file_name%",
    #Defineer, hvorvidt første linje skal importeres eller indeholder kolonneoverskrifter
    "first_line_contains_header" : true,
    #Benyttes kun ved upload af CSV-fil til definering af datakolonnemapninger.
    "scheme" : "identifier,source_phrase,translation,context,max_length"
  }
]

GetText-projekt

"project_identifier": "your-project-identifier"
"api_key": "54e01e81--your-api-key--f6a2724a"           #befinder sig på din projektindstillingsside
"base_path": "/home/website"

"files" : [
  {
    "source" : "/locale/en/**/*.po",
    "translation" : "/locale/%two_letters_code%/LC_MESSAGES/%original_file_name%",
    "languages_mapping" : {
      "two_letters_code" : {
        "zh-CN" : "zh_CH",
        "fr-QC": "fr"
      }
    }
  }
]

Android-projekt

"project_identifier": "your-project-identifier"
"api_key": "54e01e81--your-api-key--f6a2724a"           #befinder sig på din projektindstillingsside
"base_path": "/home/android-app"

"files" : [
  {
    "source" : "/res/values/*.xml",
    "translation" : "/res/values-%android_code%/%original_file_name%",
    "languages_mapping" : {
      "android_code" : {
        "de" : "de",
        "ru" : "ru"
      }
    }
  }
]

Opsætningsfil til VCS-integrationer

VCS-integrationer kræver den samme opsætningsfil som CLI-værktøjet, hvilket betyder, at den samme struktur understøttes. Den eneste forskel er, at projektets akkreditiver af sikkerhedsmæssige årsager ikke skal lagres i filoverskriften. Der kan også benyttes to ekstra parametre.

Commit-meddelelsesparameter for VCS-integrationer

Hver gang oversættelser commites, vises standardmeddelelsen “Nye oversættelser {fileName} ({languageName})”. Du kan benytte commit_message-parameteren til at tilføje Git-tags for at overspringe bygninger, tilføje tests mm.

Eksempel:

"base_path": "/home/office/source-code"
"commit_message": "[ci skip]"                
"files": [
  {
    "source" : "/resources/en/*.json",                                          #kildefilsfilter
    "translation" : "/resources/%two_letters_code%/%original_file_name%"        #hvor oversættelser er lagret
  }
]

For at erstatte standard commit-meddelelsen skal du benytte append_commit_message-parameteren med værdien false. Du kan også tilføje to valgfrie parametre: %original_file_name% og %language% for at benytte det relevante filnavn og sprogvariablerne i relation hertil.

Eksempel:

"commit_message": "Fix: New translations %original_file_name% from Crowdin"                
"append_commit_message": false
"files": [
  {
    "source" : "/resources/en/*.json",                                          #kildefilsfilter
    "translation" : "/resources/%two_letters_code%/%original_file_name%"        #hvor oversættelser er lagret
  }
]

Eksportere sprogparameter til VCS-integrationer

Som standard eksporteres alle sprogene. Har du behov for at eksportere visse bestemte sprog, så benyt parameteren export_languages for at angive disse.

Eksempel:

"base_path": "/home/office/source-code"
"export_languages": [                                   
    "ru", 
    "uk", 
    "ja"
  ]
"files": [
  {
    "source" : "/resources/en/*.json",                                          #kildefilsfilter
    "translation" : "/resources/%two_letters_code%/%original_file_name%"        #hvor oversættelser er lagret
  }
]

Søge assistance

Behov for hjælp til at arbejde med Crowdin-CLI eller har du spørgsmål? Kontakt supportteamet.

Se også

Var denne artikel nyttig?