Merge pull request #2377 from semaphoreui/runners_ui

runners ui
This commit is contained in:
Denis Gukov 2024-09-29 20:38:04 +05:00 committed by GitHub
commit 1ca883f20c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
45 changed files with 5206 additions and 1572 deletions

3
.gitignore vendored
View File

@ -7,6 +7,8 @@ web/public/fonts/*.*
web/.nyc_output
api/public/**/*
/config.json
/config-runner.json
/config-runner-token.txt
/.dredd/config.json
/database.boltdb
/database.boltdb.lock
@ -29,3 +31,4 @@ node_modules/
.vscode
__debug_bin*
.task/
/web/.env

View File

@ -215,6 +215,7 @@ func setAppActive(w http.ResponseWriter, r *http.Request) {
}
if !helpers.Bind(w, r, &body) {
helpers.WriteErrorStatus(w, "Invalid request body", http.StatusBadRequest)
return
}

View File

@ -80,18 +80,20 @@ func Route() *mux.Router {
publicAPIRouter := r.PathPrefix(webPath + "api").Subrouter()
publicAPIRouter.Use(StoreMiddleware, JSONMiddleware)
publicAPIRouter.HandleFunc("/runners", runners.RegisterRunner).Methods("POST")
publicAPIRouter.HandleFunc("/auth/login", login).Methods("GET", "POST")
publicAPIRouter.HandleFunc("/auth/logout", logout).Methods("POST")
publicAPIRouter.HandleFunc("/auth/oidc/{provider}/login", oidcLogin).Methods("GET")
publicAPIRouter.HandleFunc("/auth/oidc/{provider}/redirect", oidcRedirect).Methods("GET")
publicAPIRouter.HandleFunc("/auth/oidc/{provider}/redirect/{redirect_path:.*}", oidcRedirect).Methods("GET")
routersAPI := r.PathPrefix(webPath + "api").Subrouter()
routersAPI.Use(StoreMiddleware, JSONMiddleware, runners.RunnerMiddleware)
routersAPI.Path("/runners/{runner_id}").HandlerFunc(runners.GetRunner).Methods("GET", "HEAD")
routersAPI.Path("/runners/{runner_id}").HandlerFunc(runners.UpdateRunner).Methods("PUT")
routersAPI.Path("/runners/{runner_id}").HandlerFunc(runners.UnregisterRunner).Methods("DELETE")
internalAPI := publicAPIRouter.PathPrefix("/internal").Subrouter()
internalAPI.HandleFunc("/runners", runners.RegisterRunner).Methods("POST")
runnersAPI := internalAPI.PathPrefix("/runners").Subrouter()
runnersAPI.Use(runners.RunnerMiddleware)
runnersAPI.Path("").HandlerFunc(runners.GetRunner).Methods("GET", "HEAD")
runnersAPI.Path("").HandlerFunc(runners.UpdateRunner).Methods("PUT")
runnersAPI.Path("").HandlerFunc(runners.UnregisterRunner).Methods("DELETE")
publicWebHookRouter := r.PathPrefix(webPath + "api").Subrouter()
publicWebHookRouter.Use(StoreMiddleware, JSONMiddleware)
@ -128,6 +130,16 @@ func Route() *mux.Router {
adminAPI.Path("/options").HandlerFunc(getOptions).Methods("GET", "HEAD")
adminAPI.Path("/options").HandlerFunc(setOption).Methods("POST")
adminAPI.Path("/runners").HandlerFunc(getGlobalRunners).Methods("GET", "HEAD")
adminAPI.Path("/runners").HandlerFunc(addGlobalRunner).Methods("POST", "HEAD")
globalRunnersAPI := adminAPI.PathPrefix("/runners").Subrouter()
globalRunnersAPI.Use(globalRunnerMiddleware)
globalRunnersAPI.Path("/{runner_id}").HandlerFunc(getGlobalRunner).Methods("GET", "HEAD")
globalRunnersAPI.Path("/{runner_id}").HandlerFunc(updateGlobalRunner).Methods("PUT", "POST")
globalRunnersAPI.Path("/{runner_id}/active").HandlerFunc(setGlobalRunnerActive).Methods("POST")
globalRunnersAPI.Path("/{runner_id}").HandlerFunc(deleteGlobalRunner).Methods("DELETE")
appsAPI := adminAPI.PathPrefix("/apps").Subrouter()
appsAPI.Use(appMiddleware)
appsAPI.Path("/{app_id}").HandlerFunc(getApp).Methods("GET", "HEAD")
@ -446,8 +458,10 @@ func serveFile(w http.ResponseWriter, r *http.Request, name string) {
func getSystemInfo(w http.ResponseWriter, r *http.Request) {
body := map[string]interface{}{
"version": util.Version(),
"ansible": util.AnsibleVersion(),
"version": util.Version(),
"ansible": util.AnsibleVersion(),
"web_host": util.WebHostURL.String(),
"use_remote_runner": util.Config.UseRemoteRunner,
}
helpers.WriteJSON(w, http.StatusOK, body)

157
api/runners.go Normal file
View File

@ -0,0 +1,157 @@
package api
import (
"github.com/ansible-semaphore/semaphore/api/helpers"
"github.com/ansible-semaphore/semaphore/db"
log "github.com/sirupsen/logrus"
"net/http"
"github.com/gorilla/context"
)
//type minimalGlobalRunner struct {
// ID int `json:"id"`
// Name string `json:"name"`
// Active bool `json:"active"`
// Webhook string `db:"webhook" json:"webhook"`
// MaxParallelTasks int `db:"max_parallel_tasks" json:"max_parallel_tasks"`
//}
func getGlobalRunners(w http.ResponseWriter, r *http.Request) {
runners, err := helpers.Store(r).GetGlobalRunners(false)
if err != nil {
panic(err)
}
var result = make([]db.Runner, 0)
for _, runner := range runners {
result = append(result, runner)
}
helpers.WriteJSON(w, http.StatusOK, result)
}
type runnerWithToken struct {
db.Runner
Token string `json:"token"`
}
func addGlobalRunner(w http.ResponseWriter, r *http.Request) {
var runner db.Runner
if !helpers.Bind(w, r, &runner) {
return
}
runner.ProjectID = nil
newRunner, err := helpers.Store(r).CreateRunner(runner)
if err != nil {
log.Warn("Runner is not created: " + err.Error())
w.WriteHeader(http.StatusBadRequest)
return
}
helpers.WriteJSON(w, http.StatusCreated, runnerWithToken{
Runner: newRunner,
Token: newRunner.Token,
})
}
func globalRunnerMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
runnerID, err := helpers.GetIntParam("runner_id", w, r)
if err != nil {
helpers.WriteJSON(w, http.StatusBadRequest, map[string]string{
"error": "runner_id required",
})
return
}
store := helpers.Store(r)
runner, err := store.GetGlobalRunner(runnerID)
if err != nil {
helpers.WriteJSON(w, http.StatusNotFound, map[string]string{
"error": "Runner not found",
})
return
}
context.Set(r, "runner", &runner)
next.ServeHTTP(w, r)
})
}
func getGlobalRunner(w http.ResponseWriter, r *http.Request) {
runner := context.Get(r, "runner").(*db.Runner)
helpers.WriteJSON(w, http.StatusOK, runner)
}
func updateGlobalRunner(w http.ResponseWriter, r *http.Request) {
oldRunner := context.Get(r, "runner").(*db.Runner)
var runner db.Runner
if !helpers.Bind(w, r, &runner) {
return
}
store := helpers.Store(r)
runner.ID = oldRunner.ID
runner.ProjectID = nil
err := store.UpdateRunner(runner)
if err != nil {
helpers.WriteErrorStatus(w, err.Error(), http.StatusBadRequest)
return
}
w.WriteHeader(http.StatusNoContent)
}
func deleteGlobalRunner(w http.ResponseWriter, r *http.Request) {
runner := context.Get(r, "runner").(*db.Runner)
store := helpers.Store(r)
err := store.DeleteGlobalRunner(runner.ID)
if err != nil {
helpers.WriteErrorStatus(w, err.Error(), http.StatusBadRequest)
return
}
w.WriteHeader(http.StatusNoContent)
}
func setGlobalRunnerActive(w http.ResponseWriter, r *http.Request) {
runner := context.Get(r, "runner").(*db.Runner)
store := helpers.Store(r)
var body struct {
Active bool `json:"active"`
}
if !helpers.Bind(w, r, &body) {
helpers.WriteErrorStatus(w, "Invalid request body", http.StatusBadRequest)
return
}
runner.Active = body.Active
err := store.UpdateRunner(*runner)
if err != nil {
helpers.WriteErrorStatus(w, err.Error(), http.StatusBadRequest)
return
}
w.WriteHeader(http.StatusNoContent)
}

View File

@ -14,7 +14,7 @@ import (
func RunnerMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
token := r.Header.Get("X-API-Token")
token := r.Header.Get("X-Runner-Token")
if token == "" {
helpers.WriteJSON(w, http.StatusUnauthorized, map[string]string{
@ -23,18 +23,9 @@ func RunnerMiddleware(next http.Handler) http.Handler {
return
}
runnerID, err := helpers.GetIntParam("runner_id", w, r)
if err != nil {
helpers.WriteJSON(w, http.StatusBadRequest, map[string]string{
"error": "runner_id required",
})
return
}
store := helpers.Store(r)
runner, err := store.GetGlobalRunner(runnerID)
runner, err := store.GetGlobalRunnerByToken(token)
if err != nil {
helpers.WriteJSON(w, http.StatusNotFound, map[string]string{
@ -199,11 +190,12 @@ func RegisterRunner(w http.ResponseWriter, r *http.Request) {
return
}
res := util.RunnerConfig{
RunnerID: runner.ID,
Token: runner.Token,
var res struct {
Token string `json:"token"`
}
res.Token = runner.Token
helpers.WriteJSON(w, http.StatusOK, res)
}

View File

@ -19,6 +19,7 @@ import (
)
var configPath string
var noConfig bool
var rootCmd = &cobra.Command{
Use: "semaphore",
@ -34,8 +35,9 @@ Complete documentation is available at https://ansible-semaphore.com.`,
func Execute() {
rootCmd.PersistentFlags().StringVar(&configPath, "config", "", "Configuration file path")
rootCmd.PersistentFlags().BoolVar(&noConfig, "no-config", false, "Don't use configuration file")
if err := rootCmd.Execute(); err != nil {
fmt.Fprintln(os.Stderr, err)
_, _ = fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
}
@ -96,7 +98,7 @@ func runService() {
}
func createStore(token string) db.Store {
util.ConfigInit(configPath)
util.ConfigInit(configPath, noConfig)
store := factory.CreateStore()

View File

@ -11,7 +11,7 @@ func init() {
}
func runRunner() {
util.ConfigInit(configPath)
util.ConfigInit(configPath, noConfig)
taskPool := runners.JobPool{}

View File

@ -11,7 +11,7 @@ func init() {
}
func unregisterRunner() {
util.ConfigInit(configPath)
util.ConfigInit(configPath, noConfig)
taskPool := runners.JobPool{}
err := taskPool.Unregister()

View File

@ -33,7 +33,7 @@ func doSetup() int {
configPath := setup.SaveConfig(config)
util.ConfigInit(configPath)
util.ConfigInit(configPath, false)
fmt.Println(" Pinging db..")

View File

@ -1,13 +0,0 @@
{
"bolt": {
"host": "/Users/fiftin/go/src/github.com/ansible-semaphore/semaphore/database.boltdb"
},
"dialect": "bolt",
"tmp_path": "/var/folders/x1/d7p_yr4j7g57_r2r8s0ll_1r0000gn/T/semaphore",
"runner": {
"config_file": "/tmp/semaphore-runner.json",
"api_url": "http://localhost:3000/api"
}
}

View File

@ -71,6 +71,7 @@ func GetMigrations() []Migration {
{Version: "2.10.12"},
{Version: "2.10.15"},
{Version: "2.10.16"},
{Version: "2.10.26"},
}
}

View File

@ -8,10 +8,12 @@ type RunnerState string
//)
type Runner struct {
ID int `db:"id" json:"-"`
ID int `db:"id" json:"id"`
Token string `db:"token" json:"-"`
ProjectID *int `db:"project_id" json:"project_id"`
//State RunnerState `db:"state" json:"state"`
Webhook string `db:"webhook" json:"webhook"`
MaxParallelTasks int `db:"max_parallel_tasks" json:"max_parallel_tasks"`
Active bool `db:"active" json:"active"`
Name string `db:"name" json:"name"`
}

View File

@ -256,8 +256,9 @@ type Store interface {
GetRunner(projectID int, runnerID int) (Runner, error)
GetRunners(projectID int) ([]Runner, error)
DeleteRunner(projectID int, runnerID int) error
GetGlobalRunnerByToken(token string) (Runner, error)
GetGlobalRunner(runnerID int) (Runner, error)
GetGlobalRunners() ([]Runner, error)
GetGlobalRunners(activeOnly bool) ([]Runner, error)
DeleteGlobalRunner(runnerID int) error
UpdateRunner(runner Runner) error
CreateRunner(runner Runner) (Runner, error)

View File

@ -17,14 +17,42 @@ func (d *BoltDb) DeleteRunner(projectID int, runnerID int) (err error) {
return
}
func (d *BoltDb) GetGlobalRunnerByToken(token string) (runner db.Runner, err error) {
runners := make([]db.Runner, 0)
err = d.getObjects(0, db.GlobalRunnerProps, db.RetrieveQueryParams{}, func(i interface{}) bool {
r := i.(db.Runner)
return r.Token == token
}, &runners)
if err != nil {
return
}
if len(runners) == 0 {
err = db.ErrNotFound
return
}
runner = runners[0]
return
}
func (d *BoltDb) GetGlobalRunner(runnerID int) (runner db.Runner, err error) {
err = d.getObject(0, db.GlobalRunnerProps, intObjectID(runnerID), &runner)
return
}
func (d *BoltDb) GetGlobalRunners() (runners []db.Runner, err error) {
err = d.getObjects(0, db.GlobalRunnerProps, db.RetrieveQueryParams{}, nil, &runners)
func (d *BoltDb) GetGlobalRunners(activeOnly bool) (runners []db.Runner, err error) {
err = d.getObjects(0, db.GlobalRunnerProps, db.RetrieveQueryParams{}, func(i interface{}) bool {
runner := i.(*db.Runner)
if activeOnly {
return runner.Active
}
return true
}, &runners)
return
}

View File

@ -0,0 +1,2 @@
alter table `runner` add `name` varchar(100) not null default '';
alter table `runner` add `active` boolean not null default true;

View File

@ -2,6 +2,7 @@ package sql
import (
"encoding/base64"
"github.com/Masterminds/squirrel"
"github.com/ansible-semaphore/semaphore/db"
"github.com/gorilla/securecookie"
)
@ -18,13 +19,40 @@ func (d *SqlDb) DeleteRunner(projectID int, runnerID int) (err error) {
return
}
func (d *SqlDb) GetGlobalRunnerByToken(token string) (runner db.Runner, err error) {
runners := make([]db.Runner, 0)
err = d.getObjects(0, db.GlobalRunnerProps, db.RetrieveQueryParams{}, func(builder squirrel.SelectBuilder) squirrel.SelectBuilder {
return builder.Where("token=?", token)
}, &runners)
if err != nil {
return
}
if len(runners) == 0 {
err = db.ErrNotFound
return
}
runner = runners[0]
return
}
func (d *SqlDb) GetGlobalRunner(runnerID int) (runner db.Runner, err error) {
err = d.getObject(0, db.GlobalRunnerProps, runnerID, &runner)
return
}
func (d *SqlDb) GetGlobalRunners() (runners []db.Runner, err error) {
err = d.getObjects(0, db.GlobalRunnerProps, db.RetrieveQueryParams{}, nil, &runners)
func (d *SqlDb) GetGlobalRunners(activeOnly bool) (runners []db.Runner, err error) {
err = d.getObjects(0, db.GlobalRunnerProps, db.RetrieveQueryParams{}, func(builder squirrel.SelectBuilder) squirrel.SelectBuilder {
if activeOnly {
builder = builder.Where("active=?", activeOnly)
}
return builder
}, &runners)
return
}
@ -35,7 +63,9 @@ func (d *SqlDb) DeleteGlobalRunner(runnerID int) (err error) {
func (d *SqlDb) UpdateRunner(runner db.Runner) (err error) {
_, err = d.exec(
"update runner set webhook=?, max_parallel_tasks=? where id=?",
"update runner set name=?, active=?, webhook=?, max_parallel_tasks=? where id=?",
runner.Name,
runner.Active,
runner.Webhook,
runner.MaxParallelTasks,
runner.ID)
@ -48,11 +78,13 @@ func (d *SqlDb) CreateRunner(runner db.Runner) (newRunner db.Runner, err error)
insertID, err := d.insert(
"id",
"insert into runner (project_id, token, webhook, max_parallel_tasks) values (?, ?, ?, ?)",
"insert into runner (project_id, token, webhook, max_parallel_tasks, name, active) values (?, ?, ?, ?, ?, ?)",
runner.ProjectID,
token,
runner.Webhook,
runner.MaxParallelTasks)
runner.MaxParallelTasks,
runner.Name,
runner.Active)
if err != nil {
return

View File

@ -5,7 +5,7 @@ services:
image: docker.io/semaphoreui/runner:${SEMAPHORE_VERSION:-latest}
restart: always
environment:
SEMAPHORE_RUNNER_API_URL: ${SEMAPHORE_RUNNER_API_URL:-http://server:3000/api}
SEMAPHORE_RUNNER_API_URL: ${SEMAPHORE_RUNNER_API_URL:-http://server:3000/internal}
SEMAPHORE_RUNNER_REGISTRATION_TOKEN: ${SEMAPHORE_RUNNER_REGISTRATION_TOKEN:-H1wDyorbg6gTSwJlVwle2Fne}
server:

View File

@ -29,7 +29,7 @@ type JobPool struct {
queue []*job
config *util.RunnerConfig
token *string
processing int32
}
@ -56,19 +56,13 @@ func (p *JobPool) hasRunningJobs() bool {
func (p *JobPool) Unregister() (err error) {
config, err := util.LoadRunnerSettings(util.Config.Runner.ConfigFile)
if err != nil {
return
}
if config.Token == "" {
if util.Config.Runner.Token == "" {
return fmt.Errorf("runner is not registered")
}
client := &http.Client{}
url := util.Config.Runner.ApiURL + "/runners"
url := util.Config.Runner.ApiURL + "/internal/runners"
req, err := http.NewRequest("DELETE", url, nil)
if err != nil {
@ -85,9 +79,8 @@ func (p *JobPool) Unregister() (err error) {
return
}
err = os.Remove(util.Config.Runner.ConfigFile)
if err != nil {
return
if util.Config.Runner.TokenFile != "" {
err = os.Remove(util.Config.Runner.TokenFile)
}
return
@ -190,7 +183,7 @@ func (p *JobPool) sendProgress() {
client := &http.Client{}
url := util.Config.Runner.ApiURL + "/runners/" + strconv.Itoa(p.config.RunnerID)
url := util.Config.Runner.ApiURL + "/internal/runners"
body := RunnerProgress{
Jobs: nil,
@ -220,7 +213,7 @@ func (p *JobPool) sendProgress() {
return
}
req.Header.Set("X-API-Token", p.config.Token)
req.Header.Set("X-Runner-Token", *p.token)
resp, err := client.Do(req)
if err != nil {
@ -232,20 +225,20 @@ func (p *JobPool) sendProgress() {
}
func (p *JobPool) tryRegisterRunner() bool {
if p.config != nil {
if p.token != nil {
return true
}
log.Info("Attempting to register on the server")
config, err := util.LoadRunnerSettings(util.Config.Runner.ConfigFile)
//config, err := util.LoadRunnerSettings(util.Config.Runner.ConfigFile)
//
//if err != nil {
// panic(err)
//}
if err != nil {
panic(err)
}
if config.Token != "" {
p.config = &config
if util.Config.Runner.Token != "" {
p.token = &util.Config.Runner.Token
return true
}
@ -259,7 +252,7 @@ func (p *JobPool) tryRegisterRunner() bool {
client := &http.Client{}
url := util.Config.Runner.ApiURL + "/runners"
url := util.Config.Runner.ApiURL + "/internal/runners"
jsonBytes, err := json.Marshal(RunnerRegistration{
RegistrationToken: util.Config.Runner.RegistrationToken,
@ -269,37 +262,35 @@ func (p *JobPool) tryRegisterRunner() bool {
req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonBytes))
if err != nil {
log.Error("Error creating request:", err)
log.Error("Registration: Error creating request:", err)
return false
}
resp, err := client.Do(req)
if err != nil || resp.StatusCode != 200 {
log.Error("Error making request:", err)
log.Error("Registration: Error making request:", err)
return false
}
body, err := io.ReadAll(resp.Body)
if err != nil {
fmt.Println("Error reading response body:", err)
fmt.Println("Registration: Error reading response body:", err)
return false
}
err = json.Unmarshal(body, &config)
var res struct {
Token string `json:"token"`
}
err = json.Unmarshal(body, &res)
if err != nil {
fmt.Println("Error parsing JSON:", err)
fmt.Println("Registration: Error parsing JSON:", err)
return false
}
configBytes, err := json.Marshal(config)
err = os.WriteFile(util.Config.Runner.TokenFile, []byte(res.Token), 0644)
if err != nil {
panic("cannot save runner config")
}
err = os.WriteFile(util.Config.Runner.ConfigFile, configBytes, 0644)
p.config = &config
p.token = &res.Token
defer resp.Body.Close()
@ -309,13 +300,18 @@ func (p *JobPool) tryRegisterRunner() bool {
// checkNewJobs tries to find runner to queued jobs
func (p *JobPool) checkNewJobs() {
if p.token == nil {
fmt.Println("Error creating request:", "no token provided")
return
}
client := &http.Client{}
url := util.Config.Runner.ApiURL + "/runners/" + strconv.Itoa(p.config.RunnerID)
url := util.Config.Runner.ApiURL + "/internal/runners"
req, err := http.NewRequest("GET", url, nil)
req.Header.Set("X-API-Token", p.config.Token)
req.Header.Set("X-Runner-Token", *p.token)
if err != nil {
fmt.Println("Error creating request:", err)

View File

@ -79,7 +79,7 @@ func (t *RemoteJob) Run(username string, incomingVersion *string) (err error) {
var runners []db.Runner
db.StoreSession(t.taskPool.store, "run remote job", func() {
runners, err = t.taskPool.store.GetGlobalRunners()
runners, err = t.taskPool.store.GetGlobalRunners(true)
})
if err != nil {

View File

@ -91,16 +91,20 @@ const (
//
// */
type RunnerConfig struct {
RunnerID int `json:"runner_id" env:"SEMAPHORE_RUNNER_ID"`
Token string `json:"token" env:"SEMAPHORE_RUNNER_TOKEN"`
}
type RunnerSettings struct {
ApiURL string `json:"api_url" env:"SEMAPHORE_RUNNER_API_URL"`
RegistrationToken string `json:"registration_token" env:"SEMAPHORE_RUNNER_REGISTRATION_TOKEN"`
ConfigFile string `json:"config_file" env:"SEMAPHORE_RUNNER_CONFIG_FILE"`
// OneOff indicates than runner runs only one job and exit
Token string `json:"token" env:"SEMAPHORE_RUNNER_TOKEN"`
TokenFile string `json:"token_file" env:"SEMAPHORE_RUNNER_TOKEN_FILE"`
// OneOff indicates than runner runs only one job and exit. It is very useful for dynamic runners.
// How it works?
// Example:
// 1) User starts the task.
// 2) Semaphore found runner for task and calls runner's webhook if it provided.
// 3) Your server or lambda handling the call and starts the one-off runner.
// 4) The runner connects to the Semaphore server and handles the enqueued task(s).
OneOff bool `json:"one_off" env:"SEMAPHORE_RUNNER_ONE_OFF"`
Webhook string `json:"webhook" env:"SEMAPHORE_RUNNER_WEBHOOK"`
@ -206,57 +210,16 @@ func (conf *ConfigType) ToJSON() ([]byte, error) {
return json.MarshalIndent(&conf, " ", "\t")
}
func LoadRunnerSettings(path string) (config RunnerConfig, err error) {
configFileExists := false
if path != "" {
_, err = os.Stat(path)
if os.IsNotExist(err) {
configFileExists = false
} else if err != nil {
return
} else {
configFileExists = true
}
}
if configFileExists {
var configBytes []byte
configBytes, err = os.ReadFile(path)
if err != nil {
return
}
err = json.Unmarshal(configBytes, &config)
if err != nil {
return
}
}
err = loadEnvironmentToObject(&config)
if err != nil {
return
}
err = loadDefaultsToObject(&config)
return
}
// ConfigInit reads in cli flags, and switches actions appropriately on them
func ConfigInit(configPath string) {
func ConfigInit(configPath string, noConfigFile bool) {
fmt.Println("Loading config")
Config = &ConfigType{}
Config.Apps = map[string]App{}
loadConfigFile(configPath)
if !noConfigFile {
loadConfigFile(configPath)
}
loadConfigEnvironment()
loadConfigDefaults()
@ -275,6 +238,13 @@ func ConfigInit(configPath string) {
if len(WebHostURL.String()) == 0 {
WebHostURL = nil
}
if Config.Runner.TokenFile != "" {
runnerTokenBytes, err := os.ReadFile(Config.Runner.TokenFile)
if err == nil {
Config.Runner.Token = string(runnerTokenBytes)
}
}
}
func loadConfigFile(configPath string) {
@ -291,6 +261,7 @@ func loadConfigFile(configPath string) {
paths := []string{
path.Join(cwd, "config.json"),
"/usr/local/etc/semaphore/config.json",
"/etc/semaphore/config.json",
}
for _, p := range paths {
_, err = os.Stat(p)

59
web/gulp-gpt-translate.js Normal file
View File

@ -0,0 +1,59 @@
const through = require('through2');
const PluginError = require('plugin-error');
const { OpenAI } = require('openai');
const PLUGIN_NAME = 'gulp-gpt-translate';
function gptTranslate(options) {
if (!options || !options.apiKey) {
throw new PluginError(PLUGIN_NAME, 'An OpenAI API key is required.');
}
if (!options.targetLanguage) {
throw new PluginError(PLUGIN_NAME, 'A target language must be specified.');
}
const openai = new OpenAI();
return through.obj(function (file, enc, cb) {
const self = this;
if (file.isNull()) {
return cb(null, file); // Pass along if no contents
}
if (file.isStream()) {
self.emit('error', new PluginError(PLUGIN_NAME, 'Streaming not supported.'));
return cb();
}
(async () => {
try {
const content = file.contents.toString(enc);
const response = await openai.chat.completions.create({
model: options.model || 'gpt-4o-mini',
temperature: 0,
messages: [
{
role: 'system',
content: `You are a helpful assistant that translates text to ${options.targetLanguage}. `,
},
...(options.messages || []).map((m) => ({ role: 'user', content: m })),
{ role: 'user', content },
],
});
file.contents = Buffer.from(`${response.choices[0].message.content}\n`, enc);
self.push(file);
cb();
} catch (err) {
self.emit('error', new PluginError(PLUGIN_NAME, err.message));
cb(err);
}
})();
});
}
module.exports = gptTranslate;

39
web/gulpfile.js Normal file
View File

@ -0,0 +1,39 @@
const { src, dest } = require('gulp');
const rename = require('gulp-rename');
require('dotenv').config();
const gptTranslate = require('./gulp-gpt-translate');
const LANG_NAMES = {
en: 'English',
ru: 'Russian',
es: 'Spanish',
fr: 'French',
de: 'German',
it: 'Italian',
ja: 'Japanese',
ko: 'Korean',
pt: 'Portuguese',
zh_cn: 'Simplified Chinese',
zh_tw: 'Traditional Chinese',
nl: 'Dutch (Netherlands)',
pl: 'Polish',
pt_br: 'Brazilian Portuguese',
};
function tr() {
return Object.keys(LANG_NAMES).filter((lang) => lang !== 'en').map((lang) => src('src/lang/en.js')
.pipe(gptTranslate({
apiKey: process.env.OPENAI_API_KEY,
targetLanguage: LANG_NAMES[lang],
messages: [
'Translate values of the JS object fields.',
'Preserve file format. Do not wrap result to markdown tag. Result must be valid js file.',
],
}))
.pipe(rename({ basename: lang }))
.pipe(dest('src/lang')));
}
module.exports = {
tr,
};

2454
web/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -32,17 +32,24 @@
"@vue/test-utils": "^1.3.0",
"babel-eslint": "^10.1.0",
"chai": "^4.3.6",
"dotenv": "^16.4.5",
"eslint": "^7.32.0",
"eslint-plugin-import": "^2.26.0",
"eslint-plugin-vue": "^9.1.1",
"eslint-plugin-vuejs-accessibility": "^1.2.0",
"glob-parent": ">=5.1.2",
"gulp": "^5.0.0",
"gulp-cli": "^3.0.0",
"gulp-rename": "^2.0.0",
"nanoid": ">=3.1.31",
"nyc": "^15.1.0",
"openai": "^4.65.0",
"plugin-error": "^2.0.1",
"sass": "~1.32.12",
"sass-loader": "^13.0.0",
"stylus": "^0.54.8",
"stylus-loader": "^3.0.2",
"through2": "^4.0.2",
"vue-cli-plugin-vuetify": "~2.0.7",
"vue-template-compiler": "^2.6.14",
"vuetify-loader": "^1.8.0"

View File

@ -376,7 +376,7 @@
</v-list-item-content>
<v-list-item-action>
<v-chip color="red" v-if="user.admin" small>admin</v-chip>
<v-chip color="red" v-if="user.admin" small>{{ $i18n.t('admin') }}</v-chip>
</v-list-item-action>
</v-list-item>
</template>
@ -404,6 +404,20 @@
</v-list-item-content>
</v-list-item>
<v-list-item
key="runners"
to="/runners"
v-if="user.admin && systemInfo.use_remote_runner"
>
<v-list-item-icon>
<v-icon>mdi-cogs</v-icon>
</v-list-item-icon>
<v-list-item-content>
{{ $t('runners') }}
</v-list-item-content>
</v-list-item>
<v-list-item key="edit" @click="userDialog = true">
<v-list-item-icon>
<v-icon>mdi-pencil</v-icon>
@ -439,6 +453,7 @@
:userRole="(userRole || {}).role"
:userId="(user || {}).id"
:isAdmin="(user || {}).admin"
:webHost="(systemInfo || {}).web_host"
:user="user"
></router-view>
</v-main>

View File

@ -0,0 +1,61 @@
<template>
<v-form
ref="form"
lazy-validation
v-model="formValid"
v-if="item != null"
>
<v-alert
:value="formError"
color="error"
class="pb-2"
>{{ formError }}</v-alert>
<v-text-field
v-model="item.name"
:label="$t('name')"
:rules="[v => !!v || $t('name_required')]"
required
:disabled="formSaving"
></v-text-field>
<v-text-field
v-model="item.webhook"
:label="$t('webhook')"
required
:disabled="formSaving"
></v-text-field>
<v-text-field
type="number"
v-model.number="item.max_parallel_tasks"
:label="$t('maxNumberOfParallelTasksOptional')"
required
:disabled="formSaving"
></v-text-field>
<v-checkbox
v-model="item.active"
:label="$t('enabled')"
></v-checkbox>
</v-form>
</template>
<script>
import ItemFormBase from '@/components/ItemFormBase';
export default {
props: {
isAdmin: Boolean,
},
mixins: [ItemFormBase],
methods: {
getItemsUrl() {
return '/api/runners';
},
getSingleItemUrl() {
return `/api/runners/${this.itemId}`;
},
},
};
</script>

View File

@ -149,13 +149,13 @@
v-model="item.active"
>
<template v-slot:label>
Enabled
{{ $t('enabled') }}
<span
v-if="item.active"
class="ml-3"
style="color: limegreen; font-weight: bold;"
>
Next run {{ nextRunTime() | formatDate }}.
{{ $t('scheduleNextRun') }} {{ nextRunTime() | formatDate }}.
</span>
</template>
</v-checkbox>

View File

@ -1,62 +1,64 @@
export default {
'Check interval': 'Überprüfungsintervall',
Schedule: 'Zeitplan',
backup: 'Sicherung',
downloadTheProjectBackupFile: 'Laden Sie die Projektsicherungsdatei (in JSON) herunter.',
restoreProject: 'Wiederherstellen...',
incorrectUsrPwd: 'Falscher Benutzername oder falsches Passwort',
askDeleteUser: 'Soll dieser Benutzer gelöscht werden?',
askDeleteTemp: 'Soll diese Vorlage gelöscht werden?',
askDeleteEnv: 'Soll diese Umgebung gelöscht werden?',
askDeleteInv: 'Soll dieses Inventar gelöscht werden?',
askDeleteKey: 'Soll dieser Schlüssel gelöscht werden?',
askDeleteRepo: 'Soll dieses Repository gelöscht werden?',
askDeleteProj: 'Soll dieses Projekt gelöscht werden?',
askDeleteTMem: 'Soll dieses Teammitglied gelöscht werden?',
downloadTheProjectBackupFile: 'Laden Sie die Projektbackup-Datei (im JSON-Format) herunter',
restoreProject: 'Projekt wiederherstellen...',
incorrectUsrPwd: 'Falscher Benutzername oder Passwort',
askDeleteUser: 'Möchten Sie diesen Benutzer wirklich löschen?',
askDeleteTemp: 'Möchten Sie diese Vorlage wirklich löschen?',
askDeleteEnv: 'Möchten Sie diese Umgebung wirklich löschen?',
askDeleteInv: 'Möchten Sie diesen Inventar wirklich löschen?',
askDeleteKey: 'Möchten Sie diesen Schlüssel wirklich löschen?',
askDeleteRepo: 'Möchten Sie dieses Repository wirklich löschen?',
askDeleteProj: 'Möchten Sie dieses Projekt wirklich löschen?',
askDeleteTMem: 'Möchten Sie dieses Teammitglied wirklich löschen?',
edit: 'Bearbeiten',
nnew: 'Neu',
keyFormSshKey: 'SSH Schlüssel',
keyFormLoginPassword: 'Benutzername mit Passwort',
keyFormSshKey: 'SSH-Schlüssel',
keyFormLoginPassword: 'Anmeldung mit Passwort',
keyFormNone: 'Keine',
incorrectUrl: 'Ungültige URL',
incorrectUrl: 'Falsche URL',
username: 'Benutzername',
username_required: 'Benutzername ist erforderlich',
dashboard: 'Oberfläche',
history: 'Protokoll',
dashboard: 'Dashboard',
history: 'Verlauf',
activity: 'Aktivität',
settings: 'Einstellungen',
signIn: 'Einloggen',
signIn: 'Anmelden',
password: 'Passwort',
changePassword: 'Passwort ändern',
editUser: 'Benutzer bearbeiten',
newProject: 'Neues Projekt',
close: 'Schließen',
newProject2: 'Neues Projekt...',
demoMode: 'Demo-Modus',
demoMode: 'DEMO-MODUS',
task: 'Aufgabe #{expr}',
youCanRunAnyTasks: 'Sie können jede Anwendungsvorlage ausführen',
youCanRunAnyTasks: 'Sie können beliebige Aufgaben ausführen',
youHaveReadonlyAccess: 'Sie haben nur Lesezugriff',
taskTemplates: 'Anwendungsvorlagen',
taskTemplates: 'Aufgabenvorlagen',
inventory: 'Inventar',
environment: 'Umgebung',
keyStore: 'Schlüsselspeicher',
keyStore: 'Schlüsselverwaltung',
repositories: 'Repositories',
darkMode: 'Dunkler Modus',
darkMode: 'Dunkelmodus',
team: 'Team',
users: 'Benutzer',
editAccount: 'Account bearbeiten',
signOut: 'Ausloggen',
editAccount: 'Konto bearbeiten',
signOut: 'Abmelden',
error: 'Fehler',
refreshPage: 'Seite aktualisieren',
relogin: 'Neu einloggen',
howToFixSigninIssues: 'Login-Probleme beheben',
firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: 'Zuerst benötigen Sie Zugriff auf den Server, auf dem Semaphore ausgeführt wird.',
relogin: 'Erneut anmelden',
howToFixSigninIssues: 'So beheben Sie Anmeldeprobleme',
firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: 'Zuerst benötigen Sie Zugriff auf den Server, auf dem Semaphore läuft.',
executeTheFollowingCommandOnTheServerToSeeExisting: 'Führen Sie den folgenden Befehl auf dem Server aus, um vorhandene Benutzer anzuzeigen:',
semaphoreUserList: 'semaphore user list',
youCanChangePasswordOfExistingUser: 'Sie können das Passwort eines vorhandenen Benutzers ändern:',
youCanChangePasswordOfExistingUser: 'Sie können das Passwort des vorhandenen Benutzers ändern:',
semaphoreUserChangebyloginLoginUser123Password: 'semaphore user change-by-login --login user123 --password {makePasswordExample}',
orCreateNewAdminUser: 'Erstellen Sie einen neuen Administratorbenutzer:',
orCreateNewAdminUser: 'Oder erstellen Sie einen neuen Administrationsbenutzer:',
close2: 'Schließen',
semaphore: 'SEMAPHORE',
dontHaveAccountOrCantSignIn: 'Haben Sie keinen Account oder können Sie sich nicht einloggen?',
dontHaveAccountOrCantSignIn: 'Haben Sie kein Konto oder können Sie sich nicht anmelden?',
password2: 'Passwort',
cancel: 'Abbrechen',
noViews: 'Keine Ansichten',
@ -65,116 +67,118 @@ export default {
deleteEnvironment: 'Umgebung löschen',
environment2: 'Umgebung',
newEnvironment: 'Neue Umgebung',
environmentName: 'Name der Umgebung',
environmentName: 'Umgebungsname',
extraVariables: 'Zusätzliche Variablen',
enterExtraVariablesJson: 'Geben Sie zusätzliche Variablen im JSON-Format ein...',
environmentVariables: 'Umgebungsvariablen',
enterEnvJson: 'Geben Sie Umgebungsvariablen im JSON-Format ein...',
environmentAndExtraVariablesMustBeValidJsonExample: 'Zusätzliche Variablen und Umgebungsvariablen müssen gültiges JSON sein. Beispiel:',
dashboard2: 'Oberfläche',
enterEnvJson: 'Geben Sie die Umgebungs-JSON ein...',
environmentAndExtraVariablesMustBeValidJsonExample: 'Umgebungs- und zusätzliche Variablen müssen gültiges JSON sein. Beispiel:',
dashboard2: 'Dashboard',
ansibleSemaphore: 'Semaphore UI',
wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: 'Es tut uns leid, aber <%= htmlWebpackPlugin.options.title %> funktioniert nicht richtig ohne JavaScript. Bitte aktivieren Sie es, um fortzufahren.',
wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: 'Es tut uns leid, aber <%= htmlWebpackPlugin.options.title %> funktioniert nicht richtig, ohne dass JavaScript aktiviert ist. Bitte aktivieren Sie es, um fortzufahren.',
deleteInventory: 'Inventar löschen',
newInventory: 'Neues Inventar',
name: 'Name',
userCredentials: 'Benutzeranmeldeinformationen',
sudoCredentialsOptional: 'Sudo-Anmeldeinformationen (Optional)',
userCredentials: 'Benutzerdaten',
sudoCredentialsOptional: 'Sudo-Daten (Optional)',
type: 'Typ',
pathToInventoryFile: 'Pfad zur Inventar-Datei',
enterInventory: 'Inventar eingeben...',
staticInventoryExample: 'Beispiel für statisches Inventar:',
staticYamlInventoryExample: 'Beispiel für statisches YAML-Inventar:',
staticInventoryExample: 'Statisches Inventar-Beispiel:',
staticYamlInventoryExample: 'Statisches YAML-Inventar-Beispiel:',
keyName: 'Schlüsselname',
loginOptional: 'Login (Optional)',
loginOptional: 'Anmeldung (Optional)',
usernameOptional: 'Benutzername (Optional)',
privateKey: 'Privater Schlüssel',
override: 'Überschreiben',
useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: 'Verwenden Sie diesen Schlüsseltyp für HTTPS-Repositories und für Playbooks, die nicht-SSH-Verbindungen verwenden.',
useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: 'Verwenden Sie diesen Schlüsseltyp für HTTPS-Repositories und für Playbooks, die keine SSH-Verbindungen verwenden.',
deleteKey: 'Schlüssel löschen',
newKey: 'Neuer Schlüssel',
create: 'Erstellen',
newTask: 'Neue Aufgabe',
cantDeleteThe: 'Kann {objectTitle} nicht löschen',
theCantBeDeletedBecauseItUsedByTheResourcesBelow: 'Kann {objectTitle} nicht löschen, da es von den unten aufgeführten Ressourcen verwendet wird.',
theCantBeDeletedBecauseItUsedByTheResourcesBelow: '{objectTitle} kann nicht gelöscht werden, da es von den folgenden Ressourcen verwendet wird',
projectName: 'Projektname',
allowAlertsForThisProject: 'Alarme für dieses Projekt zulassen',
telegramChatIdOptional: 'Telegram Chat ID (Optional)',
maxNumberOfParallelTasksOptional: 'Maximale Anzahl an gleichzeitig ausführbaren Aufgaben (Optional)',
allowAlertsForThisProject: 'Benachrichtigungen für dieses Projekt zulassen',
telegramChatIdOptional: 'Telegram-Chat-ID (Optional)',
maxNumberOfParallelTasksOptional: 'Maximale Anzahl paralleler Aufgaben (Optional)',
deleteRepository: 'Repository löschen',
newRepository: 'Neues Repository',
urlOrPath: 'URL oder Pfad',
absPath: 'absoluter Pfad',
branch: 'Branch',
branch: 'Zweig',
accessKey: 'Zugriffsschlüssel',
credentialsToAccessToTheGitRepositoryItShouldBe: 'Anmeldeinformationen zum Zugriff auf das Git-Repository. Es sollte ein Zugriffsschlüssel sein, der Zugriff auf das Repository gewährt.',
ifYouUseGitOrSshUrl: 'Wenn Sie Git oder SSH URL verwenden.',
ifYouUseHttpsOrFileUrl: 'Wenn sie HTTPS oder statische Dateien verwenden.',
credentialsToAccessToTheGitRepositoryItShouldBe: 'Anmeldeinformationen für den Zugriff auf das Git-Repository. Es sollte sein:',
ifYouUseGitOrSshUrl: 'wenn Sie Git- oder SSH-URL verwenden.',
ifYouUseHttpsOrFileUrl: 'wenn Sie HTTPS- oder Datei-URL verwenden.',
none: 'Keine',
ssh: 'SSH',
deleteProject: 'Projekt löschen',
save: 'Speichern',
deleteProject2: 'Projekt löschen',
onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: 'Gelöschte Projekte können nicht wiederhergestellt werden. Bitte seien Sie sicher.',
onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: 'Sobald Sie ein Projekt löschen, gibt es kein Zurück. Bitte seien Sie sich dessen bewusst.',
name2: 'Name *',
title: 'Titel *',
description: 'Beschreibung',
required: 'Erforderlich',
key: '{expr}',
surveyVariables: 'Variablen',
surveyVariables: 'Umfragevariablen',
addVariable: 'Variable hinzufügen',
columns: 'Spalten',
buildVersion: 'Build Version',
buildVersion: 'Build-Version',
messageOptional: 'Nachricht (Optional)',
debug: 'Debug',
dryRun: 'Dry Run',
diff: 'Unterschied',
dryRun: 'Trockenlauf',
diff: 'Differenz',
advanced: 'Erweitert',
hide: 'Verstecken',
pleaseAllowOverridingCliArgumentInTaskTemplateSett: 'Bitte erlauben Sie das Überschreiben von CLI-Argumenten in den Einstellungen der Anwendungsvorlage.',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'CLI-Argumente (JSON array). Beispiel: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
hide: 'Ausblenden',
pleaseAllowOverridingCliArgumentInTaskTemplateSett: 'Um das Überschreiben von CLI-Argumenten in den Einstellungen der Aufgaben-Vorlage zuzulassen',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'CLI-Argumente (JSON-Array). Beispiel: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
started: 'Gestartet',
author: 'Autor',
duration: 'Dauer',
stop: 'Stoppen',
stop: 'Stop',
forceStop: 'Zwangsstop',
confirmTask: 'Bestätigen',
deleteTeamMember: 'Teammitglied löschen',
team2: 'Team',
newTeamMember: 'Neues Teammitglied',
user: 'Benutzer',
administrator: 'Administrator',
definesStartVersionOfYourArtifactEachRunIncrements: 'Definiert die Startversion Ihres Artefakts. Jeder Lauf erhöht die Version um 1. Beispiel: 0.0.0',
definesStartVersionOfYourArtifactEachRunIncrements: 'Definiert die Startversion Ihres Artefakts. Jeder Lauf erhöht die Artefaktversion.',
forMoreInformationAboutBuildingSeeThe: 'Für weitere Informationen zum Erstellen siehe die',
taskTemplateReference: 'Referenz für Anwendungsvorlagen',
definesWhatArtifactShouldBeDeployedWhenTheTaskRun: 'Definiert, welches Artefakt bereitgestellt werden soll, wenn die Aufgabe ausgeführt wird. Beispiel: myapp-{{build_version}}.tar.gz',
taskTemplateReference: 'Aufgabenvorlagenreferenz',
definesWhatArtifactShouldBeDeployedWhenTheTaskRun: 'Definiert, welches Artefakt bereitgestellt werden soll, wenn die Aufgabe ausgeführt wird.',
forMoreInformationAboutDeployingSeeThe: 'Für weitere Informationen zur Bereitstellung siehe die',
taskTemplateReference2: 'Referenz für Anwendungsvorlagen',
definesAutorunSchedule: 'Definiert den cron-Zeitplan. Beispiel: 0 0 * * *',
taskTemplateReference2: 'Aufgabenvorlagenreferenz',
definesAutorunSchedule: 'Definiert den Zeitplan für die automatische Ausführung.',
forMoreInformationAboutCronSeeThe: 'Für weitere Informationen zu Cron siehe die',
cronExpressionFormatReference: 'cron-Ausdrucksformat-Referenz',
startVersion: 'Start Version',
cronExpressionFormatReference: 'Referenz für das Cron-Ausdrucksformat',
startVersion: 'Startversion',
example000: 'Beispiel: 0.0.0',
buildTemplate: 'Anwendungsvorlage erstellen',
autorun: 'Autorun',
playbookFilename: 'Name der Playbook-Datei *',
buildTemplate: 'Build-Vorlage',
autorun: 'Automatische Ausführung',
playbookFilename: 'Playbook-Dateiname *',
exampleSiteyml: 'Beispiel: site.yml',
inventory2: 'Inventar *',
repository: 'Repository',
environment3: 'Umgebung *',
vaultPassword: 'Vault Passwort',
vaultPassword2: 'Vault Passwort',
vaultPassword: 'Vault-Passwort',
vaultPassword2: 'Vault-Passwort',
view: 'Ansicht',
cron: 'Cron',
iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: 'Ich möchte eine Aufgabe nur für neue Commits eines bestimmten Branches ausführen.',
iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: 'Ich möchte eine Aufgabe nur für neue Commits eines bestimmten Repositories über Cron ausführen',
repository2: 'Repository',
cronChecksNewCommitBeforeRun: 'Cron überprüft vor dem Ausführen neue Commits',
cronChecksNewCommitBeforeRun: 'Cron überprüft neuen Commit vor der Ausführung',
readThe: 'Lesen Sie die',
toLearnMoreAboutCron: 'um mehr über Cron zu erfahren.',
suppressSuccessAlerts: 'Erfolgsalarme unterdrücken',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'CLI-Argumente (JSON array). Beispiel: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
suppressSuccessAlerts: 'Erfolgsbenachrichtigungen unterdrücken',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'CLI-Argumente (JSON-Array). Beispiel: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
allowCliArgsInTask: 'CLI-Argumente in der Aufgabe zulassen',
docs: 'Dokumentation',
docs: 'Dokumente',
editViews: 'Ansichten bearbeiten',
newTemplate: 'Neue Vorlage',
taskTemplates2: 'Anwendungsvorlagen',
taskTemplates2: 'Aufgabenvorlagen',
all: 'Alle',
notLaunched: 'Nicht gestartet',
by: 'von {user_name}',
@ -183,56 +187,73 @@ export default {
deleteTemplate: 'Vorlage löschen',
playbook: 'Playbook',
email: 'E-Mail',
adminUser: 'Admin Benutzer',
sendAlerts: 'Alarme senden',
adminUser: 'Admin-Benutzer',
sendAlerts: 'Benachrichtigungen senden',
deleteUser: 'Benutzer löschen',
newUser: 'Neuer Benutzer',
re: 'Wiederhole: {getActionButtonTitle}',
re: 'Re{getActionButtonTitle}',
teamMember: '{expr} Teammitglied',
taskId: 'Task ID',
taskId: 'Aufgaben-ID',
version: 'Version',
status: 'Status',
start: 'Start',
actions: 'Aktionen',
alert: 'Alarm',
alert: 'Benachrichtigung',
admin: 'Admin',
role: 'Rolle',
external: 'Extern',
time: 'Zeit',
path: 'pfad',
gitUrl: 'Git URL',
sshKey: 'SSH Key',
path: 'Pfad',
gitUrl: 'Git-URL',
sshKey: 'SSH-Schlüssel',
lastTask: 'Letzte Aufgabe',
task2: 'Aufgabe',
build: 'Build',
deploy: 'Deploy',
build: 'Bauen',
deploy: 'Bereitstellen',
run: 'Ausführen',
add: 'Hinzufügen',
password_required: 'Passwort ist erforderlich',
name_required: 'Name ist erforderlich',
user_credentials_required: 'Benutzeranmeldeinformationen sind erforderlich',
user_credentials_required: 'Benutzerdaten sind erforderlich',
type_required: 'Typ ist erforderlich',
path_required: 'Pfad zur Inventar-Datei ist erforderlich',
private_key_required: 'Privater Schlüssel ist erforderlich',
project_name_required: 'Projektname ist erforderlich',
repository_required: 'Repository ist erforderlich',
branch_required: 'Branch ist erforderlich',
branch_required: 'Zweig ist erforderlich',
key_required: 'Schlüssel ist erforderlich',
user_required: 'Benutzer ist erforderlich',
build_version_required: 'Build version ist erforderlich',
build_version_required: 'Build-Version ist erforderlich',
title_required: 'Titel ist erforderlich',
isRequired: 'ist erforderlich',
mustBeInteger: 'Muss eine ganze Zahl (Integer) sein',
mustBeInteger: 'Muss eine ganze Zahl sein',
mustBe0OrGreater: 'Muss 0 oder größer sein',
start_version_required: 'Start version ist erforderlich',
playbook_filename_required: 'Name der Playbook-Datei ist erforderlich',
start_version_required: 'Startversion ist erforderlich',
playbook_filename_required: 'Playbook-Dateiname ist erforderlich',
inventory_required: 'Inventar ist erforderlich',
environment_required: 'Umgebung ist erforderlich',
email_required: 'E-Mail ist erforderlich',
build_template_required: 'Build-Vorlage ist erforderlich',
Task: 'Aufgabe',
Build: 'Build',
Deploy: 'Deploy',
Build: 'Bauen',
Deploy: 'Bereitstellen',
Run: 'Ausführen',
CreateDemoProject: 'Demo-Projekt erstellen',
LeaveProject: 'Projekt verlassen',
integration: 'Integration',
integrations: 'Integrationen',
NewIntegration: 'Neue Integration',
EditIntegration: 'Integration bearbeiten',
DeleteIntegration: 'Integration löschen',
DeleteIntegrationMsg: 'Sind Sie sicher, dass Sie diese Integration löschen möchten?',
AddAlias: 'Alias hinzufügen',
LoadAlias: 'Lade Aliase...',
runners: 'Runner',
newRunner: 'Neuer Runner',
enabled: 'Aktiviert',
scheduleNextRun: 'Nächster Lauf',
maxNumberOfParallelTasks: 'Maximale parallele Aufgaben',
runnerUsage: 'Verwendung:',
runnerToken: 'Token:',
editRunner: 'Runner bearbeiten',
};

View File

@ -38,7 +38,7 @@ export default {
youHaveReadonlyAccess: 'You have read-only access',
taskTemplates: 'Task Templates',
inventory: 'Inventory',
environment: 'Environment',
environment: 'Environment Variables',
keyStore: 'Key Store',
repositories: 'Repositories',
darkMode: 'Dark Mode',
@ -65,7 +65,6 @@ export default {
addView: 'Add view',
editEnvironment: 'Edit Environment',
deleteEnvironment: 'Delete environment',
environment2: 'Environment',
newEnvironment: 'New Environment',
environmentName: 'Environment Name',
extraVariables: 'Extra variables',
@ -248,4 +247,12 @@ export default {
DeleteIntegrationMsg: 'Are you sure you want to delete this Integration?',
AddAlias: 'Add Alias',
LoadAlias: 'Loading aliases...',
runners: 'Runners',
newRunner: 'New Runner',
enabled: 'Enabled',
scheduleNextRun: 'Next run',
maxNumberOfParallelTasks: 'Maximum parallel tasks',
runnerUsage: 'Usage:',
runnerToken: 'Token:',
editRunner: 'Edit Runner',
};

View File

@ -1,192 +1,195 @@
export default {
backup: 'Respaldo',
downloadTheProjectBackupFile: 'Descargue el archivo de copia de seguridad del proyecto (en json)',
restoreProject: 'Restaurar...',
incorrectUsrPwd: 'Usuario o contraseña incorrecta',
askDeleteUser: '¿Realmente desea eliminar este usuario?',
askDeleteTemp: '¿Realmente desea eliminar esta plantilla?',
askDeleteEnv: '¿Realmente desea eliminar este ambiente?',
askDeleteInv: '¿Realmente desea eliminar este inventario?',
askDeleteKey: '¿Realmente desea eliminar esta llave?',
askDeleteRepo: '¿Realmente desea eliminar este repositorio?',
askDeleteProj: '¿Realmente desea eliminar este proyecto?',
askDeleteTMem: '¿Realmente desea quitar a este miembro del equipo?',
'Check interval': 'Intervalo de verificación',
Schedule: 'Horario',
backup: 'Copia de seguridad',
downloadTheProjectBackupFile: 'Descargar el archivo de copia de seguridad del proyecto (en json)',
restoreProject: 'Restaurar Proyecto...',
incorrectUsrPwd: 'Usuario o contraseña incorrectos',
askDeleteUser: '¿Realmente quieres eliminar a este usuario?',
askDeleteTemp: '¿Realmente quieres eliminar esta plantilla?',
askDeleteEnv: '¿Realmente quieres eliminar este entorno?',
askDeleteInv: '¿Realmente quieres eliminar este inventario?',
askDeleteKey: '¿Realmente quieres eliminar esta clave?',
askDeleteRepo: '¿Realmente quieres eliminar este repositorio?',
askDeleteProj: '¿Realmente quieres eliminar este proyecto?',
askDeleteTMem: '¿Realmente quieres eliminar a este miembro del equipo?',
edit: 'Editar',
nnew: 'Nuevo',
keyFormSshKey: 'Llave SSH',
keyFormLoginPassword: 'Ingresa con tu contraseña',
keyFormSshKey: 'Clave SSH',
keyFormLoginPassword: 'Iniciar sesión con contraseña',
keyFormNone: 'Ninguno',
incorrectUrl: 'URL incorrecta',
username: 'Nombre de Usuario',
username_required: 'El nombre de usuario es un campo obligatorio',
dashboard: 'Panel',
history: 'Historia',
username: 'Nombre de usuario',
username_required: 'Se requiere nombre de usuario',
dashboard: 'Tablero',
history: 'Historial',
activity: 'Actividad',
settings: 'Configuración',
settings: 'Configuraciones',
signIn: 'Iniciar sesión',
password: 'Contraseña',
changePassword: 'Cambiar contraseña',
editUser: 'Editar usuario',
newProject: 'Nuevo proyecto',
editUser: 'Editar Usuario',
newProject: 'Nuevo Proyecto',
close: 'Cerrar',
newProject2: 'Nuevo proyecto...',
demoMode: 'MODO DEMOSTRACION',
demoMode: 'MODO DEMO',
task: 'Tarea #{expr}',
youCanRunAnyTasks: 'Puedes ejecutar cualquier tarea',
youHaveReadonlyAccess: 'Tienes acceso de solo lectura',
taskTemplates: 'Plantillas de tareas',
taskTemplates: 'Plantillas de Tareas',
inventory: 'Inventario',
environment: 'Ambiente',
keyStore: 'Tienda de llaves',
environment: 'Entorno',
keyStore: 'Almacén de Claves',
repositories: 'Repositorios',
darkMode: 'Modo oscuro',
darkMode: 'Modo Oscuro',
team: 'Equipo',
users: 'Usuarios',
editAccount: 'Editar cuenta',
editAccount: 'Editar Cuenta',
signOut: 'Cerrar sesión',
error: 'Error',
refreshPage: 'Actualizar página',
relogin: 'Volver a iniciar sesión',
howToFixSigninIssues: 'Cómo arreglar problemas de inicio de sesión',
firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: 'Primero, deber tener acceso al servidor donde Semaphore está corriendo.',
executeTheFollowingCommandOnTheServerToSeeExisting: 'Ejecute el siguiente comando en el servidor para ver usuarios existentes:',
refreshPage: 'Actualizar Página',
relogin: 'Reiniciar sesión',
howToFixSigninIssues: 'Cómo solucionar problemas de inicio de sesión',
firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: 'Primero, necesitas acceso al servidor donde se ejecuta Semaphore.',
executeTheFollowingCommandOnTheServerToSeeExisting: 'Ejecuta el siguiente comando en el servidor para ver los usuarios existentes:',
semaphoreUserList: 'lista de usuarios de semaphore',
youCanChangePasswordOfExistingUser: 'Puedes cambiar la contraseña del usuario existente:',
semaphoreUserChangebyloginLoginUser123Password: 'semaphore user change-by-login --login usuario123 --password {unaContraseñaDeEjemplo}',
youCanChangePasswordOfExistingUser: 'Puedes cambiar la contraseña de un usuario existente:',
semaphoreUserChangebyloginLoginUser123Password: 'cambiar usuario de semaphore --login user123 --password {makePasswordExample}',
orCreateNewAdminUser: 'O crea un nuevo usuario administrador:',
close2: 'Cerrar',
semaphore: 'SEMAPHORE',
dontHaveAccountOrCantSignIn: '¿No tienes una cuenta o no puedes ingresar?',
semaphore: 'SEMAFORO',
dontHaveAccountOrCantSignIn: '¿No tienes cuenta o no puedes iniciar sesión?',
password2: 'Contraseña',
cancel: 'Cancelar',
noViews: 'Sin vistas',
addView: 'Añadir vista',
editEnvironment: 'Editar Ambiente',
deleteEnvironment: 'Eliminar Ambiente',
environment2: 'Ambiente',
newEnvironment: 'Nuevo Ambiente',
environmentName: 'Nombre del Ambiente',
extraVariables: 'Variables extras',
enterExtraVariablesJson: 'Ingresar variables extras JSON...',
environmentVariables: 'Variables de Ambiente',
enterEnvJson: 'Ingresar ambiente JSON...',
environmentAndExtraVariablesMustBeValidJsonExample: 'El Ambiente y las variables extras deben tene un formato JSON válido. Ejemplo:',
dashboard2: 'Panel',
ansibleSemaphore: 'Semaphore UI',
wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: 'Lo sentimos pero <%= htmlWebpackPlugin.options.title %> no funciona correctamente sin JavaScript habilitado. Por favor habilítelo para continuar.',
addView: 'Agregar vista',
editEnvironment: 'Editar Entorno',
deleteEnvironment: 'Eliminar entorno',
environment2: 'Entorno',
newEnvironment: 'Nuevo Entorno',
environmentName: 'Nombre del Entorno',
extraVariables: 'Variables adicionales',
enterExtraVariablesJson: 'Ingresa variables adicionales en JSON...',
environmentVariables: 'Variables de entorno',
enterEnvJson: 'Ingresa env JSON...',
environmentAndExtraVariablesMustBeValidJsonExample: 'El entorno y las variables adicionales deben ser JSON válidos. Ejemplo:',
dashboard2: 'Tablero',
ansibleSemaphore: 'Interfaz de Semaphore',
wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: 'Lo sentimos, pero <%= htmlWebpackPlugin.options.title %> no funciona correctamente sin JavaScript habilitado. Por favor, habilítalo para continuar.',
deleteInventory: 'Eliminar inventario',
newInventory: 'Nuevo Inventario',
name: 'Nombre',
userCredentials: 'Credenciales de usuario',
sudoCredentialsOptional: 'Credenciales Sudo (Opcional)',
userCredentials: 'Credenciales de Usuario',
sudoCredentialsOptional: 'Credenciales de Sudo (Opcional)',
type: 'Tipo',
pathToInventoryFile: 'Ruta al archivo Inventario',
enterInventory: 'Ingresar inventario...',
staticInventoryExample: 'Ejemplo de Inventario estático:',
staticYamlInventoryExample: 'Ejemplo de Inventario YAML estático:',
keyName: 'Nombre de la llave',
pathToInventoryFile: 'Ruta al archivo de Inventario',
enterInventory: 'Ingresa inventario...',
staticInventoryExample: 'Ejemplo de inventario estático:',
staticYamlInventoryExample: 'Ejemplo de inventario YAML estático:',
keyName: 'Nombre de la Clave',
loginOptional: 'Inicio de sesión (Opcional)',
usernameOptional: 'Nombre de Usuario (Opcional)',
privateKey: 'Llave Privada',
override: 'Sobreescribir',
useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: 'Use este tipo de llave para repositorios HTTPS y playbooks que no usen conexiones SSH.',
deleteKey: 'Eliminar llave',
newKey: 'Nueva Llave',
usernameOptional: 'Nombre de usuario (Opcional)',
privateKey: 'Clave Privada',
override: 'Sobrescribir',
useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: 'Usa este tipo de clave para repositorios HTTPS y para playbooks que utilizan conexiones no SSH.',
deleteKey: 'Eliminar clave',
newKey: 'Nueva Clave',
create: 'Crear',
newTask: 'Nueva Tarea',
cantDeleteThe: 'No puede eliminar {objectTitle}',
theCantBeDeletedBecauseItUsedByTheResourcesBelow: '{objectTitle} no se puede eliminar porque está siendo usado por uno de los recursos',
cantDeleteThe: 'No se puede eliminar el {objectTitle}',
theCantBeDeletedBecauseItUsedByTheResourcesBelow: 'El {objectTitle} no se puede eliminar porque está siendo utilizado por los recursos a continuación',
projectName: 'Nombre del Proyecto',
allowAlertsForThisProject: 'Permitir alertas para este proyecto',
telegramChatIdOptional: 'ID de Chat para Telegram (Opcional)',
maxNumberOfParallelTasksOptional: 'Número máximo de tareas en paralelo (Opcional)',
deleteRepository: 'Eliminar Repositorio',
telegramChatIdOptional: 'ID de Chat de Telegram (Opcional)',
maxNumberOfParallelTasksOptional: 'Número máximo de tareas paralelas (Opcional)',
deleteRepository: 'Eliminar repositorio',
newRepository: 'Nuevo Repositorio',
urlOrPath: 'URL o ruta',
absPath: 'ruta absoluta',
branch: 'Rama',
accessKey: 'Llave de acceso',
credentialsToAccessToTheGitRepositoryItShouldBe: 'Credenciales para acceder al repositorio Git. Debería ser:',
ifYouUseGitOrSshUrl: 'si usas Git o SSH URL.',
ifYouUseHttpsOrFileUrl: 'si usas HTTPS o URL de archivo.',
accessKey: 'Clave de Acceso',
credentialsToAccessToTheGitRepositoryItShouldBe: 'Credenciales para acceder al repositorio de Git. Debe ser:',
ifYouUseGitOrSshUrl: 'si usas URL de Git o SSH.',
ifYouUseHttpsOrFileUrl: 'si usas URL de HTTPS o archivo.',
none: 'Ninguno',
ssh: 'SSH',
deleteProject: 'Eliminar Proyecto',
deleteProject: 'Eliminar proyecto',
save: 'Guardar',
deleteProject2: 'Eliminar Proyecto',
onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: 'Una vez eliminado el proyecto, no hay vuelta atrás. Por favor esté seguro.',
onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: 'Una vez que elimines un proyecto, no hay vuelta atrás. Por favor, asegúrate.',
name2: 'Nombre *',
title: 'Título *',
description: 'Descripción',
required: 'Requerido',
key: '{expr}',
surveyVariables: 'Variables solicitadas',
addVariable: 'Añadir variable',
surveyVariables: 'Variables de Encuesta',
addVariable: 'Agregar variable',
columns: 'Columnas',
buildVersion: 'Version de Build',
buildVersion: 'Versión de Construcción',
messageOptional: 'Mensaje (Opcional)',
debug: 'Debug',
dryRun: 'Simulacro',
debug: 'Depurar',
dryRun: 'Ejecución en seco',
diff: 'Diferencia',
advanced: 'Advanzado',
advanced: 'Avanzado',
hide: 'Ocultar',
pleaseAllowOverridingCliArgumentInTaskTemplateSett: 'Por favor, permita sobreescribir el argumento de la línea de comando en las configuraciones de la plantilla de Tareas',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'Argumentos CLI (Lista JSON). Ejemplo: [ "-i", "@mi_inventario.sh", "--private-key=/aqui/id_rsa", "-vvvv" ]',
started: 'Comenzado',
pleaseAllowOverridingCliArgumentInTaskTemplateSett: 'Para permitir sobrescribir el argumento CLI en la configuración de la Plantilla de Tarea',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'Argumentos CLI (array JSON). Ejemplo: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
started: 'Iniciado',
author: 'Autor',
duration: 'Duración',
stop: 'Detener',
forceStop: 'Detener forzadamente',
deleteTeamMember: 'Quitar miembro del equipo',
forceStop: 'Detener Forzosamente',
confirmTask: 'Confirmar',
deleteTeamMember: 'Eliminar miembro del equipo',
team2: 'Equipo',
newTeamMember: 'Nuevo miembro del equipo',
newTeamMember: 'Nuevo Miembro del Equipo',
user: 'Usuario',
administrator: 'Administrador',
definesStartVersionOfYourArtifactEachRunIncrements: 'Las definiciones comienzan la versión de tus artefactos. Cada ejecución incrementa la versión del artefacto.',
forMoreInformationAboutBuildingSeeThe: 'Para más información sobre la compilación vea la',
taskTemplateReference: 'referencia de Plantila de Tareas',
definesWhatArtifactShouldBeDeployedWhenTheTaskRun: 'Define que artefacto debería ser utilizado cuando se ejecuta la tarea.',
forMoreInformationAboutDeployingSeeThe: 'Para más información sobre la utilización vea la',
taskTemplateReference2: 'referencia de Plantila de Tareas',
definesAutorunSchedule: 'Define la recurrencia de la ejecución automática.',
forMoreInformationAboutCronSeeThe: 'Para más información sobre cron vea la',
cronExpressionFormatReference: 'referencia del formato de expresiones Cron',
startVersion: 'Versión de inicio',
definesStartVersionOfYourArtifactEachRunIncrements: 'Define la versión inicial de tu artefacto. Cada ejecución incrementa la versión del artefacto.',
forMoreInformationAboutBuildingSeeThe: 'Para más información sobre la construcción, consulta el',
taskTemplateReference: 'Referencia de Plantilla de Tarea',
definesWhatArtifactShouldBeDeployedWhenTheTaskRun: 'Define qué artefacto debe ser desplegado cuando se ejecute la tarea.',
forMoreInformationAboutDeployingSeeThe: 'Para más información sobre el despliegue, consulta el',
taskTemplateReference2: 'Referencia de Plantilla de Tarea',
definesAutorunSchedule: 'Define el horario de autorun.',
forMoreInformationAboutCronSeeThe: 'Para más información sobre cron, consulta el',
cronExpressionFormatReference: 'Referencia de formato de expresión cron',
startVersion: 'Versión Inicial',
example000: 'Ejemplo: 0.0.0',
buildTemplate: 'Plantilla de compilación',
autorun: 'Auto-Ejecución',
playbookFilename: 'Nombre de archivo del Playbook *',
exampleSiteyml: 'Ejemplo: sitio.yml',
buildTemplate: 'Plantilla de Construcción',
autorun: 'Autorun',
playbookFilename: 'Nombre del Archivo de Playbook *',
exampleSiteyml: 'Ejemplo: site.yml',
inventory2: 'Inventario *',
repository: 'Repositorio',
environment3: 'Ambiente *',
vaultPassword: 'Contraseña de bóveda',
vaultPassword2: 'Contraseña de bóveda',
view: 'Ver',
environment3: 'Entorno *',
vaultPassword: 'Contraseña del Bóveda',
vaultPassword2: 'Contraseña del Bóveda',
view: 'Vista',
cron: 'Cron',
iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: 'Quiero ejecutar una tarea mediante Cron solo para nuevos commits del repositorio.',
iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: 'Quiero ejecutar una tarea por cron solo para nuevos commits de algún repositorio',
repository2: 'Repositorio',
cronChecksNewCommitBeforeRun: 'Cron debe buscar nuevos commit antes de ejecutarse',
readThe: 'Lea la',
cronChecksNewCommitBeforeRun: 'Cron verifica nuevos commits antes de ejecutar',
readThe: 'Lee el',
toLearnMoreAboutCron: 'para aprender más sobre Cron.',
suppressSuccessAlerts: 'Silenciar alertas de éxito',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'Argumentos CLI (Lista JSON). Ejemplo: [ "-i", "@mi_inventario.sh", "--private-key=/aqui/id_rsa", "-vvvv" ]',
allowCliArgsInTask: 'Permitir argumentos CLI en Tareas',
docs: 'documentación',
suppressSuccessAlerts: 'Suprimir alertas de éxito',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'Argumentos CLI (array JSON). Ejemplo: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
allowCliArgsInTask: 'Permitir argumentos CLI en la Tarea',
docs: 'documentos',
editViews: 'Editar Vistas',
newTemplate: 'Nueva plantilla',
taskTemplates2: 'Plantillas de tareas',
all: 'Todos',
notLaunched: 'No ejecutado',
by: 'por {user_name} el {formatDate}',
taskTemplates2: 'Plantillas de Tareas',
all: 'Todo',
notLaunched: 'No lanzado',
by: 'por {user_name}',
editTemplate: 'Editar Plantilla',
newTemplate2: 'Nueva Plantilla',
deleteTemplate: 'Eliminar Plantilla',
deleteTemplate: 'Eliminar plantilla',
playbook: 'Playbook',
email: 'Correo',
adminUser: 'Usuario Administrador',
email: 'Correo electrónico',
adminUser: 'Usuario administrador',
sendAlerts: 'Enviar alertas',
deleteUser: 'Eliminar Usuario',
deleteUser: 'Eliminar usuario',
newUser: 'Nuevo Usuario',
re: 'Re{getActionButtonTitle}',
teamMember: '{expr} Miembro del Equipo',
@ -196,44 +199,61 @@ export default {
start: 'Iniciar',
actions: 'Acciones',
alert: 'Alerta',
admin: 'Administrador',
admin: 'Admin',
role: 'Rol',
external: 'Externo',
time: 'Tiempo',
path: 'Ruta',
gitUrl: 'URL Git',
sshKey: 'Llave SSH',
lastTask: 'Ultima tarea',
gitUrl: 'URL de Git',
sshKey: 'Clave SSH',
lastTask: 'Última Tarea',
task2: 'Tarea',
build: 'Compilación',
deploy: 'Lanzar',
build: 'Construir',
deploy: 'Desplegar',
run: 'Ejecutar',
add: 'Añadir',
password_required: 'Es requisito la Contraseña',
name_required: 'Es requisito el Nombre',
user_credentials_required: 'Las credenciales del usuario son requisito',
type_required: 'Es requisito el Tipo',
path_required: 'Es requisito la ruta al archivo del Inventario',
private_key_required: 'Es requisito la llave Privada',
project_name_required: 'Es requisito el Nombre del Proyecto',
repository_required: 'Es requisito el Repositorio',
branch_required: 'Es requisito la Rama',
key_required: 'Es requisito la Llave',
user_required: 'Es requisito el Usuario',
build_version_required: 'Es requisito la Versión de Compilación',
title_required: 'Es requisito el Título',
isRequired: 'Es requisito',
mustBeInteger: 'Debe ser un número',
mustBe0OrGreater: 'Debe ser 0 o más alto',
start_version_required: 'Es requisito el Inicio de Versión',
playbook_filename_required: 'Es requisito el nombre de archivo del Playbook',
inventory_required: 'Es requisito el Inventario',
environment_required: 'Es requisito el Ambiente',
email_required: 'Es requisito el Correo',
build_template_required: 'Es requerida la Plantilla de Compilación',
add: 'Agregar',
password_required: 'Se requiere contraseña',
name_required: 'Se requiere nombre',
user_credentials_required: 'Se requieren credenciales de usuario',
type_required: 'Se requiere tipo',
path_required: 'Se requiere ruta al archivo de Inventario',
private_key_required: 'Se requiere clave privada',
project_name_required: 'Se requiere nombre del proyecto',
repository_required: 'Se requiere repositorio',
branch_required: 'Se requiere rama',
key_required: 'Se requiere clave',
user_required: 'Se requiere usuario',
build_version_required: 'Se requiere versión de construcción',
title_required: 'Se requiere título',
isRequired: 'es requerido',
mustBeInteger: 'Debe ser un número entero',
mustBe0OrGreater: 'Debe ser 0 o mayor',
start_version_required: 'Se requiere versión inicial',
playbook_filename_required: 'Se requiere nombre de archivo de playbook',
inventory_required: 'Se requiere inventario',
environment_required: 'Se requiere entorno',
email_required: 'Se requiere correo electrónico',
build_template_required: 'Se requiere plantilla de construcción',
Task: 'Tarea',
Build: 'Compilación',
Deploy: 'Lanzamiento',
Build: 'Construir',
Deploy: 'Desplegar',
Run: 'Ejecutar',
CreateDemoProject: 'Crear Proyecto Demo',
LeaveProject: 'Salir del Proyecto',
integration: 'Integración',
integrations: 'Integraciones',
NewIntegration: 'Nueva Integración',
EditIntegration: 'Editar Integración',
DeleteIntegration: 'Eliminar Integración',
DeleteIntegrationMsg: '¿Estás seguro de que deseas eliminar esta Integración?',
AddAlias: 'Agregar Alias',
LoadAlias: 'Cargando alias...',
runners: 'Ejecutores',
newRunner: 'Nuevo Ejecutor',
enabled: 'Habilitado',
scheduleNextRun: 'Próxima ejecución',
maxNumberOfParallelTasks: 'Número máximo de tareas paralelas',
runnerUsage: 'Uso:',
runnerToken: 'Token:',
editRunner: 'Editar Ejecutor',
};

View File

@ -1,12 +1,14 @@
export default {
'Check interval': 'Intervalle de vérification',
Schedule: 'Calendrier',
backup: 'Sauvegarde',
downloadTheProjectBackupFile: 'Téléchargez le fichier de sauvegarde du projet (en json)',
restoreProject: 'Restaurer...',
downloadTheProjectBackupFile: 'Télécharger le fichier de sauvegarde du projet (au format json)',
restoreProject: 'Restaurer le projet...',
incorrectUsrPwd: 'Identifiant ou mot de passe incorrect',
askDeleteUser: 'Voulez-vous vraiment supprimer cet utilisateur ?',
askDeleteTemp: 'Voulez-vous vraiment supprimer ce modèle ?',
askDeleteEnv: 'Voulez-vous vraiment supprimer cet environnement ?',
askDeleteInv: 'Voulez-vous vraiment supprimer cet inventeur ?',
askDeleteInv: 'Voulez-vous vraiment supprimer cet inventaire ?',
askDeleteKey: 'Voulez-vous vraiment supprimer cette clé ?',
askDeleteRepo: 'Voulez-vous vraiment supprimer ce dépôt ?',
askDeleteProj: 'Voulez-vous vraiment supprimer ce projet ?',
@ -14,8 +16,8 @@ export default {
edit: 'Modifier',
nnew: 'Nouveau',
keyFormSshKey: 'Clé SSH',
keyFormLoginPassword: 'Connectez-vous avec mot de passe',
keyFormNone: 'Aucune',
keyFormLoginPassword: 'Connexion avec mot de passe',
keyFormNone: 'Aucun',
incorrectUrl: 'URL incorrecte',
username: 'Nom d\'utilisateur',
username_required: 'Le nom d\'utilisateur est requis',
@ -30,9 +32,9 @@ export default {
newProject: 'Nouveau projet',
close: 'Fermer',
newProject2: 'Nouveau projet...',
demoMode: 'MODE DE DÉMONSTRATION',
task: 'Tâche {expr}',
youCanRunAnyTasks: 'Vous pouvez exécuter n\'importe quelle tâche',
demoMode: 'MODE DÉMO',
task: 'Tâche #{expr}',
youCanRunAnyTasks: 'Vous pouvez exécuter toutes les tâches',
youHaveReadonlyAccess: 'Vous avez un accès en lecture seule',
taskTemplates: 'Modèles de tâches',
inventory: 'Inventaire',
@ -43,17 +45,17 @@ export default {
team: 'Équipe',
users: 'Utilisateurs',
editAccount: 'Modifier le compte',
signOut: 'Déconnexion',
signOut: 'Se déconnecter',
error: 'Erreur',
refreshPage: 'Actualiser la page',
relogin: 'Se reconnecter',
refreshPage: 'Rafraîchir la page',
relogin: 'Reconnecter',
howToFixSigninIssues: 'Comment résoudre les problèmes de connexion',
firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: 'Tout d\'abord, vous avez besoin d\'accéder au serveur où Semaphore est en cours d\'exécution.',
firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: 'Tout d\'abord, vous devez avoir accès au serveur où Semaphore fonctionne.',
executeTheFollowingCommandOnTheServerToSeeExisting: 'Exécutez la commande suivante sur le serveur pour voir les utilisateurs existants :',
semaphoreUserList: 'liste d\'utilisateurs Semaphore',
semaphoreUserList: 'liste des utilisateurs semaphore',
youCanChangePasswordOfExistingUser: 'Vous pouvez changer le mot de passe de l\'utilisateur existant :',
semaphoreUserChangebyloginLoginUser123Password: 'semaphore user change-by-login --login user123 --password {makePasswordExample}',
orCreateNewAdminUser: 'Ou créer un nouvel utilisateur administrateur :',
orCreateNewAdminUser: 'Ou créez un nouvel utilisateur admin :',
close2: 'Fermer',
semaphore: 'SEMAPHORE',
dontHaveAccountOrCantSignIn: 'Vous n\'avez pas de compte ou vous ne pouvez pas vous connecter ?',
@ -67,54 +69,54 @@ export default {
newEnvironment: 'Nouvel environnement',
environmentName: 'Nom de l\'environnement',
extraVariables: 'Variables supplémentaires',
enterExtraVariablesJson: 'Saisissez JSON pour les variables supplémentaires...',
enterExtraVariablesJson: 'Entrez les variables supplémentaires au format JSON...',
environmentVariables: 'Variables d\'environnement',
enterEnvJson: 'Saisissez JSON pour l\'environnement...',
enterEnvJson: 'Entrez l\'environnement au format JSON...',
environmentAndExtraVariablesMustBeValidJsonExample: 'L\'environnement et les variables supplémentaires doivent être un JSON valide. Exemple :',
dashboard2: 'Tableau de bord',
ansibleSemaphore: 'Semaphore Ansible',
wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: 'Nous sommes désolés, mais <%= htmlWebpackPlugin.options.title %> ne fonctionne pas correctement sans JavaScript. Veuillez l\'activer pour continuer.',
ansibleSemaphore: 'Interface Semaphore',
wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: 'Nous sommes désolés, mais <%= htmlWebpackPlugin.options.title %> ne fonctionne pas correctement sans JavaScript activé. Veuillez l\'activer pour continuer.',
deleteInventory: 'Supprimer l\'inventaire',
newInventory: 'Nouvel inventaire',
name: 'Nom',
userCredentials: 'Identifiants utilisateur',
sudoCredentialsOptional: 'Identifiants Sudo (facultatif)',
userCredentials: 'Identifiants de l\'utilisateur',
sudoCredentialsOptional: 'Identifiants sudo (optionnel)',
type: 'Type',
pathToInventoryFile: 'Chemin vers le fichier d\'inventaire',
enterInventory: 'Entrer l\'inventaire...',
staticInventoryExample: 'Exemple d\'inventaire statique:',
staticYamlInventoryExample: 'Exemple d\'inventaire YAML statique:',
enterInventory: 'Entrez l\'inventaire...',
staticInventoryExample: 'Exemple d\'inventaire statique :',
staticYamlInventoryExample: 'Exemple d\'inventaire YAML statique :',
keyName: 'Nom de la clé',
loginOptional: 'Connexion (facultatif)',
usernameOptional: 'Nom d\'utilisateur (facultatif)',
loginOptional: 'Connexion (optionnel)',
usernameOptional: 'Nom d\'utilisateur (optionnel)',
privateKey: 'Clé privée',
override: 'Remplacer',
useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: 'Utilisez ce type de clé pour les référentiels HTTPS et pour les playbooks qui utilisent des connexions non-SSH.',
useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: 'Utilisez ce type de clé pour les dépôts HTTPS et pour les playbooks qui utilisent des connexions non-SSH.',
deleteKey: 'Supprimer la clé',
newKey: 'Nouvelle clé',
create: 'Créer',
newTask: 'Nouvelle tâche',
cantDeleteThe: 'Impossible de supprimer {objectTitle}',
cantDeleteThe: 'Impossible de supprimer le {objectTitle}',
theCantBeDeletedBecauseItUsedByTheResourcesBelow: 'Le {objectTitle} ne peut pas être supprimé car il est utilisé par les ressources ci-dessous',
projectName: 'Nom du projet',
allowAlertsForThisProject: 'Autoriser les alertes pour ce projet',
telegramChatIdOptional: 'Identifiant de chat Telegram (facultatif)',
maxNumberOfParallelTasksOptional: 'Nombre maximal de tâches en parallèle (facultatif)',
deleteRepository: 'Supprimer le référentiel',
newRepository: 'Nouveau référentiel',
telegramChatIdOptional: 'ID de chat Telegram (optionnel)',
maxNumberOfParallelTasksOptional: 'Nombre maximum de tâches parallèles (optionnel)',
deleteRepository: 'Supprimer le dépôt',
newRepository: 'Nouveau dépôt',
urlOrPath: 'URL ou chemin',
absPath: 'chemin absolu',
branch: 'Branche',
accessKey: 'Clé d\'accès',
credentialsToAccessToTheGitRepositoryItShouldBe: 'Identifiants pour accéder au référentiel Git. Il doit être :',
ifYouUseGitOrSshUrl: 'si vous utilisez une URL Git ou SSH.',
ifYouUseHttpsOrFileUrl: 'si vous utilisez une URL HTTPS ou fichier.',
credentialsToAccessToTheGitRepositoryItShouldBe: 'Identifiants pour accéder au dépôt Git. Cela devrait être :',
ifYouUseGitOrSshUrl: 'si vous utilisez l\'URL Git ou SSH.',
ifYouUseHttpsOrFileUrl: 'si vous utilisez l\'URL HTTPS ou de fichier.',
none: 'Aucun',
ssh: 'SSH',
deleteProject: 'Supprimer le projet',
save: 'Enregistrer',
deleteProject2: 'Supprimer le projet',
onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: 'Une fois que vous avez supprimé un projet, il n\'y a pas de retour en arrière possible. Veuillez être certain.',
onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: 'Une fois que vous avez supprimé un projet, il n\'y a pas de retour en arrière. Veuillez en être certain.',
name2: 'Nom *',
title: 'Titre *',
description: 'Description',
@ -124,52 +126,54 @@ export default {
addVariable: 'Ajouter une variable',
columns: 'Colonnes',
buildVersion: 'Version de construction',
messageOptional: 'Message (facultatif)',
debug: 'Debug',
dryRun: 'Simulation',
diff: 'Différence',
messageOptional: 'Message (optionnel)',
debug: 'Déboguer',
dryRun: 'Exécution à blanc',
diff: 'Diff',
advanced: 'Avancé',
hide: 'Cacher',
pleaseAllowOverridingCliArgumentInTaskTemplateSett: 'Veuillez autoriser le remplacement de l\'argument CLI dans les paramètres du modèle de tâche',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'Arguments CLI (tableau JSON). Exemple: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
pleaseAllowOverridingCliArgumentInTaskTemplateSett: 'Pour autoriser le remplacement de l\'argument CLI dans les paramètres du modèle de tâche',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'Arguments CLI (tableau JSON). Exemple : [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
started: 'Démarré',
author: 'Auteur',
duration: 'Durée',
stop: 'Arrêter',
deleteTeamMember: 'Supprimer un membre de l\'équipe',
forceStop: 'Arrêt forcé',
confirmTask: 'Confirmer',
deleteTeamMember: 'Supprimer le membre de l\'équipe',
team2: 'Équipe',
newTeamMember: 'Nouveau membre de l\'équipe',
user: 'Utilisateur',
administrator: 'Administrateur',
definesStartVersionOfYourArtifactEachRunIncrements: 'Définit la version de départ de votre artefact. Chaque exécution incrémente la version de l\'artefact.',
forMoreInformationAboutBuildingSeeThe: 'Pour plus d\'informations sur la construction, voir la',
forMoreInformationAboutBuildingSeeThe: 'Pour plus d\'informations sur la construction, voir le',
taskTemplateReference: 'Référence du modèle de tâche',
definesWhatArtifactShouldBeDeployedWhenTheTaskRun: 'Définit l\'artefact qui doit être déployé lorsque la tâche est exécutée.',
forMoreInformationAboutDeployingSeeThe: 'Pour plus d\'informations sur le déploiement, voir la',
definesWhatArtifactShouldBeDeployedWhenTheTaskRun: 'Définit quel artefact doit être déployé lorsque la tâche s\'exécute.',
forMoreInformationAboutDeployingSeeThe: 'Pour plus d\'informations sur le déploiement, voir le',
taskTemplateReference2: 'Référence du modèle de tâche',
definesAutorunSchedule: 'Définit le calendrier d\'exécution automatique.',
forMoreInformationAboutCronSeeThe: 'Pour plus d\'informations sur Cron, voir la',
cronExpressionFormatReference: 'Référence du format d\'expression Cron',
forMoreInformationAboutCronSeeThe: 'Pour plus d\'informations sur cron, voir le',
cronExpressionFormatReference: 'Référence du format d\'expression cron',
startVersion: 'Version de départ',
example000: 'Exemple: 0.0.0',
example000: 'Exemple : 0.0.0',
buildTemplate: 'Modèle de construction',
autorun: 'Exécution automatique',
playbookFilename: 'Nom de fichier du playbook *',
exampleSiteyml: 'Exemple: site.yml',
exampleSiteyml: 'Exemple : site.yml',
inventory2: 'Inventaire *',
repository: 'Dépôt',
environment3: 'Environnement *',
vaultPassword: 'Mot de passe du coffre-fort',
vaultPassword2: 'Mot de passe du coffre-fort',
vaultPassword: 'Mot de passe du coffre',
vaultPassword2: 'Mot de passe du coffre',
view: 'Vue',
cron: 'Cron',
iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: 'Je veux exécuter une tâche avec le cron uniquement pour les nouveaux commits d\'un dépôt spécifique',
iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: 'Je veux exécuter une tâche par cron uniquement pour les nouveaux commits d\'un dépôt',
repository2: 'Dépôt',
cronChecksNewCommitBeforeRun: 'Cron vérifie les nouveaux commits avant l\'exécution',
readThe: 'Lire la',
cronChecksNewCommitBeforeRun: 'Cron vérifie les nouveaux commits avant d\'exécuter',
readThe: 'Lire le',
toLearnMoreAboutCron: 'pour en savoir plus sur Cron.',
suppressSuccessAlerts: 'Supprimer les alertes de réussite',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'Arguments CLI (tableau JSON). Exemple: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
suppressSuccessAlerts: 'Supprimer les alertes de succès',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'Arguments CLI (tableau JSON). Exemple : [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
allowCliArgsInTask: 'Autoriser les arguments CLI dans la tâche',
docs: 'docs',
editViews: 'Modifier les vues',
@ -192,10 +196,10 @@ export default {
taskId: 'ID de tâche',
version: 'Version',
status: 'Statut',
start: 'Début',
start: 'Démarrer',
actions: 'Actions',
alert: 'Alerte',
admin: 'Administrateur',
admin: 'Admin',
role: 'Rôle',
external: 'Externe',
time: 'Temps',
@ -204,10 +208,13 @@ export default {
sshKey: 'Clé SSH',
lastTask: 'Dernière tâche',
task2: 'Tâche',
build: 'Construire',
deploy: 'Déployer',
run: 'Exécuter',
add: 'Ajouter',
password_required: 'Le mot de passe est requis',
name_required: 'Le nom est requis',
user_credentials_required: 'Les informations d\'identification de l\'utilisateur sont requises',
user_credentials_required: 'Les identifiants de l\'utilisateur sont requis',
type_required: 'Le type est requis',
path_required: 'Le chemin vers le fichier d\'inventaire est requis',
private_key_required: 'La clé privée est requise',
@ -220,15 +227,33 @@ export default {
title_required: 'Le titre est requis',
isRequired: 'est requis',
mustBeInteger: 'Doit être un entier',
mustBe0OrGreater: 'Doit être égal à 0 ou supérieur',
mustBe0OrGreater: 'Doit être 0 ou plus',
start_version_required: 'La version de départ est requise',
playbook_filename_required: 'Le nom de fichier du playbook est requis',
inventory_required: 'L\'inventaire est requis',
environment_required: 'L\'environnement est requis',
email_required: 'L\'adresse e-mail est requise',
email_required: 'L\'email est requis',
build_template_required: 'Le modèle de construction est requis',
Task: 'Tâche',
Build: 'Construire',
Deploy: 'Déployer',
Run: 'Exécuter',
CreateDemoProject: 'Créer un projet de démonstration',
LeaveProject: 'Quitter le projet',
integration: 'Intégration',
integrations: 'Intégrations',
NewIntegration: 'Nouvelle intégration',
EditIntegration: 'Modifier l\'intégration',
DeleteIntegration: 'Supprimer l\'intégration',
DeleteIntegrationMsg: 'Êtes-vous sûr de vouloir supprimer cette intégration ?',
AddAlias: 'Ajouter un alias',
LoadAlias: 'Chargement des alias...',
runners: 'Exécuteurs',
newRunner: 'Nouvel exécuteur',
enabled: 'Activé',
scheduleNextRun: 'Prochaine exécution',
maxNumberOfParallelTasks: 'Nombre maximum de tâches parallèles',
runnerUsage: 'Utilisation :',
runnerToken: 'Jeton :',
editRunner: 'Modifier l\'exécuteur',
};

View File

@ -1,239 +1,259 @@
export default {
'Check interval': 'Intervallo di controllo',
Schedule: 'Programma',
backup: 'Backup',
downloadTheProjectBackupFile: 'Scarica il file di backup del progetto (in json)',
restoreProject: 'Ristabilire...',
incorrectUsrPwd: 'Nome utente o password errati',
restoreProject: 'Ripristina progetto...',
incorrectUsrPwd: 'Login o password errati',
askDeleteUser: 'Vuoi davvero eliminare questo utente?',
askDeleteTemp: 'Vuoi davvero eliminare questo modello?',
askDeleteEnv: 'Vuoi davvero eliminare questo ambiente',
askDeleteEnv: 'Vuoi davvero eliminare questo ambiente?',
askDeleteInv: 'Vuoi davvero eliminare questo inventario?',
askDeleteKey: 'Vuoi davvero eliminare questa chiave?',
askDeleteRepo: 'Vuoi davvero eliminare questo repository?',
askDeleteProj: 'Vuoi davvero eliminare questo progetto?',
askDeleteTMem: 'Vuole davvero eliminare questo membro del team?',
askDeleteTMem: 'Vuoi davvero eliminare questo membro del team?',
edit: 'Modifica',
nnew: 'Nuovo',
keyFormSshKey: 'SSH Key',
keyFormSshKey: 'Chiave SSH',
keyFormLoginPassword: 'Accesso con password',
keyFormNone: 'Nessuno',
incorrectUrl: 'URL non corretto',
username: 'Nome Utente',
incorrectUrl: 'URL errato',
username: 'Nome utente',
username_required: 'Il nome utente è obbligatorio',
dashboard: 'Pannello di controllo',
history: 'Storico',
dashboard: 'Cruscotto',
history: 'Storia',
activity: 'Attività',
settings: 'Impostazioni',
signIn: 'Accedi',
password: 'Password',
changePassword: 'Cambia password',
editUser: 'Modifica Utente',
newProject: 'Nuovo Progetto',
editUser: 'Modifica utente',
newProject: 'Nuovo progetto',
close: 'Chiudi',
newProject2: 'Nuovo progetto...',
demoMode: 'MODALITÀ DIMOSTRAZIONE',
task: 'Operazione #{expr}',
youCanRunAnyTasks: 'È possibile eseguire qualsiasi operazione',
demoMode: 'MODALITÀ DEMO',
task: 'Compito #{expr}',
youCanRunAnyTasks: 'Puoi eseguire qualsiasi compito',
youHaveReadonlyAccess: 'Hai accesso in sola lettura',
taskTemplates: 'Modelli di operazioni',
taskTemplates: 'Modelli di compito',
inventory: 'Inventario',
environment: 'Ambiente',
keyStore: 'Cassaforte Chiavi',
keyStore: 'Negozio di chiavi',
repositories: 'Repository',
darkMode: 'Modalità Oscura',
darkMode: 'Modalità scura',
team: 'Team',
users: 'Utenti',
editAccount: 'Modifica Account',
signOut: 'Esci',
editAccount: 'Modifica account',
signOut: 'Disconnetti',
error: 'Errore',
refreshPage: 'Aggiorna Pagina',
relogin: 'Esegui di nuovo l\'accesso',
refreshPage: 'Aggiorna pagina',
relogin: 'Riconnetti',
howToFixSigninIssues: 'Come risolvere i problemi di accesso',
firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: 'In primo luogo, è necessario accedere al server su cui è in esecuzione Semaphore.',
executeTheFollowingCommandOnTheServerToSeeExisting: 'Eseguire il seguente comando sul server per visualizzare gli utenti esistenti:',
semaphoreUserList: 'elenco utenti semaphore',
youCanChangePasswordOfExistingUser: 'È possibile modificare la password dell\'utente esistente:',
semaphoreUserChangebyloginLoginUser123Password: 'semaphore user change-by-login --login utente123 --password {unaPasswordDiEsempio}',
orCreateNewAdminUser: 'Oppure crea un nuovo utente amministratore:',
firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: 'Innanzitutto, è necessario avere accesso al server in cui è in esecuzione Semaphore.',
executeTheFollowingCommandOnTheServerToSeeExisting: 'Esegui il seguente comando sul server per vedere gli utenti esistenti:',
semaphoreUserList: 'semaphore user list',
youCanChangePasswordOfExistingUser: 'Puoi cambiare la password dell\'utente esistente:',
semaphoreUserChangebyloginLoginUser123Password: 'semaphore user change-by-login --login user123 --password {makePasswordExample}',
orCreateNewAdminUser: 'Oppure crea un nuovo utente admin:',
close2: 'Chiudi',
semaphore: 'SEMAPHORE',
dontHaveAccountOrCantSignIn: 'Non hai un account o non puoi accedere?',
semaphore: 'SEMAFORO',
dontHaveAccountOrCantSignIn: 'Non hai un account o non riesci ad accedere?',
password2: 'Password',
cancel: 'Cancella',
cancel: 'Annulla',
noViews: 'Nessuna vista',
addView: 'Aggiungi vista',
editEnvironment: 'Modifica Ambiente',
deleteEnvironment: 'Modifica Ambiente',
editEnvironment: 'Modifica ambiente',
deleteEnvironment: 'Elimina ambiente',
environment2: 'Ambiente',
newEnvironment: 'Nuovo Ambiente',
environmentName: 'Nome Ambiente',
newEnvironment: 'Nuovo ambiente',
environmentName: 'Nome ambiente',
extraVariables: 'Variabili extra',
enterExtraVariablesJson: 'Inserisci variabili extra JSON...',
environmentVariables: 'Variabili d\'ambiente',
enterEnvJson: 'Inserisci ambiente JSON...',
environmentAndExtraVariablesMustBeValidJsonExample: 'Le variabili d\'ambiente ed extra devono essere in formato JSON valido. Esempio:',
dashboard2: 'Pannello di controllo',
ansibleSemaphore: 'Semaphore UI',
wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: 'Siamo spiacenti ma <%= htmlWebpackPlugin.options.title %> non funziona correttamente senza JavaScript abilitato. Si prega di abilitarlo per continuare.',
deleteInventory: 'Elimina Inventario',
newInventory: 'Nuovo Inventario',
environmentVariables: 'Variabili ambiente',
enterEnvJson: 'Inserisci JSON ambiente...',
environmentAndExtraVariablesMustBeValidJsonExample: 'L\'ambiente e le variabili extra devono essere JSON validi. Esempio:',
dashboard2: 'Cruscotto',
ansibleSemaphore: 'Interfaccia Semaphore',
wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: 'Ci dispiace, ma <%= htmlWebpackPlugin.options.title %> non funziona correttamente senza JavaScript abilitato. Abilitalo per continuare.',
deleteInventory: 'Elimina inventario',
newInventory: 'Nuovo inventario',
name: 'Nome',
userCredentials: 'Credenziali Utente',
sudoCredentialsOptional: 'Credenziali Sudo (Opzionale)',
userCredentials: 'Credenziali utente',
sudoCredentialsOptional: 'Credenziali sudo (opzionale)',
type: 'Tipo',
pathToInventoryFile: 'Percorso del file Inventario',
pathToInventoryFile: 'Percorso del file di inventario',
enterInventory: 'Inserisci inventario...',
staticInventoryExample: 'Esempio di Inventario statico:',
staticYamlInventoryExample: 'Esempio di Inventario YAML statico:',
keyName: 'Nome Chiave',
loginOptional: 'Login (Opzionale)',
usernameOptional: 'Nome Utente (Opzionale)',
privateKey: 'Chiave Privata',
staticInventoryExample: 'Esempio di inventario statico:',
staticYamlInventoryExample: 'Esempio di inventario YAML statico:',
keyName: 'Nome chiave',
loginOptional: 'Accesso (opzionale)',
usernameOptional: 'Nome utente (opzionale)',
privateKey: 'Chiave privata',
override: 'Sovrascrivi',
useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: 'Utilizzare questo tipo di chiave per i repository HTTPS e per playbook che non utilizzano connessioni SSH.',
useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: 'Usa questo tipo di chiave per i repository HTTPS e per i playbook che utilizzano connessioni non SSH.',
deleteKey: 'Elimina chiave',
newKey: 'Nuova Chiave',
newKey: 'Nuova chiave',
create: 'Crea',
newTask: 'Nuova Operazione',
newTask: 'Nuovo compito',
cantDeleteThe: 'Impossibile eliminare {objectTitle}',
theCantBeDeletedBecauseItUsedByTheResourcesBelow: '{objectTitle} non può essere eliminato perché utilizzato dalle seguenti risorse',
projectName: 'Nome Progetto',
allowAlertsForThisProject: 'Consenti gli avvisi per questo progetto',
telegramChatIdOptional: 'ID chat di Telegram (Opzionale)',
maxNumberOfParallelTasksOptional: 'Numero massimo di operazioni in parallelo (Opzionale)',
theCantBeDeletedBecauseItUsedByTheResourcesBelow: '{objectTitle} non può essere eliminato perché è utilizzato dalle risorse sottostanti',
projectName: 'Nome progetto',
allowAlertsForThisProject: 'Consenti avvisi per questo progetto',
telegramChatIdOptional: 'ID chat Telegram (opzionale)',
maxNumberOfParallelTasksOptional: 'Numero massimo di compiti paralleli (opzionale)',
deleteRepository: 'Elimina repository',
newRepository: 'Nuovo Repository',
newRepository: 'Nuovo repository',
urlOrPath: 'URL o percorso',
absPath: 'percorso assoluto',
branch: 'Branch',
accessKey: 'Chiave di Accesso',
credentialsToAccessToTheGitRepositoryItShouldBe: 'Credenziali di accesso al repository Git. Possono essere:',
ifYouUseGitOrSshUrl: 'se si utilizza Git o l\'URL SSH.',
ifYouUseHttpsOrFileUrl: 'se si utilizza HTTPS o l\'URL del file.',
absPath: 'percorso ass.',
branch: 'Ramo',
accessKey: 'Chiave di accesso',
credentialsToAccessToTheGitRepositoryItShouldBe: 'Credenziali per accedere al repository Git. Dovrebbe essere:',
ifYouUseGitOrSshUrl: 'se utilizzi Git o URL SSH.',
ifYouUseHttpsOrFileUrl: 'se utilizzi HTTPS o URL di file.',
none: 'Nessuno',
ssh: 'SSH',
deleteProject: 'Elimina progetto',
save: 'Salva',
deleteProject2: 'Elimina Progetto',
onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: 'Una volta eliminato un progetto, non è possibile tornare indietro. Devi essene sicuro.',
deleteProject2: 'Elimina progetto',
onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: 'Una volta eliminato un progetto, non c\'è modo di tornare indietro. Per favore, sii certo.',
name2: 'Nome *',
title: 'Titolo *',
description: 'Descrizione',
required: 'Richiesto',
required: 'Obbligatorio',
key: '{expr}',
surveyVariables: 'Variabili richieste',
surveyVariables: 'Variabili di sondaggio',
addVariable: 'Aggiungi variabile',
columns: 'Colonne',
buildVersion: 'Versione Build',
messageOptional: 'Messaggio (Opzionale)',
buildVersion: 'Versione di build',
messageOptional: 'Messaggio (opzionale)',
debug: 'Debug',
dryRun: 'Simulazione',
dryRun: 'Esecuzione simulata',
diff: 'Differenza',
advanced: 'Avanzato',
hide: 'Nascondi',
pleaseAllowOverridingCliArgumentInTaskTemplateSett: 'Ricorda di consentire di sovrascrivere gli argomenti della riga di comando nelle impostazioni del modello di operazione',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'Argomenti CLI (Array JSON). Esempio: [ "-i", "@mio_inventario.sh", "--private-key=/percorso/id_rsa", "-vvvv" ]',
pleaseAllowOverridingCliArgumentInTaskTemplateSett: 'Per consentire la sovrascrittura dell\'argomento CLI nelle impostazioni del modello di compito',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'Argomenti CLI (array JSON). Esempio: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
started: 'Iniziato',
author: 'Autore',
duration: 'Durata',
stop: 'Termina',
forceStop: 'Termina Forzatamente',
stop: 'Ferma',
forceStop: 'Fermata forzata',
confirmTask: 'Conferma',
deleteTeamMember: 'Elimina membro del team',
team2: 'Team',
newTeamMember: 'Nuono Membro del Team',
newTeamMember: 'Nuovo membro del team',
user: 'Utente',
administrator: 'Amministratore',
definesStartVersionOfYourArtifactEachRunIncrements: 'Definisce la versione iniziale dell\'artefatto. Ogni esecuzione incrementa la versione dell\'artefatto.',
forMoreInformationAboutBuildingSeeThe: 'Per ulteriori informazioni sulla compilazione, consultare la sezione',
taskTemplateReference: 'riferimento al Modello di Operazione',
definesWhatArtifactShouldBeDeployedWhenTheTaskRun: 'Definisce quale artefatto deve essere utilizzato quando viene eseguita l\'operazione.',
forMoreInformationAboutDeployingSeeThe: 'Per ulteriori informazioni sull\'utilizzo, consultare la sezione',
taskTemplateReference2: 'riferimento al Modello di Operazione',
definesAutorunSchedule: 'Definisce la ricorrenza dell\'esecuzione automatica.',
forMoreInformationAboutCronSeeThe: 'Per ulteriori informazioni su cron, consultare la sezione',
cronExpressionFormatReference: 'Riferimento al formato della sintassi Cron',
startVersion: 'Versione Iniziale',
definesStartVersionOfYourArtifactEachRunIncrements: 'Definisce la versione iniziale del tuo artefatto. Ogni esecuzione incrementa la versione dell\'artefatto.',
forMoreInformationAboutBuildingSeeThe: 'Per ulteriori informazioni sulla costruzione, vedere il',
taskTemplateReference: 'Riferimento modello di compito',
definesWhatArtifactShouldBeDeployedWhenTheTaskRun: 'Definisce quale artefatto deve essere distribuito quando viene eseguito il compito.',
forMoreInformationAboutDeployingSeeThe: 'Per ulteriori informazioni sulla distribuzione, vedere il',
taskTemplateReference2: 'Riferimento modello di compito',
definesAutorunSchedule: 'Definisce il programma di esecuzione automatica.',
forMoreInformationAboutCronSeeThe: 'Per ulteriori informazioni su cron, vedere il',
cronExpressionFormatReference: 'Riferimento formato espressione cron',
startVersion: 'Versione iniziale',
example000: 'Esempio: 0.0.0',
buildTemplate: 'Modello della Build',
autorun: 'Auto-esecuzione',
playbookFilename: 'Nome del file del Playbook *',
exampleSiteyml: 'Esempio: sito.yml',
buildTemplate: 'Modello di build',
autorun: 'Esecuzione automatica',
playbookFilename: 'Nome file playbook *',
exampleSiteyml: 'Esempio: site.yml',
inventory2: 'Inventario *',
repository: 'Repository',
environment3: 'Ambiente *',
vaultPassword: 'Password in Cassaforte',
vaultPassword2: 'Password in Cassaforte',
vaultPassword: 'Password del vault',
vaultPassword2: 'Password del vault',
view: 'Vista',
cron: 'Cron',
iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: 'Voglio eseguire una operazione Cron solo per i nuovi commit del repository',
iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: 'Voglio eseguire un compito tramite cron solo per nuovi commit di un repository',
repository2: 'Repository',
cronChecksNewCommitBeforeRun: 'Cron controlla i nuovi commit prima dell\'esecuzione',
readThe: 'Leggi la',
cronChecksNewCommitBeforeRun: 'Cron controlla nuovi commit prima di eseguire',
readThe: 'Leggi il',
toLearnMoreAboutCron: 'per saperne di più su Cron.',
suppressSuccessAlerts: 'Sopprimi gli avvisi di successo',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'Argomenti CLI (Array JSON). Example: [ "-i", "@mio_inventario.sh", "--private-key=/percorso/id_rsa", "-vvvv" ]',
allowCliArgsInTask: 'Consenti gli argomenti CLI nell\'operazione',
docs: 'documentazione',
editViews: 'Modifica Viste',
newTemplate: 'Nuovo Modello',
taskTemplates2: 'Modelli di Operazione',
suppressSuccessAlerts: 'Sopprimi avvisi di successo',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'Argomenti CLI (array JSON). Esempio: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
allowCliArgsInTask: 'Consenti argomenti CLI nel compito',
docs: 'documenti',
editViews: 'Modifica viste',
newTemplate: 'Nuovo modello',
taskTemplates2: 'Modelli di compito',
all: 'Tutti',
notLaunched: 'Non eseguito',
by: 'da {user_name} il {formatDate}',
editTemplate: 'Modifica Modello',
newTemplate2: 'Nuovo Modello',
notLaunched: 'Non avviato',
by: 'da {user_name}',
editTemplate: 'Modifica modello',
newTemplate2: 'Nuovo modello',
deleteTemplate: 'Elimina modello',
playbook: 'Playbook',
email: 'Email',
adminUser: 'Utente Amministratore',
adminUser: 'Utente admin',
sendAlerts: 'Invia avvisi',
deleteUser: 'Elimina utente',
newUser: 'Nuovo Utente',
newUser: 'Nuovo utente',
re: 'Re{getActionButtonTitle}',
teamMember: '{expr} Membro del Team',
taskId: 'ID Operazione',
teamMember: '{expr} Membro del team',
taskId: 'ID compito',
version: 'Versione',
status: 'Stato',
start: 'Inizia',
start: 'Inizio',
actions: 'Azioni',
alert: 'Avvisa',
admin: 'Amministratore',
alert: 'Avviso',
admin: 'Admin',
role: 'Ruolo',
external: 'Esterno',
time: 'Tempo',
path: 'Percorso',
gitUrl: 'URL Git',
sshKey: 'Chiave SSH',
lastTask: 'Ultima Operazione',
task2: 'Operazione',
build: 'Build',
deploy: 'Compilazione',
lastTask: 'Ultimo compito',
task2: 'Compito',
build: 'Costruisci',
deploy: 'Distribuisci',
run: 'Esegui',
add: 'Aggiungi',
password_required: 'È richiesta la Password',
name_required: 'È richiesto il Nome',
user_credentials_required: 'Sono richieste le credenziali dell\'utente',
type_required: 'È richiesto il Tipo',
path_required: 'È richiesto il percorso al file dell\'Inventario',
private_key_required: 'È richiesta la Chiave Privata',
project_name_required: 'È richiesto il Nome del Progetto',
repository_required: 'È richiesto il Repository',
branch_required: 'È richiesto il Branch',
key_required: 'È richiesta la Chiave',
user_required: 'È richiesto l\'Utente',
build_version_required: 'È richiesta la versione della Build',
title_required: 'È richiesto il Titolo',
isRequired: richiesto',
mustBeInteger: 'Deve essere un numero intero',
mustBe0OrGreater: 'Deve essere uguale o maggiore di 0',
start_version_required: 'È richiesta la Versione Iniziale',
playbook_filename_required: 'È richiesto il nome del file del Playbook',
inventory_required: 'È richiesto l\'Inventario',
environment_required: 'È richiesto l\'Ambiente',
email_required: 'È richiesta l\'Email',
build_template_required: 'È richiesto il modello della Build',
Task: 'Operazione',
Build: 'Build',
Deploy: 'Compilazione',
password_required: 'La password è obbligatoria',
name_required: 'Il nome è obbligatorio',
user_credentials_required: 'Le credenziali dell\'utente sono obbligatorie',
type_required: 'Il tipo è obbligatorio',
path_required: 'Il percorso del file di inventario è obbligatorio',
private_key_required: 'La chiave privata è obbligatoria',
project_name_required: 'Il nome del progetto è obbligatorio',
repository_required: 'Il repository è obbligatorio',
branch_required: 'Il ramo è obbligatorio',
key_required: 'La chiave è obbligatoria',
user_required: 'L\'utente è obbligatorio',
build_version_required: 'La versione di build è obbligatoria',
title_required: 'Il titolo è obbligatorio',
isRequired: obbligatorio',
mustBeInteger: 'Deve essere un intero',
mustBe0OrGreater: 'Deve essere 0 o maggiore',
start_version_required: 'La versione iniziale è obbligatoria',
playbook_filename_required: 'Il nome del file playbook è obbligatorio',
inventory_required: 'L\'inventario è obbligatorio',
environment_required: 'L\'ambiente è obbligatorio',
email_required: 'L\'email è obbligatoria',
build_template_required: 'Il modello di build è obbligatorio',
Task: 'Compito',
Build: 'Costruisci',
Deploy: 'Distribuisci',
Run: 'Esegui',
CreateDemoProject: 'Crea progetto demo',
LeaveProject: 'Lascia progetto',
integration: 'Integrazione',
integrations: 'Integrazioni',
NewIntegration: 'Nuova integrazione',
EditIntegration: 'Modifica integrazione',
DeleteIntegration: 'Elimina integrazione',
DeleteIntegrationMsg: 'Sei sicuro di voler eliminare questa integrazione?',
AddAlias: 'Aggiungi alias',
LoadAlias: 'Caricamento alias...',
runners: 'Esecutori',
newRunner: 'Nuovo esecutore',
enabled: 'Abilitato',
scheduleNextRun: 'Prossima esecuzione',
maxNumberOfParallelTasks: 'Numero massimo di compiti paralleli',
runnerUsage: 'Utilizzo:',
runnerToken: 'Token:',
editRunner: 'Modifica esecutore',
};

259
web/src/lang/ja.js Normal file
View File

@ -0,0 +1,259 @@
export default {
'Check interval': 'チェック間隔',
Schedule: 'スケジュール',
backup: 'バックアップ',
downloadTheProjectBackupFile: 'プロジェクトバックアップファイルをダウンロードjson形式',
restoreProject: 'プロジェクトを復元...',
incorrectUsrPwd: 'ログインまたはパスワードが正しくありません',
askDeleteUser: '本当にこのユーザーを削除しますか?',
askDeleteTemp: '本当にこのテンプレートを削除しますか?',
askDeleteEnv: '本当にこの環境を削除しますか?',
askDeleteInv: '本当にこのインベントリを削除しますか?',
askDeleteKey: '本当にこのキーを削除しますか?',
askDeleteRepo: '本当にこのリポジトリを削除しますか?',
askDeleteProj: '本当にこのプロジェクトを削除しますか?',
askDeleteTMem: '本当にこのチームメンバーを削除しますか?',
edit: '編集',
nnew: '新規',
keyFormSshKey: 'SSHキー',
keyFormLoginPassword: 'パスワードでログイン',
keyFormNone: 'なし',
incorrectUrl: '不正なURL',
username: 'ユーザー名',
username_required: 'ユーザー名は必須です',
dashboard: 'ダッシュボード',
history: '履歴',
activity: 'アクティビティ',
settings: '設定',
signIn: 'サインイン',
password: 'パスワード',
changePassword: 'パスワードを変更',
editUser: 'ユーザーを編集',
newProject: '新しいプロジェクト',
close: '閉じる',
newProject2: '新しいプロジェクト...',
demoMode: 'デモモード',
task: 'タスク #{expr}',
youCanRunAnyTasks: '任意のタスクを実行できます',
youHaveReadonlyAccess: '読み取り専用アクセスがあります',
taskTemplates: 'タスクテンプレート',
inventory: 'インベントリ',
environment: '環境',
keyStore: 'キーのストア',
repositories: 'リポジトリ',
darkMode: 'ダークモード',
team: 'チーム',
users: 'ユーザー',
editAccount: 'アカウントを編集',
signOut: 'サインアウト',
error: 'エラー',
refreshPage: 'ページを更新',
relogin: '再ログイン',
howToFixSigninIssues: 'サインインの問題を修正する方法',
firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: 'まず、Semaphoreが実行されているサーバーへのアクセスが必要です。',
executeTheFollowingCommandOnTheServerToSeeExisting: 'サーバーで次のコマンドを実行して、既存のユーザーを確認します:',
semaphoreUserList: 'semaphore user list',
youCanChangePasswordOfExistingUser: '既存のユーザーのパスワードを変更できます:',
semaphoreUserChangebyloginLoginUser123Password: 'semaphore user change-by-login --login user123 --password {makePasswordExample}',
orCreateNewAdminUser: 'または新しい管理者ユーザーを作成します:',
close2: '閉じる',
semaphore: 'セマフォ',
dontHaveAccountOrCantSignIn: 'アカウントがないか、サインインできませんか?',
password2: 'パスワード',
cancel: 'キャンセル',
noViews: 'ビューがありません',
addView: 'ビューを追加',
editEnvironment: '環境を編集',
deleteEnvironment: '環境を削除',
environment2: '環境',
newEnvironment: '新しい環境',
environmentName: '環境名',
extraVariables: '追加変数',
enterExtraVariablesJson: '追加変数のJSONを入力...',
environmentVariables: '環境変数',
enterEnvJson: '環境のJSONを入力...',
environmentAndExtraVariablesMustBeValidJsonExample: '環境と追加変数は有効なJSONでなければなりません。例:',
dashboard2: 'ダッシュボード',
ansibleSemaphore: 'セマフォUI',
wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: '申し訳ありませんが、<%= htmlWebpackPlugin.options.title %>はJavaScriptが有効でないと正しく動作しません。続行するには有効にしてください。',
deleteInventory: 'インベントリを削除',
newInventory: '新しいインベントリ',
name: '名前',
userCredentials: 'ユーザー資格情報',
sudoCredentialsOptional: 'Sudo資格情報オプション',
type: 'タイプ',
pathToInventoryFile: 'インベントリファイルへのパス',
enterInventory: 'インベントリを入力...',
staticInventoryExample: '静的インベントリの例:',
staticYamlInventoryExample: '静的YAMLインベントリの例:',
keyName: 'キー名',
loginOptional: 'ログイン(オプション)',
usernameOptional: 'ユーザー名(オプション)',
privateKey: '秘密鍵',
override: '上書き',
useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: 'HTTPSリポジトリおよび非SSH接続を使用するプレイブックにこのタイプのキーを使用します。',
deleteKey: 'キーを削除',
newKey: '新しいキー',
create: '作成',
newTask: '新しいタスク',
cantDeleteThe: '{objectTitle}を削除できません',
theCantBeDeletedBecauseItUsedByTheResourcesBelow: '{objectTitle}は以下のリソースで使用されているため削除できません',
projectName: 'プロジェクト名',
allowAlertsForThisProject: 'このプロジェクトのアラートを許可',
telegramChatIdOptional: 'TelegramチャットIDオプション',
maxNumberOfParallelTasksOptional: '最大並列タスク数(オプション)',
deleteRepository: 'リポジトリを削除',
newRepository: '新しいリポジトリ',
urlOrPath: 'URLまたはパス',
absPath: '絶対パス',
branch: 'ブランチ',
accessKey: 'アクセスキー',
credentialsToAccessToTheGitRepositoryItShouldBe: 'Gitリポジトリにアクセスするための資格情報。次のようにする必要があります:',
ifYouUseGitOrSshUrl: 'GitまたはSSH URLを使用する場合。',
ifYouUseHttpsOrFileUrl: 'HTTPSまたはファイルURLを使用する場合。',
none: 'なし',
ssh: 'SSH',
deleteProject: 'プロジェクトを削除',
save: '保存',
deleteProject2: 'プロジェクトを削除',
onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: 'プロジェクトを削除すると、元に戻すことはできません。確信してください。',
name2: '名前 *',
title: 'タイトル *',
description: '説明',
required: '必須',
key: '{expr}',
surveyVariables: '調査変数',
addVariable: '変数を追加',
columns: '列',
buildVersion: 'ビルドバージョン',
messageOptional: 'メッセージ(オプション)',
debug: 'デバッグ',
dryRun: 'ドライラン',
diff: '差分',
advanced: '詳細',
hide: '隠す',
pleaseAllowOverridingCliArgumentInTaskTemplateSett: 'タスクテンプレート設定でCLI引数の上書きを許可するために',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'CLI引数JSON配列。例: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
started: '開始',
author: '著者',
duration: '期間',
stop: '停止',
forceStop: '強制停止',
confirmTask: '確認',
deleteTeamMember: 'チームメンバーを削除',
team2: 'チーム',
newTeamMember: '新しいチームメンバー',
user: 'ユーザー',
administrator: '管理者',
definesStartVersionOfYourArtifactEachRunIncrements: 'アーティファクトの開始バージョンを定義します。各実行でアーティファクトのバージョンが増加します。',
forMoreInformationAboutBuildingSeeThe: 'ビルドに関する詳細情報は、次を参照してください',
taskTemplateReference: 'タスクテンプレートの参照',
definesWhatArtifactShouldBeDeployedWhenTheTaskRun: 'タスクが実行されるときにデプロイされるアーティファクトを定義します。',
forMoreInformationAboutDeployingSeeThe: 'デプロイに関する詳細情報は、次を参照してください',
taskTemplateReference2: 'タスクテンプレートの参照',
definesAutorunSchedule: '自動実行スケジュールを定義します。',
forMoreInformationAboutCronSeeThe: 'Cronに関する詳細情報は、次を参照してください',
cronExpressionFormatReference: 'Cron式フォーマットの参照',
startVersion: '開始バージョン',
example000: '例: 0.0.0',
buildTemplate: 'ビルドテンプレート',
autorun: '自動実行',
playbookFilename: 'プレイブックファイル名 *',
exampleSiteyml: '例: site.yml',
inventory2: 'インベントリ *',
repository: 'リポジトリ',
environment3: '環境 *',
vaultPassword: 'ボールトパスワード',
vaultPassword2: 'ボールトパスワード',
view: 'ビュー',
cron: 'Cron',
iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: '新しいコミットのためにCronでタスクを実行したい',
repository2: 'リポジトリ',
cronChecksNewCommitBeforeRun: 'Cronは実行前に新しいコミットを確認します',
readThe: '読む',
toLearnMoreAboutCron: 'Cronについて詳しく学ぶために。',
suppressSuccessAlerts: '成功アラートを抑制',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'CLI引数JSON配列。例: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
allowCliArgsInTask: 'タスクでCLI引数を許可',
docs: 'ドキュメント',
editViews: 'ビューを編集',
newTemplate: '新しいテンプレート',
taskTemplates2: 'タスクテンプレート',
all: 'すべて',
notLaunched: '未起動',
by: '{user_name}による',
editTemplate: 'テンプレートを編集',
newTemplate2: '新しいテンプレート',
deleteTemplate: 'テンプレートを削除',
playbook: 'プレイブック',
email: 'メール',
adminUser: '管理者ユーザー',
sendAlerts: 'アラートを送信',
deleteUser: 'ユーザーを削除',
newUser: '新しいユーザー',
re: '再{getActionButtonTitle}',
teamMember: '{expr} チームメンバー',
taskId: 'タスクID',
version: 'バージョン',
status: 'ステータス',
start: '開始',
actions: 'アクション',
alert: 'アラート',
admin: '管理者',
role: '役割',
external: '外部',
time: '時間',
path: 'パス',
gitUrl: 'Git URL',
sshKey: 'SSHキー',
lastTask: '最後のタスク',
task2: 'タスク',
build: 'ビルド',
deploy: 'デプロイ',
run: '実行',
add: '追加',
password_required: 'パスワードは必須です',
name_required: '名前は必須です',
user_credentials_required: 'ユーザー資格情報は必須です',
type_required: 'タイプは必須です',
path_required: 'インベントリファイルへのパスは必須です',
private_key_required: '秘密鍵は必須です',
project_name_required: 'プロジェクト名は必須です',
repository_required: 'リポジトリは必須です',
branch_required: 'ブランチは必須です',
key_required: 'キーは必須です',
user_required: 'ユーザーは必須です',
build_version_required: 'ビルドバージョンは必須です',
title_required: 'タイトルは必須です',
isRequired: 'は必須です',
mustBeInteger: '整数でなければなりません',
mustBe0OrGreater: '0以上でなければなりません',
start_version_required: '開始バージョンは必須です',
playbook_filename_required: 'プレイブックファイル名は必須です',
inventory_required: 'インベントリは必須です',
environment_required: '環境は必須です',
email_required: 'メールは必須です',
build_template_required: 'ビルドテンプレートは必須です',
Task: 'タスク',
Build: 'ビルド',
Deploy: 'デプロイ',
Run: '実行',
CreateDemoProject: 'デモプロジェクトを作成',
LeaveProject: 'プロジェクトを離れる',
integration: '統合',
integrations: '統合',
NewIntegration: '新しい統合',
EditIntegration: '統合を編集',
DeleteIntegration: '統合を削除',
DeleteIntegrationMsg: 'この統合を削除してもよろしいですか?',
AddAlias: 'エイリアスを追加',
LoadAlias: 'エイリアスを読み込み中...',
runners: 'ランナー',
newRunner: '新しいランナー',
enabled: '有効',
scheduleNextRun: '次の実行',
maxNumberOfParallelTasks: '最大並列タスク数',
runnerUsage: '使用法:',
runnerToken: 'トークン:',
editRunner: 'ランナーを編集',
};

259
web/src/lang/ko.js Normal file
View File

@ -0,0 +1,259 @@
export default {
'Check interval': '검사 간격',
Schedule: '일정',
backup: '백업',
downloadTheProjectBackupFile: '프로젝트 백업 파일 다운로드 (json 형식)',
restoreProject: '프로젝트 복원...',
incorrectUsrPwd: '잘못된 로그인 또는 비밀번호',
askDeleteUser: '정말로 이 사용자를 삭제하시겠습니까?',
askDeleteTemp: '정말로 이 템플릿을 삭제하시겠습니까?',
askDeleteEnv: '정말로 이 환경을 삭제하시겠습니까?',
askDeleteInv: '정말로 이 인벤토리를 삭제하시겠습니까?',
askDeleteKey: '정말로 이 키를 삭제하시겠습니까?',
askDeleteRepo: '정말로 이 리포지토리를 삭제하시겠습니까?',
askDeleteProj: '정말로 이 프로젝트를 삭제하시겠습니까?',
askDeleteTMem: '정말로 이 팀 멤버를 삭제하시겠습니까?',
edit: '편집',
nnew: '새로 만들기',
keyFormSshKey: 'SSH 키',
keyFormLoginPassword: '비밀번호로 로그인',
keyFormNone: '없음',
incorrectUrl: '잘못된 URL',
username: '사용자 이름',
username_required: '사용자 이름은 필수입니다',
dashboard: '대시보드',
history: '기록',
activity: '활동',
settings: '설정',
signIn: '로그인',
password: '비밀번호',
changePassword: '비밀번호 변경',
editUser: '사용자 편집',
newProject: '새 프로젝트',
close: '닫기',
newProject2: '새 프로젝트...',
demoMode: '데모 모드',
task: '작업 #{expr}',
youCanRunAnyTasks: '모든 작업을 실행할 수 있습니다',
youHaveReadonlyAccess: '읽기 전용 액세스 권한이 있습니다',
taskTemplates: '작업 템플릿',
inventory: '인벤토리',
environment: '환경',
keyStore: '키 저장소',
repositories: '리포지토리',
darkMode: '다크 모드',
team: '팀',
users: '사용자',
editAccount: '계정 편집',
signOut: '로그아웃',
error: '오류',
refreshPage: '페이지 새로 고침',
relogin: '다시 로그인',
howToFixSigninIssues: '로그인 문제를 해결하는 방법',
firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: '먼저 Semaphore가 실행되는 서버에 대한 액세스가 필요합니다.',
executeTheFollowingCommandOnTheServerToSeeExisting: '서버에서 다음 명령을 실행하여 기존 사용자를 확인하십시오:',
semaphoreUserList: 'semaphore user list',
youCanChangePasswordOfExistingUser: '기존 사용자의 비밀번호를 변경할 수 있습니다:',
semaphoreUserChangebyloginLoginUser123Password: 'semaphore user change-by-login --login user123 --password {makePasswordExample}',
orCreateNewAdminUser: '또는 새 관리자 사용자를 생성하십시오:',
close2: '닫기',
semaphore: '세마포어',
dontHaveAccountOrCantSignIn: '계정이 없거나 로그인할 수 없습니까?',
password2: '비밀번호',
cancel: '취소',
noViews: '보기 없음',
addView: '보기 추가',
editEnvironment: '환경 편집',
deleteEnvironment: '환경 삭제',
environment2: '환경',
newEnvironment: '새 환경',
environmentName: '환경 이름',
extraVariables: '추가 변수',
enterExtraVariablesJson: '추가 변수 JSON 입력...',
environmentVariables: '환경 변수',
enterEnvJson: '환경 JSON 입력...',
environmentAndExtraVariablesMustBeValidJsonExample: '환경 및 추가 변수는 유효한 JSON이어야 합니다. 예:',
dashboard2: '대시보드',
ansibleSemaphore: '세마포어 UI',
wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: '죄송하지만 <%= htmlWebpackPlugin.options.title %>는 JavaScript가 활성화되지 않으면 제대로 작동하지 않습니다. 계속하려면 활성화하십시오.',
deleteInventory: '인벤토리 삭제',
newInventory: '새 인벤토리',
name: '이름',
userCredentials: '사용자 자격 증명',
sudoCredentialsOptional: 'Sudo 자격 증명 (선택 사항)',
type: '유형',
pathToInventoryFile: '인벤토리 파일 경로',
enterInventory: '인벤토리 입력...',
staticInventoryExample: '정적 인벤토리 예:',
staticYamlInventoryExample: '정적 YAML 인벤토리 예:',
keyName: '키 이름',
loginOptional: '로그인 (선택 사항)',
usernameOptional: '사용자 이름 (선택 사항)',
privateKey: '개인 키',
override: '재정의',
useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: 'HTTPS 리포지토리 및 비 SSH 연결을 사용하는 플레이북에 이 유형의 키를 사용하십시오.',
deleteKey: '키 삭제',
newKey: '새 키',
create: '생성',
newTask: '새 작업',
cantDeleteThe: '{objectTitle}을(를) 삭제할 수 없습니다',
theCantBeDeletedBecauseItUsedByTheResourcesBelow: '{objectTitle}은(는) 아래 리소스에서 사용되므로 삭제할 수 없습니다',
projectName: '프로젝트 이름',
allowAlertsForThisProject: '이 프로젝트에 대한 알림 허용',
telegramChatIdOptional: '텔레그램 채팅 ID (선택 사항)',
maxNumberOfParallelTasksOptional: '최대 병렬 작업 수 (선택 사항)',
deleteRepository: '리포지토리 삭제',
newRepository: '새 리포지토리',
urlOrPath: 'URL 또는 경로',
absPath: '절대 경로',
branch: '브랜치',
accessKey: '액세스 키',
credentialsToAccessToTheGitRepositoryItShouldBe: 'Git 리포지토리에 액세스하기 위한 자격 증명. 다음과 같아야 합니다:',
ifYouUseGitOrSshUrl: 'Git 또는 SSH URL을 사용하는 경우.',
ifYouUseHttpsOrFileUrl: 'HTTPS 또는 파일 URL을 사용하는 경우.',
none: '없음',
ssh: 'SSH',
deleteProject: '프로젝트 삭제',
save: '저장',
deleteProject2: '프로젝트 삭제',
onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: '프로젝트를 삭제하면 되돌릴 수 없습니다. 확실히 하십시오.',
name2: '이름 *',
title: '제목 *',
description: '설명',
required: '필수',
key: '{expr}',
surveyVariables: '설문 변수',
addVariable: '변수 추가',
columns: '열',
buildVersion: '빌드 버전',
messageOptional: '메시지 (선택 사항)',
debug: '디버그',
dryRun: '드라이 런',
diff: '차이',
advanced: '고급',
hide: '숨기기',
pleaseAllowOverridingCliArgumentInTaskTemplateSett: '작업 템플릿 설정에서 CLI 인수를 재정의할 수 있도록 허용하십시오',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'CLI 인수 (JSON 배열). 예: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
started: '시작됨',
author: '작성자',
duration: '지속 시간',
stop: '중지',
forceStop: '강제 중지',
confirmTask: '확인',
deleteTeamMember: '팀 멤버 삭제',
team2: '팀',
newTeamMember: '새 팀 멤버',
user: '사용자',
administrator: '관리자',
definesStartVersionOfYourArtifactEachRunIncrements: '아티팩트의 시작 버전을 정의합니다. 각 실행은 아티팩트 버전을 증가시킵니다.',
forMoreInformationAboutBuildingSeeThe: '빌드에 대한 자세한 정보는 다음을 참조하십시오',
taskTemplateReference: '작업 템플릿 참조',
definesWhatArtifactShouldBeDeployedWhenTheTaskRun: '작업이 실행될 때 배포해야 할 아티팩트를 정의합니다.',
forMoreInformationAboutDeployingSeeThe: '배포에 대한 자세한 정보는 다음을 참조하십시오',
taskTemplateReference2: '작업 템플릿 참조',
definesAutorunSchedule: '자동 실행 일정을 정의합니다.',
forMoreInformationAboutCronSeeThe: 'Cron에 대한 자세한 정보는 다음을 참조하십시오',
cronExpressionFormatReference: 'Cron 표현식 형식 참조',
startVersion: '시작 버전',
example000: '예: 0.0.0',
buildTemplate: '빌드 템플릿',
autorun: '자동 실행',
playbookFilename: '플레이북 파일 이름 *',
exampleSiteyml: '예: site.yml',
inventory2: '인벤토리 *',
repository: '리포지토리',
environment3: '환경 *',
vaultPassword: '금고 비밀번호',
vaultPassword2: '금고 비밀번호',
view: '보기',
cron: '크론',
iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: '저는 특정 리포지토리의 새로운 커밋에 대해서만 크론으로 작업을 실행하고 싶습니다',
repository2: '리포지토리',
cronChecksNewCommitBeforeRun: '크론은 실행 전에 새로운 커밋을 확인합니다',
readThe: '읽기',
toLearnMoreAboutCron: '크론에 대해 더 알아보려면',
suppressSuccessAlerts: '성공 알림 억제',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'CLI 인수 (JSON 배열). 예: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
allowCliArgsInTask: '작업에서 CLI 인수 허용',
docs: '문서',
editViews: '보기 편집',
newTemplate: '새 템플릿',
taskTemplates2: '작업 템플릿',
all: '모두',
notLaunched: '시작되지 않음',
by: '{user_name}에 의해',
editTemplate: '템플릿 편집',
newTemplate2: '새 템플릿',
deleteTemplate: '템플릿 삭제',
playbook: '플레이북',
email: '이메일',
adminUser: '관리자 사용자',
sendAlerts: '알림 전송',
deleteUser: '사용자 삭제',
newUser: '새 사용자',
re: 'Re{getActionButtonTitle}',
teamMember: '{expr} 팀 멤버',
taskId: '작업 ID',
version: '버전',
status: '상태',
start: '시작',
actions: '작업',
alert: '알림',
admin: '관리자',
role: '역할',
external: '외부',
time: '시간',
path: '경로',
gitUrl: 'Git URL',
sshKey: 'SSH 키',
lastTask: '마지막 작업',
task2: '작업',
build: '빌드',
deploy: '배포',
run: '실행',
add: '추가',
password_required: '비밀번호는 필수입니다',
name_required: '이름은 필수입니다',
user_credentials_required: '사용자 자격 증명은 필수입니다',
type_required: '유형은 필수입니다',
path_required: '인벤토리 파일 경로는 필수입니다',
private_key_required: '개인 키는 필수입니다',
project_name_required: '프로젝트 이름은 필수입니다',
repository_required: '리포지토리는 필수입니다',
branch_required: '브랜치는 필수입니다',
key_required: '키는 필수입니다',
user_required: '사용자는 필수입니다',
build_version_required: '빌드 버전은 필수입니다',
title_required: '제목은 필수입니다',
isRequired: '필수입니다',
mustBeInteger: '정수여야 합니다',
mustBe0OrGreater: '0 이상이어야 합니다',
start_version_required: '시작 버전은 필수입니다',
playbook_filename_required: '플레이북 파일 이름은 필수입니다',
inventory_required: '인벤토리는 필수입니다',
environment_required: '환경은 필수입니다',
email_required: '이메일은 필수입니다',
build_template_required: '빌드 템플릿은 필수입니다',
Task: '작업',
Build: '빌드',
Deploy: '배포',
Run: '실행',
CreateDemoProject: '데모 프로젝트 생성',
LeaveProject: '프로젝트 나가기',
integration: '통합',
integrations: '통합',
NewIntegration: '새 통합',
EditIntegration: '통합 편집',
DeleteIntegration: '통합 삭제',
DeleteIntegrationMsg: '정말로 이 통합을 삭제하시겠습니까?',
AddAlias: '별칭 추가',
LoadAlias: '별칭 로딩 중...',
runners: '러너',
newRunner: '새 러너',
enabled: '활성화됨',
scheduleNextRun: '다음 실행',
maxNumberOfParallelTasks: '최대 병렬 작업 수',
runnerUsage: '사용량:',
runnerToken: '토큰:',
editRunner: '러너 편집',
};

View File

@ -1,8 +1,10 @@
export default {
'Check interval': 'Controleer interval',
Schedule: 'Schema',
backup: 'Back-up',
downloadTheProjectBackupFile: 'Download het back-upbestand van het project (in json)',
restoreProject: 'Herstellen...',
incorrectUsrPwd: 'Onjuiste gebruikersnaam of wachtwoord',
downloadTheProjectBackupFile: 'Download het project back-up bestand (in json)',
restoreProject: 'Herstel Project...',
incorrectUsrPwd: 'Onjuiste inlog of wachtwoord',
askDeleteUser: 'Wilt u deze gebruiker echt verwijderen?',
askDeleteTemp: 'Wilt u deze sjabloon echt verwijderen?',
askDeleteEnv: 'Wilt u deze omgeving echt verwijderen?',
@ -13,228 +15,245 @@ export default {
askDeleteTMem: 'Wilt u dit teamlid echt verwijderen?',
edit: 'Bewerken',
nnew: 'Nieuw',
keyFormSshKey: 'SSH-sleutel',
keyFormSshKey: 'SSH Sleutel',
keyFormLoginPassword: 'Inloggen met wachtwoord',
keyFormNone: 'Geen',
incorrectUrl: 'Onjuiste URL',
username: 'Gebruikersnaam',
username_required: 'Gebruikersnaam is verplicht',
username_required: 'Gebruikersnaam is vereist',
dashboard: 'Dashboard',
history: 'Geschiedenis',
activity: 'Activiteit',
settings: 'Instellingen',
signIn: 'Aanmelden',
signIn: 'Inloggen',
password: 'Wachtwoord',
changePassword: 'Wachtwoord wijzigen',
editUser: 'Gebruiker bewerken',
newProject: 'Nieuw project',
editUser: 'Bewerk Gebruiker',
newProject: 'Nieuw Project',
close: 'Sluiten',
newProject2: 'Nieuw project...',
demoMode: 'DEMO-MODUS',
demoMode: 'DEMO MODUS',
task: 'Taak #{expr}',
youCanRunAnyTasks: 'U kunt alle taken uitvoeren',
youCanRunAnyTasks: 'U kunt elke taak uitvoeren',
youHaveReadonlyAccess: 'U heeft alleen-lezen toegang',
taskTemplates: 'Taaksjablonen',
taskTemplates: 'Taak Sjablonen',
inventory: 'Inventaris',
environment: 'Omgeving',
keyStore: 'Sleutelopslag',
keyStore: 'Sleutel Opslag',
repositories: 'Repositories',
darkMode: 'Donkere modus',
darkMode: 'Donkere Modus',
team: 'Team',
users: 'Gebruikers',
editAccount: 'Account bewerken',
signOut: 'Afmelden',
editAccount: 'Bewerk Account',
signOut: 'Uitloggen',
error: 'Fout',
refreshPage: 'Pagina vernieuwen',
relogin: 'Opnieuw aanmelden',
howToFixSigninIssues: 'Hoe aanmeldingsproblemen op te lossen',
firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: 'Allereerst hebt u toegang nodig tot de server waar Semaphore draait.',
executeTheFollowingCommandOnTheServerToSeeExisting: 'Voer het volgende commando uit op de server om bestaande gebruikers te zien:',
semaphoreUserList: 'semaphore user list',
refreshPage: 'Vernieuw Pagina',
relogin: 'Opnieuw inloggen',
howToFixSigninIssues: 'Hoe inlogproblemen op te lossen',
firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: 'Ten eerste heeft u toegang nodig tot de server waar Semaphore draait.',
executeTheFollowingCommandOnTheServerToSeeExisting: 'Voer de volgende opdracht op de server uit om bestaande gebruikers te zien:',
semaphoreUserList: 'semaphore gebruikerslijst',
youCanChangePasswordOfExistingUser: 'U kunt het wachtwoord van een bestaande gebruiker wijzigen:',
semaphoreUserChangebyloginLoginUser123Password: 'semaphore user change-by-login --login user123 --password {makePasswordExample}',
orCreateNewAdminUser: 'Of maak een nieuwe beheerder aan:',
semaphoreUserChangebyloginLoginUser123Password: 'semaphore gebruiker wijzig-per-inlog --login gebruiker123 --wachtwoord {maakWachtwoordVoorbeeld}',
orCreateNewAdminUser: 'Of maak een nieuwe admin gebruiker:',
close2: 'Sluiten',
semaphore: 'SEMAFOOR',
dontHaveAccountOrCantSignIn: 'Hebt u geen account of kunt u zich niet aanmelden?',
semaphore: 'SEMAPHORE',
dontHaveAccountOrCantSignIn: 'Heeft u geen account of kunt u niet inloggen?',
password2: 'Wachtwoord',
cancel: 'Annuleren',
noViews: 'Geen weergaven',
addView: 'Weergave toevoegen',
editEnvironment: 'Omgeving bewerken',
deleteEnvironment: 'Omgeving verwijderen',
addView: 'Voeg weergave toe',
editEnvironment: 'Bewerk Omgeving',
deleteEnvironment: 'Verwijder omgeving',
environment2: 'Omgeving',
newEnvironment: 'Nieuwe omgeving',
newEnvironment: 'Nieuwe Omgeving',
environmentName: 'Omgevingsnaam',
extraVariables: 'Extra variabelen',
enterExtraVariablesJson: 'Voer extra variabelen in JSON opmaak in...',
enterExtraVariablesJson: 'Voer extra variabelen JSON in...',
environmentVariables: 'Omgevingsvariabelen',
enterEnvJson: 'Voer omgevings-JSON in...',
enterEnvJson: 'Voer env JSON in...',
environmentAndExtraVariablesMustBeValidJsonExample: 'Omgeving en extra variabelen moeten geldige JSON zijn. Voorbeeld:',
dashboard2: 'Dashboard',
ansibleSemaphore: 'Semaphore UI',
wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: 'Het spijt ons, maar <%= htmlWebpackPlugin.options.title %> werkt niet correct zonder ingeschakelde JavaScript. Schakel het in om door te gaan.',
deleteInventory: 'Inventaris verwijderen',
newInventory: 'Nieuwe inventaris',
wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: 'Het spijt ons, maar <%= htmlWebpackPlugin.options.title %> werkt niet goed zonder ingeschakelde JavaScript. Schakel het in om door te gaan.',
deleteInventory: 'Verwijder inventaris',
newInventory: 'Nieuwe Inventaris',
name: 'Naam',
userCredentials: 'Gebruikersreferenties',
sudoCredentialsOptional: 'Sudo-referenties (optioneel)',
sudoCredentialsOptional: 'Sudo Referenties (Optioneel)',
type: 'Type',
pathToInventoryFile: 'Pad naar inventarisbestand',
pathToInventoryFile: 'Pad naar Inventarisbestand',
enterInventory: 'Voer inventaris in...',
staticInventoryExample: 'Voorbeeld van statische inventaris:',
staticYamlInventoryExample: 'Voorbeeld van statische YAML-inventaris:',
staticInventoryExample: 'Statische inventarisvoorbeeld:',
staticYamlInventoryExample: 'Statisch YAML inventarisvoorbeeld:',
keyName: 'Sleutelnaam',
loginOptional: 'Inloggen (optioneel)',
usernameOptional: 'Gebruikersnaam (optioneel)',
loginOptional: 'Inloggen (Optioneel)',
usernameOptional: 'Gebruikersnaam (Optioneel)',
privateKey: 'Privésleutel',
override: 'Overschrijven',
useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: 'Gebruik dit type sleutel voor HTTPS-repositories en voor playbooks die geen SSH-verbindingen gebruiken.',
deleteKey: 'Sleutel verwijderen',
newKey: 'Nieuwe sleutel',
create: 'Maken',
newTask: 'Nieuwe taak',
cantDeleteThe: 'Kan {objectTitle} niet verwijderen',
theCantBeDeletedBecauseItUsedByTheResourcesBelow: 'De {objectTitle} kan niet worden verwijderd omdat deze wordt gebruikt door de onderstaande resources',
useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: 'Gebruik dit type sleutel voor HTTPS repositories en voor playbooks die geen SSH-verbindingen gebruiken.',
deleteKey: 'Verwijder sleutel',
newKey: 'Nieuwe Sleutel',
create: 'Aanmaken',
newTask: 'Nieuwe Taak',
cantDeleteThe: 'Kan de {objectTitle} niet verwijderen',
theCantBeDeletedBecauseItUsedByTheResourcesBelow: 'De {objectTitle} kan niet worden verwijderd omdat deze wordt gebruikt door de onderstaande bronnen',
projectName: 'Projectnaam',
allowAlertsForThisProject: 'Waarschuwingen toestaan voor dit project',
telegramChatIdOptional: 'Telegram Chat ID (optioneel)',
maxNumberOfParallelTasksOptional: 'Maximaal aantal gelijktijdige taken (optioneel)',
deleteRepository: 'Repository verwijderen',
newRepository: 'Nieuwe repository',
allowAlertsForThisProject: 'Sta waarschuwingen voor dit project toe',
telegramChatIdOptional: 'Telegram Chat ID (Optioneel)',
maxNumberOfParallelTasksOptional: 'Maximaal aantal parallelle taken (Optioneel)',
deleteRepository: 'Verwijder repository',
newRepository: 'Nieuwe Repository',
urlOrPath: 'URL of pad',
absPath: 'Absoluut pad',
absPath: 'absoluut pad',
branch: 'Tak',
accessKey: 'Toegangssleutel',
credentialsToAccessToTheGitRepositoryItShouldBe: 'Referenties om toegang te krijgen tot het Git-repository. Het zou moeten zijn:',
ifYouUseGitOrSshUrl: 'als u Git- of SSH-URL gebruikt.',
ifYouUseHttpsOrFileUrl: 'als u HTTPS- of bestand-URL gebruikt.',
credentialsToAccessToTheGitRepositoryItShouldBe: 'Referenties om toegang te krijgen tot de Git-repository. Het zou moeten zijn:',
ifYouUseGitOrSshUrl: 'als u Git of SSH URL gebruikt.',
ifYouUseHttpsOrFileUrl: 'als u HTTPS of bestand URL gebruikt.',
none: 'Geen',
ssh: 'SSH',
deleteProject: 'Project verwijderen',
deleteProject: 'Verwijder project',
save: 'Opslaan',
deleteProject2: 'Project verwijderen',
onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: 'Zodra u een project verwijdert, is er geen weg terug. Wees zeker.',
deleteProject2: 'Verwijder Project',
onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: 'Zodra u een project verwijdert, is er geen weg meer terug. Wees alstublieft zeker.',
name2: 'Naam *',
title: 'Titel *',
description: 'Beschrijving',
required: 'Vereist',
key: '{expr}',
surveyVariables: 'Enquêtevariabelen',
addVariable: 'Variabele toevoegen',
addVariable: 'Voeg variabele toe',
columns: 'Kolommen',
buildVersion: 'Bouwversie',
messageOptional: 'Bericht (optioneel)',
messageOptional: 'Bericht (Optioneel)',
debug: 'Debug',
dryRun: 'Proefrun',
dryRun: 'Droog draaien',
diff: 'Verschil',
advanced: 'Geavanceerd',
hide: 'Verbergen',
pleaseAllowOverridingCliArgumentInTaskTemplateSett: 'Sta het overschrijven van CLI-argument toe in de instellingen van het taaksjabloon',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'CLI-argumenten (JSON-array). Voorbeeld: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
pleaseAllowOverridingCliArgumentInTaskTemplateSett: 'Om het overschrijven van CLI-argumenten in Taak Sjablooninstellingen toe te staan',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'CLI Args (JSON-array). Voorbeeld: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
started: 'Gestart',
author: 'Auteur',
duration: 'Duur',
stop: 'Stoppen',
forceStop: 'Gedwongen stop',
deleteTeamMember: 'Teamlid verwijderen',
stop: 'Stop',
forceStop: 'Forceer Stop',
confirmTask: 'Bevestigen',
deleteTeamMember: 'Verwijder teamlid',
team2: 'Team',
newTeamMember: 'Nieuw teamlid',
newTeamMember: 'Nieuw Teamlid',
user: 'Gebruiker',
administrator: 'Beheerder',
definesStartVersionOfYourArtifactEachRunIncrements: 'Definieert de startversie van uw artefact. Elke uitvoering verhoogt de artefactversie.',
administrator: 'Administrator',
definesStartVersionOfYourArtifactEachRunIncrements: 'Definieert de startversie van uw artifact. Elke uitvoering verhoogt de artifactversie.',
forMoreInformationAboutBuildingSeeThe: 'Voor meer informatie over bouwen, zie de',
taskTemplateReference: 'Referentie taaksjabloon',
definesWhatArtifactShouldBeDeployedWhenTheTaskRun: 'Definieert welk artefact moet worden geïmplementeerd wanneer de taak wordt uitgevoerd.',
taskTemplateReference: 'Taak Sjabloonreferentie',
definesWhatArtifactShouldBeDeployedWhenTheTaskRun: 'Definieert welk artifact moet worden gedeployed wanneer de taak draait.',
forMoreInformationAboutDeployingSeeThe: 'Voor meer informatie over implementeren, zie de',
taskTemplateReference2: 'Referentie taaksjabloon',
definesAutorunSchedule: 'Definieert autorunschema.',
taskTemplateReference2: 'Taak Sjabloonreferentie',
definesAutorunSchedule: 'Definieert het autorun-schema.',
forMoreInformationAboutCronSeeThe: 'Voor meer informatie over cron, zie de',
cronExpressionFormatReference: 'Referentieformaat cron-uitdrukking',
cronExpressionFormatReference: 'Cron-expressieformaatreferentie',
startVersion: 'Startversie',
example000: 'Voorbeeld: 0.0.0',
buildTemplate: 'Bouwsjabloon',
buildTemplate: 'Bouw Sjabloon',
autorun: 'Automatisch uitvoeren',
playbookFilename: 'Playbook-bestandsnaam *',
playbookFilename: 'Playbook Bestandsnaam *',
exampleSiteyml: 'Voorbeeld: site.yml',
inventory2: 'Inventaris *',
repository: 'Repository',
environment3: 'Omgeving *',
vaultPassword: 'Vault-wachtwoord',
vaultPassword2: 'Vault-wachtwoord',
vaultPassword: 'Kluiswachtwoord',
vaultPassword2: 'Kluiswachtwoord',
view: 'Weergave',
cron: 'Cron',
iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: 'Ik wil een taak uitvoeren via cron alleen voor nieuwe commits van een bepaald repository',
iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: 'Ik wil een taak via de cron uitvoeren alleen voor nieuwe commits van een bepaalde repository',
repository2: 'Repository',
cronChecksNewCommitBeforeRun: 'Cron controleert nieuwe commit voor uitvoering',
cronChecksNewCommitBeforeRun: 'Cron controleert nieuwe commit voordat deze wordt uitgevoerd',
readThe: 'Lees de',
toLearnMoreAboutCron: 'om meer te weten te komen over Cron.',
suppressSuccessAlerts: 'Onderdruk succesmeldingen',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'CLI-argumenten (JSON-array). Voorbeeld: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
allowCliArgsInTask: 'Toestaan van CLI-argumenten in taak',
toLearnMoreAboutCron: 'om meer te leren over Cron.',
suppressSuccessAlerts: 'Suppress success alerts',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'CLI Args (JSON-array). Voorbeeld: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
allowCliArgsInTask: 'Sta CLI-argumenten toe in Taak',
docs: 'documentatie',
editViews: 'Weergaven bewerken',
editViews: 'Bewerk Weergaven',
newTemplate: 'Nieuw sjabloon',
taskTemplates2: 'Taaksjablonen',
all: 'Alles',
notLaunched: 'Niet gestart',
taskTemplates2: 'Taak Sjablonen',
all: 'Alle',
notLaunched: 'Niet gelanceerd',
by: 'door {user_name}',
editTemplate: 'Sjabloon bewerken',
newTemplate2: 'Nieuw sjabloon',
deleteTemplate: 'Sjabloon verwijderen',
editTemplate: 'Bewerk Sjabloon',
newTemplate2: 'Nieuw Sjabloon',
deleteTemplate: 'Verwijder sjabloon',
playbook: 'Playbook',
email: 'E-mail',
adminUser: 'Beheerdersgebruiker',
sendAlerts: 'Meldingen verzenden',
deleteUser: 'Gebruiker verwijderen',
newUser: 'Nieuwe gebruiker',
re: 'Her{getActionButtonTitle}',
adminUser: 'Admin gebruiker',
sendAlerts: 'Stuur waarschuwingen',
deleteUser: 'Verwijder gebruiker',
newUser: 'Nieuwe Gebruiker',
re: 'Re{getActionButtonTitle}',
teamMember: '{expr} Teamlid',
taskId: 'Taak-ID',
taskId: 'Taak ID',
version: 'Versie',
status: 'Status',
start: 'Starten',
start: 'Start',
actions: 'Acties',
alert: 'Melding',
admin: 'Beheerder',
alert: 'Waarschuwing',
admin: 'Admin',
role: 'Rol',
external: 'Extern',
time: 'Tijd',
path: 'Pad',
gitUrl: 'Git-URL',
sshKey: 'SSH-sleutel',
lastTask: 'Laatste taak',
gitUrl: 'Git URL',
sshKey: 'SSH Sleutel',
lastTask: 'Laatste Taak',
task2: 'Taak',
build: 'Bouwen',
deploy: 'Implementeren',
run: 'Uitvoeren',
add: 'Toevoegen',
password_required: 'Wachtwoord is verplicht',
name_required: 'Naam is verplicht',
user_credentials_required: 'Gebruikersreferenties zijn verplicht',
type_required: 'Type is verplicht',
path_required: 'Pad naar inventarisbestand is verplicht',
private_key_required: 'Privésleutel is verplicht',
project_name_required: 'Projectnaam is verplicht',
repository_required: 'Repository is verplicht',
branch_required: 'Tak is verplicht',
key_required: 'Sleutel is verplicht',
user_required: 'Gebruiker is verplicht',
build_version_required: 'Bouwversie is verplicht',
title_required: 'Titel is verplicht',
isRequired: 'is verplicht',
password_required: 'Wachtwoord is vereist',
name_required: 'Naam is vereist',
user_credentials_required: 'Gebruikersreferenties zijn vereist',
type_required: 'Type is vereist',
path_required: 'Pad naar Inventarisbestand is vereist',
private_key_required: 'Privésleutel is vereist',
project_name_required: 'Projectnaam is vereist',
repository_required: 'Repository is vereist',
branch_required: 'Tak is vereist',
key_required: 'Sleutel is vereist',
user_required: 'Gebruiker is vereist',
build_version_required: 'Bouwversie is vereist',
title_required: 'Titel is vereist',
isRequired: 'is vereist',
mustBeInteger: 'Moet een geheel getal zijn',
mustBe0OrGreater: 'Moet 0 of groter zijn',
start_version_required: 'Startversie is verplicht',
playbook_filename_required: 'Playbook-bestandsnaam is verplicht',
inventory_required: 'Inventaris is verplicht',
environment_required: 'Omgeving is verplicht',
email_required: 'E-mail is verplicht',
build_template_required: 'Bouwsjabloon is verplicht',
start_version_required: 'Startversie is vereist',
playbook_filename_required: 'Playbook bestandsnaam is vereist',
inventory_required: 'Inventaris is vereist',
environment_required: 'Omgeving is vereist',
email_required: 'E-mail is vereist',
build_template_required: 'Bouwsjabloon is vereist',
Task: 'Taak',
Build: 'Bouwen',
Deploy: 'Implementeren',
Run: 'Uitvoeren',
CreateDemoProject: 'Demo-project aanmaken',
LeaveProject: 'Project verlaten',
CreateDemoProject: 'Maak Demo Project',
LeaveProject: 'Verlaat Project',
integration: 'Integratie',
integrations: 'Integraties',
NewIntegration: 'Nieuwe Integratie',
EditIntegration: 'Bewerk Integratie',
DeleteIntegration: 'Verwijder Integratie',
DeleteIntegrationMsg: 'Weet u zeker dat u deze integratie wilt verwijderen?',
AddAlias: 'Voeg Alias toe',
LoadAlias: 'Alias laden...',
runners: 'Runners',
newRunner: 'Nieuwe Runner',
enabled: 'Ingeschakeld',
scheduleNextRun: 'Volgende uitvoering',
maxNumberOfParallelTasks: 'Maximaal aantal parallelle taken',
runnerUsage: 'Gebruik:',
runnerToken: 'Token:',
editRunner: 'Bewerk Runner',
};

View File

@ -1,27 +1,29 @@
export default {
'Check interval': 'Interwał sprawdzania',
Schedule: 'Harmonogram',
backup: 'Kopia zapasowa',
downloadTheProjectBackupFile: 'Pobierz plik kopii zapasowej projektu (w formacie json)',
restoreProject: 'Przywrócić...',
incorrectUsrPwd: 'Nieprawidłowa nazwa użytkownika lub hasło.',
restoreProject: 'Przywróć projekt...',
incorrectUsrPwd: 'Niepoprawny login lub hasło',
askDeleteUser: 'Czy na pewno chcesz usunąć tego użytkownika?',
askDeleteTemp: 'Czy na pewno chcesz usunąć ten szablon?',
askDeleteEnv: 'Czy na pewno chcesz usunąć to środowisko?',
askDeleteInv: 'Czy na pewno chcesz usunąć tę ewidencję?',
askDeleteInv: 'Czy na pewno chcesz usunąć ten inwentarz?',
askDeleteKey: 'Czy na pewno chcesz usunąć ten klucz?',
askDeleteRepo: 'Czy na pewno chcesz usunąć to repozytorium?',
askDeleteProj: 'Czy na pewno chcesz usunąć ten projekt?',
askDeleteTMem: 'Czy na pewno chcesz usunąć tego uczestnika zespołu?',
edit: 'Modyfikuj',
nnew: 'Utwórz',
askDeleteTMem: 'Czy na pewno chcesz usunąć tego członka zespołu?',
edit: 'Edytuj',
nnew: 'Nowy',
keyFormSshKey: 'Klucz SSH',
keyFormLoginPassword: 'Login with password',
keyFormNone: 'None',
incorrectUrl: 'Nieprawidłowy URL',
keyFormLoginPassword: 'Login z hasłem',
keyFormNone: 'Brak',
incorrectUrl: 'Niepoprawny URL',
username: 'Nazwa użytkownika',
username_required: 'Nazwa użytkownika jest wymagana.',
dashboard: 'Pulpit',
username_required: 'Nazwa użytkownika jest wymagana',
dashboard: 'Panel',
history: 'Historia',
activity: 'Czynność',
activity: 'Aktywność',
settings: 'Ustawienia',
signIn: 'Zaloguj się',
password: 'Hasło',
@ -32,145 +34,146 @@ export default {
newProject2: 'Nowy projekt...',
demoMode: 'TRYB DEMO',
task: 'Zadanie #{expr}',
youCanRunAnyTasks: 'Możesz uruchamiać każde zadanie',
youHaveReadonlyAccess: 'Masz uprawnienia jedynie do odczytu',
youCanRunAnyTasks: 'Możesz uruchomić dowolne zadania',
youHaveReadonlyAccess: 'Masz dostęp tylko do odczytu',
taskTemplates: 'Szablony zadań',
inventory: 'Ewidencja',
inventory: 'Inwentarz',
environment: 'Środowisko',
keyStore: 'Magazyn kluczy',
repositories: 'Repozytoria',
darkMode: 'Wersja ciemna',
darkMode: 'Tryb ciemny',
team: 'Zespół',
users: 'Użytkownicy',
editAccount: 'Modyfikuj konto',
signOut: 'Wyjdź',
editAccount: 'Edytuj konto',
signOut: 'Wyloguj się',
error: 'Błąd',
refreshPage: 'Odśwież stronę',
relogin: 'Zaloguj ponownie',
howToFixSigninIssues: 'Rozwiązywanie problemów z logowaniem',
firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: 'Najpierw wejdź na serwer na którym uruchomiony jest Semaphore',
executeTheFollowingCommandOnTheServerToSeeExisting: 'Wykonaj poniższe polecenie aby zobaczyć użytkowników:',
semaphoreUserList: 'Lista użytkowników Semaphore',
relogin: 'Ponowne logowanie',
howToFixSigninIssues: 'Jak naprawić problemy z logowaniem',
firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: 'Po pierwsze, musisz mieć dostęp do serwera, na którym działa Semaphore.',
executeTheFollowingCommandOnTheServerToSeeExisting: 'Wykonaj następujące polecenie na serwerze, aby zobaczyć istniejących użytkowników:',
semaphoreUserList: 'semaphore user list',
youCanChangePasswordOfExistingUser: 'Możesz zmienić hasło istniejącego użytkownika:',
semaphoreUserChangebyloginLoginUser123Password: 'semaphore user change-by-login --login user123 --password {makePasswordExample}',
orCreateNewAdminUser: 'lub stworzyć nowego administratora:',
orCreateNewAdminUser: 'Lub utwórz nowego użytkownika administratora:',
close2: 'Zamknij',
semaphore: 'SEMAPHORE',
dontHaveAccountOrCantSignIn: 'Nie masz konta, lub masz kłopoty z logowaniem?',
semaphore: 'SEMAFOR',
dontHaveAccountOrCantSignIn: 'Nie masz konta lub nie możesz się zalogować?',
password2: 'Hasło',
cancel: 'Anuluj',
noViews: 'Brak widoków',
addView: 'Dodaj widok',
editEnvironment: 'Edytuj środowisko',
deleteEnvironment: 'Usuń Środowisko',
deleteEnvironment: 'Usuń środowisko',
environment2: 'Środowisko',
newEnvironment: 'Nowe środowisko',
environmentName: 'Nazwa środowiska',
extraVariables: 'Dodatkowe zmienne',
enterExtraVariablesJson: 'Wprowadź dodatkowe zmienne w formacie JSON...',
enterExtraVariablesJson: 'Wprowadź dodatkowe zmienne JSON...',
environmentVariables: 'Zmienne środowiskowe',
enterEnvJson: 'Wprowadź środowisko JSON...',
environmentAndExtraVariablesMustBeValidJsonExample: 'Środowisko i dodatkowe zmienne muszą być w poprawnym formacie JSON np.',
dashboard2: 'Pulpit',
ansibleSemaphore: 'Semaphore UI',
wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: 'Przepraszamy, ale <%= htmlWebpackPlugin.options.title %> nie działa poprawnie bez Javascript-u. Włącz JS i spróbuj ponownie.',
deleteInventory: 'Usuń ewidencję',
newInventory: 'Nowa ewidencja',
enterEnvJson: 'Wprowadź JSON środowiska...',
environmentAndExtraVariablesMustBeValidJsonExample: 'Środowisko i dodatkowe zmienne muszą być poprawnym JSON-em. Przykład:',
dashboard2: 'Panel',
ansibleSemaphore: 'Interfejs użytkownika Semaphore',
wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: 'Przykro nam, ale <%= htmlWebpackPlugin.options.title %> nie działa poprawnie bez włączonego JavaScriptu. Proszę włączyć, aby kontynuować.',
deleteInventory: 'Usuń inwentarz',
newInventory: 'Nowy inwentarz',
name: 'Nazwa',
userCredentials: 'Dane użytkownika',
sudoCredentialsOptional: 'Dane dla Sudo (Optional)',
userCredentials: 'Dane logowania użytkownika',
sudoCredentialsOptional: 'Dane logowania sudo (opcjonalnie)',
type: 'Typ',
pathToInventoryFile: 'Ścieżka do pliku ewidencji',
enterInventory: 'Wprowadź ewidencję...',
staticInventoryExample: 'Przykładowa ewidencja statyczna:',
staticYamlInventoryExample: 'Przykładowa ewidencja statyczna w formacie YAML:',
pathToInventoryFile: 'Ścieżka do pliku inwentarza',
enterInventory: 'Wprowadź inwentarz...',
staticInventoryExample: 'Przykład statycznego inwentarza:',
staticYamlInventoryExample: 'Przykład statycznego inwentarza YAML:',
keyName: 'Nazwa klucza',
loginOptional: 'Login (Niewymagany)',
usernameOptional: 'Nazwa użytkownika (Niewymagana)',
loginOptional: 'Login (opcjonalnie)',
usernameOptional: 'Nazwa użytkownika (opcjonalnie)',
privateKey: 'Klucz prywatny',
override: 'Override',
useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: 'Użyj klucza tego typu dla repozytoriów HTTPS i dla scenariuszy używających połączeń innych niż SSH.',
override: 'Nadpisz',
useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: 'Użyj tego typu klucza dla repozytoriów HTTPS i dla playbooków, które używają połączeń nie-SSH.',
deleteKey: 'Usuń klucz',
newKey: 'Nowy klucz',
create: 'Utwórz',
newTask: 'Nowe zadanie',
cantDeleteThe: 'Nie można usunąć {objectTitle}',
theCantBeDeletedBecauseItUsedByTheResourcesBelow: '{objectTitle} nie może być usunięty ponieważ jest używany przez poniższe zasoby.',
theCantBeDeletedBecauseItUsedByTheResourcesBelow: '{objectTitle} nie może być usunięty, ponieważ jest używany przez poniższe zasoby',
projectName: 'Nazwa projektu',
allowAlertsForThisProject: 'Zezwól na powiadomienia dla tego projektu.',
telegramChatIdOptional: 'Telegram Chat ID (Niewymagany)',
maxNumberOfParallelTasksOptional: 'Maksimum dla zadań współbieżnych (Niewymagane)',
allowAlertsForThisProject: 'Zezwól na powiadomienia dla tego projektu',
telegramChatIdOptional: 'ID czatu Telegram (opcjonalnie)',
maxNumberOfParallelTasksOptional: 'Maksymalna liczba równoległych zadań (opcjonalnie)',
deleteRepository: 'Usuń repozytorium',
newRepository: 'Nowe repozytorium',
urlOrPath: 'URL lub ścieżka',
absPath: 'ścieżka bezwgl.',
absPath: 'absolutna ścieżka',
branch: 'Gałąź',
accessKey: 'Klucz dostępu',
credentialsToAccessToTheGitRepositoryItShouldBe: 'Dane dostępowe dla repozytorium Git:',
ifYouUseGitOrSshUrl: 'jeśli używasz Git-a lub SSH URL.',
ifYouUseHttpsOrFileUrl: 'jeśli używasz HTTPS lub URL pliku.',
none: 'None',
credentialsToAccessToTheGitRepositoryItShouldBe: 'Dane logowania do dostępu do repozytorium Git. Powinny być:',
ifYouUseGitOrSshUrl: 'jeśli używasz URL Git lub SSH.',
ifYouUseHttpsOrFileUrl: 'jeśli używasz URL HTTPS lub pliku.',
none: 'Brak',
ssh: 'SSH',
deleteProject: 'Usuń projekt',
save: 'Zapisz',
deleteProject2: 'Usuń projekt',
onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: 'Usunięcia projektu nie można cofnąć. Na pewno chcesz to zrobić?',
onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: 'Gdy usuniesz projekt, nie ma powrotu. Proszę być pewnym.',
name2: 'Nazwa *',
title: 'Tytuł *',
description: 'Opis',
required: 'Wymagane',
key: '{expr}',
surveyVariables: 'Przejrzyj zmienne',
surveyVariables: 'Zmienne ankiety',
addVariable: 'Dodaj zmienną',
columns: 'Kolumny',
buildVersion: 'Build Version',
messageOptional: 'Komunikat (nieobowiązkowy)',
debug: 'Debuguj',
dryRun: 'Przebieg próbny',
diff: 'Diff',
buildVersion: 'Wersja kompilacji',
messageOptional: 'Wiadomość (opcjonalnie)',
debug: 'Debug',
dryRun: 'Symulacja',
diff: 'Różnice',
advanced: 'Zaawansowane',
hide: 'Ukryj',
pleaseAllowOverridingCliArgumentInTaskTemplateSett: 'Zezwól na napisywanie argumentów CLI w ustawieniach Szablonu Zadania',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'CLI Args (JSON array) np. [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
started: 'Rozpoczęte',
pleaseAllowOverridingCliArgumentInTaskTemplateSett: 'Aby zezwolić na nadpisanie argumentu CLI w ustawieniach szablonu zadania',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'Argumenty CLI (tablica JSON). Przykład: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
started: 'Rozpoczęto',
author: 'Autor',
duration: 'Czas trwania',
stop: 'Stop',
stop: 'Zatrzymaj',
forceStop: 'Wymuś zatrzymanie',
confirmTask: 'Potwierdź',
deleteTeamMember: 'Usuń członka zespołu',
team2: 'Zespół',
newTeamMember: 'Nowy członek zespołu',
user: 'użytkownik',
user: 'Użytkownik',
administrator: 'Administrator',
definesStartVersionOfYourArtifactEachRunIncrements: 'Definiuje początkową wersję Twojego wytworu. Każde uruchomienie zwiększa wersję.',
forMoreInformationAboutBuildingSeeThe: 'Aby uzyskać więcej informacji na temat budowania zobacz:',
taskTemplateReference: 'Odniesienie do szablonu zadania',
definesWhatArtifactShouldBeDeployedWhenTheTaskRun: 'Określa który wytwór zostanie wdrożony podczas uruchomienia zadania',
forMoreInformationAboutDeployingSeeThe: 'Więcej informacji dot. wdrażania znajdziesz',
taskTemplateReference2: 'Odniesienie do szablonu zadania',
definesAutorunSchedule: 'Defines autorun schedule.',
forMoreInformationAboutCronSeeThe: 'Aby uzyskać więcej informacji na temat cron przejrzyj:',
cronExpressionFormatReference: 'Format wyrażenia CRON',
definesStartVersionOfYourArtifactEachRunIncrements: 'Określa początkową wersję twojego artefaktu. Każde uruchomienie zwiększa wersję artefaktu.',
forMoreInformationAboutBuildingSeeThe: 'Aby uzyskać więcej informacji na temat budowania, zobacz',
taskTemplateReference: 'Odwołanie do szablonu zadania',
definesWhatArtifactShouldBeDeployedWhenTheTaskRun: 'Określa, jaki artefakt powinien być wdrożony, gdy zadanie jest uruchamiane.',
forMoreInformationAboutDeployingSeeThe: 'Aby uzyskać więcej informacji na temat wdrażania, zobacz',
taskTemplateReference2: 'Odwołanie do szablonu zadania',
definesAutorunSchedule: 'Określa harmonogram automatycznego uruchamiania.',
forMoreInformationAboutCronSeeThe: 'Aby uzyskać więcej informacji na temat cron, zobacz',
cronExpressionFormatReference: 'Odwołanie do formatu wyrażenia cron',
startVersion: 'Wersja początkowa',
example000: 'Np. 0.0.0',
buildTemplate: 'Stwórz szablon',
autorun: 'Uruchom automatycznie',
playbookFilename: 'Plik scenariusza *',
exampleSiteyml: 'np. site.yml',
inventory2: 'Ewidencja *',
example000: 'Przykład: 0.0.0',
buildTemplate: 'Szablon budowy',
autorun: 'Automatyczne uruchamianie',
playbookFilename: 'Nazwa pliku playbook *',
exampleSiteyml: 'Przykład: site.yml',
inventory2: 'Inwentarz *',
repository: 'Repozytorium',
environment3: 'Środowisko *',
vaultPassword: 'Hasło do Vault',
vaultPassword2: 'Hasło do Vault',
vaultPassword: 'Hasło skarbca',
vaultPassword2: 'Hasło skarbca',
view: 'Widok',
cron: 'Cron',
iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: 'Chcę uruchomić zadanie z pomocą CRON jedynie dla nowych commit-ów repozytorium',
iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: 'Chcę uruchomić zadanie przez cron tylko dla nowych commitów niektórego repozytorium',
repository2: 'Repozytorium',
cronChecksNewCommitBeforeRun: 'Cron sprawdza nowe commity przed uruchomieniem',
readThe: 'Przeczytaj ',
toLearnMoreAboutCron: 'aby dowiedzieć się więcej nt. Cron.',
suppressSuccessAlerts: 'Wstrzymaj powiadomienia o sukcesie',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'CLI Args (JSON array). Example: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
cronChecksNewCommitBeforeRun: 'Cron sprawdza nowy commit przed uruchomieniem',
readThe: 'Przeczytaj',
toLearnMoreAboutCron: 'aby dowiedzieć się więcej o Cron.',
suppressSuccessAlerts: 'Tłumienie powiadomień o sukcesie',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'Argumenty CLI (tablica JSON). Przykład: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
allowCliArgsInTask: 'Zezwól na argumenty CLI w zadaniu',
docs: 'dokumentacja',
editViews: 'Edytuj widoki',
@ -178,62 +181,79 @@ export default {
taskTemplates2: 'Szablony zadań',
all: 'Wszystko',
notLaunched: 'Nie uruchomiono',
by: 'by {user_name}',
editTemplate: 'Modyfikuj Szablon',
newTemplate2: 'Nowy Szablon',
by: 'przez {user_name}',
editTemplate: 'Edytuj szablon',
newTemplate2: 'Nowy szablon',
deleteTemplate: 'Usuń szablon',
playbook: 'Scenariusz',
playbook: 'Playbook',
email: 'Email',
adminUser: 'Administrator',
sendAlerts: 'Wyślij powiadomienie',
adminUser: 'Użytkownik administratora',
sendAlerts: 'Wyślij powiadomienia',
deleteUser: 'Usuń użytkownika',
newUser: 'Nowy użytkownik',
re: 'Odp.{getActionButtonTitle}',
teamMember: '{expr} Członek Zespołu',
taskId: 'ID Zadania',
re: 'Re{getActionButtonTitle}',
teamMember: '{expr} członek zespołu',
taskId: 'ID zadania',
version: 'Wersja',
status: 'Status',
start: 'Start',
start: 'Rozpocznij',
actions: 'Akcje',
alert: 'Powiadomienie',
admin: 'Admin',
admin: 'Administrator',
role: 'Rola',
external: 'External',
external: 'Zewnętrzny',
time: 'Czas',
path: 'Ścieżka',
gitUrl: 'Git URL',
gitUrl: 'URL Git',
sshKey: 'Klucz SSH',
lastTask: 'Ostatnie zadanie',
task2: 'Zadanie',
build: 'Buduj',
deploy: 'Wdrażaj',
deploy: 'Wdróż',
run: 'Uruchom',
add: 'Dodaj',
password_required: 'Hasło jest wymagane',
name_required: 'Nazwa jest wymagana',
user_credentials_required: 'Dane użytkownika są wymagane',
user_credentials_required: 'Dane logowania użytkownika są wymagane',
type_required: 'Typ jest wymagany',
path_required: 'Ścieżka do pliku ewidencji jest wymagana',
path_required: 'Ścieżka do pliku inwentarza jest wymagana',
private_key_required: 'Klucz prywatny jest wymagany',
project_name_required: 'Nazwa projektu jest wymagana',
repository_required: 'Repozytorium jest wymagane',
branch_required: 'Gałąź (branch) jest wymagana',
branch_required: 'Gałąź jest wymagana',
key_required: 'Klucz jest wymagany',
user_required: 'Użytkownik jest wymagany',
build_version_required: 'Wersja Build-u jest wymagana',
build_version_required: 'Wersja budowy jest wymagana',
title_required: 'Tytuł jest wymagany',
isRequired: 'jest wymagany/-a',
isRequired: 'jest wymagane',
mustBeInteger: 'Musi być liczbą całkowitą',
mustBe0OrGreater: 'Musi być większe lub równe 0 ',
mustBe0OrGreater: 'Musi być 0 lub większa',
start_version_required: 'Wersja początkowa jest wymagana',
playbook_filename_required: 'Plik scenariusza jest wymagany',
inventory_required: 'Ewidencja jest wymagana',
playbook_filename_required: 'Nazwa pliku playbook jest wymagana',
inventory_required: 'Inwentarz jest wymagany',
environment_required: 'Środowisko jest wymagane',
email_required: 'Email jest wymagany',
build_template_required: 'Szablon Build jest wymagany',
build_template_required: 'Szablon budowy jest wymagany',
Task: 'Zadanie',
Build: 'Build',
Deploy: 'Wdrażaj',
Build: 'Buduj',
Deploy: 'Wdróż',
Run: 'Uruchom',
CreateDemoProject: 'Utwórz projekt demo',
LeaveProject: 'Opuszcz projekt',
integration: 'Integracja',
integrations: 'Integracje',
NewIntegration: 'Nowa integracja',
EditIntegration: 'Edytuj integrację',
DeleteIntegration: 'Usuń integrację',
DeleteIntegrationMsg: 'Czy na pewno chcesz usunąć tę integrację?',
AddAlias: 'Dodaj alias',
LoadAlias: 'Ładowanie aliasów...',
runners: 'Uruchamiacze',
newRunner: 'Nowy uruchamiacz',
enabled: 'Włączony',
scheduleNextRun: 'Następne uruchomienie',
maxNumberOfParallelTasks: 'Maksymalna liczba równoległych zadań',
runnerUsage: 'Użycie:',
runnerToken: 'Token:',
editRunner: 'Edytuj uruchamiacz',
};

View File

@ -1,237 +1,259 @@
export default {
backup: 'Cópia de segurança',
downloadTheProjectBackupFile: 'Baixe o arquivo de backup do projeto (em json)',
restoreProject: 'Restaurar...',
incorrectUsrPwd: 'Nome de utilizador ou palavra-passe incorretos',
askDeleteUser: 'Tem a certeza de que deseja eliminar este utilizador?',
askDeleteTemp: 'Tem a certeza de que deseja eliminar este modelo?',
askDeleteEnv: 'Tem a certeza de que deseja eliminar este ambiente?',
askDeleteInv: 'Tem a certeza de que deseja eliminar este inventário?',
askDeleteKey: 'Tem a certeza de que deseja eliminar esta chave?',
askDeleteRepo: 'Tem a certeza de que deseja eliminar este repositório?',
askDeleteProj: 'Tem a certeza de que deseja eliminar este projeto?',
askDeleteTMem: 'Tem a certeza de que deseja eliminar este membro da equipa?',
'Check interval': 'Intervalo de verificação',
Schedule: 'Agendar',
backup: 'Backup',
downloadTheProjectBackupFile: 'Baixar o arquivo de backup do projeto (em json)',
restoreProject: 'Restaurar Projeto...',
incorrectUsrPwd: 'Login ou senha incorretos',
askDeleteUser: 'Você realmente deseja excluir este usuário?',
askDeleteTemp: 'Você realmente deseja excluir este modelo?',
askDeleteEnv: 'Você realmente deseja excluir este ambiente?',
askDeleteInv: 'Você realmente deseja excluir este inventário?',
askDeleteKey: 'Você realmente deseja excluir esta chave?',
askDeleteRepo: 'Você realmente deseja excluir este repositório?',
askDeleteProj: 'Você realmente deseja excluir este projeto?',
askDeleteTMem: 'Você realmente deseja excluir este membro da equipe?',
edit: 'Editar',
nnew: 'Novo',
keyFormSshKey: 'Chave SSH',
keyFormLoginPassword: 'Iniciar sessão com palavra-passe',
keyFormLoginPassword: 'Login com senha',
keyFormNone: 'Nenhum',
incorrectUrl: 'URL incorreto',
username: 'Nome de utilizador',
username_required: 'Nome de utilizador obrigatório',
dashboard: 'Painel de Controlo',
incorrectUrl: 'URL incorreta',
username: 'Nome de usuário',
username_required: 'Nome de usuário é obrigatório',
dashboard: 'Painel',
history: 'Histórico',
activity: 'Atividade',
settings: 'Definições',
signIn: 'Iniciar sessão',
password: 'Palavra-passe',
changePassword: 'Alterar palavra-passe',
editUser: 'Editar Utilizador',
settings: 'Configurações',
signIn: 'Entrar',
password: 'Senha',
changePassword: 'Alterar senha',
editUser: 'Editar Usuário',
newProject: 'Novo Projeto',
close: 'Fechar',
newProject2: 'Novo projeto...',
demoMode: 'MODO DE DEMONSTRAÇÃO',
demoMode: 'MODO DEMONSTRAÇÃO',
task: 'Tarefa #{expr}',
youCanRunAnyTasks: 'Pode executar qualquer tarefa',
youHaveReadonlyAccess: 'Tem acesso apenas de leitura',
taskTemplates: 'Modelos de Tarefas',
youCanRunAnyTasks: 'Você pode executar quaisquer tarefas',
youHaveReadonlyAccess: 'Você tem acesso somente leitura',
taskTemplates: 'Modelos de Tarefa',
inventory: 'Inventário',
environment: 'Ambiente',
keyStore: 'Armazenamento de Chaves',
repositories: 'Repositórios',
darkMode: 'Modo Escuro',
team: 'Equipa',
users: 'Utilizadores',
team: 'Equipe',
users: 'Usuários',
editAccount: 'Editar Conta',
signOut: 'Terminar sessão',
signOut: 'Sair',
error: 'Erro',
refreshPage: 'Atualizar Página',
relogin: 'Iniciar sessão novamente',
howToFixSigninIssues: 'Como corrigir problemas de início de sessão',
firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: 'Primeiro, precisa de acesso ao servidor onde o Semaphore está a correr.',
executeTheFollowingCommandOnTheServerToSeeExisting: 'Execute o seguinte comando no servidor para ver os utilizadores existentes:',
relogin: 'Reentrar',
howToFixSigninIssues: 'Como corrigir problemas de login',
firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: 'Primeiro, você precisa de acesso ao servidor onde o Semaphore está em execução.',
executeTheFollowingCommandOnTheServerToSeeExisting: 'Execute o seguinte comando no servidor para ver os usuários existentes:',
semaphoreUserList: 'semaphore user list',
youCanChangePasswordOfExistingUser: 'Pode alterar a palavra-passe do utilizador existente:',
youCanChangePasswordOfExistingUser: 'Você pode alterar a senha do usuário existente:',
semaphoreUserChangebyloginLoginUser123Password: 'semaphore user change-by-login --login user123 --password {makePasswordExample}',
orCreateNewAdminUser: 'Ou criar um novo utilizador administrador:',
orCreateNewAdminUser: 'Ou crie um novo usuário administrador:',
close2: 'Fechar',
semaphore: 'SEMAPHORE',
dontHaveAccountOrCantSignIn: 'Não tem uma conta ou não consegue iniciar sessão?',
password2: 'Palavra-passe',
semaphore: 'SEMAFORO',
dontHaveAccountOrCantSignIn: 'Não tem conta ou não consegue entrar?',
password2: 'Senha',
cancel: 'Cancelar',
noViews: 'Sem vistas',
addView: 'Adicionar vista',
noViews: 'Sem visualizações',
addView: 'Adicionar visualização',
editEnvironment: 'Editar Ambiente',
deleteEnvironment: 'Eliminar ambiente',
deleteEnvironment: 'Excluir ambiente',
environment2: 'Ambiente',
newEnvironment: 'Novo Ambiente',
environmentName: 'Nome do Ambiente',
extraVariables: 'Variáveis Extra',
enterExtraVariablesJson: 'Introduza JSON de variáveis extra...',
environmentVariables: 'Variáveis de Ambiente',
enterEnvJson: 'Introduza JSON de ambiente...',
environmentAndExtraVariablesMustBeValidJsonExample: 'O ambiente e as variáveis extra devem ser JSON válidos. Exemplo:',
dashboard2: 'Painel de Controlo',
ansibleSemaphore: 'Semaphore Ansible',
wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: 'Lamentamos, mas <%= htmlWebpackPlugin.options.title %> não funciona corretamente sem JavaScript ativado. Por favor, ative-o para continuar.',
deleteInventory: 'Eliminar inventário',
extraVariables: 'Variáveis extras',
enterExtraVariablesJson: 'Insira variáveis extras JSON...',
environmentVariables: 'Variáveis de ambiente',
enterEnvJson: 'Insira env JSON...',
environmentAndExtraVariablesMustBeValidJsonExample: 'O ambiente e as variáveis extras devem ser JSON válidos. Exemplo:',
dashboard2: 'Painel',
ansibleSemaphore: 'Interface do Semaphore',
wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: 'Lamentamos, mas <%= htmlWebpackPlugin.options.title %> não funciona corretamente sem JavaScript habilitado. Por favor, habilite-o para continuar.',
deleteInventory: 'Excluir inventário',
newInventory: 'Novo Inventário',
name: 'Nome',
userCredentials: 'Credenciais de Utilizador',
userCredentials: 'Credenciais do Usuário',
sudoCredentialsOptional: 'Credenciais Sudo (Opcional)',
type: 'Tipo',
pathToInventoryFile: 'Caminho para o ficheiro de Inventário',
enterInventory: 'Introduza o inventário...',
pathToInventoryFile: 'Caminho para o arquivo de Inventário',
enterInventory: 'Insira inventário...',
staticInventoryExample: 'Exemplo de inventário estático:',
staticYamlInventoryExample: 'Exemplo de inventário YAML estático:',
keyName: 'Nome da Chave',
loginOptional: 'Início de sessão (Opcional)',
usernameOptional: 'Nome de utilizador (Opcional)',
loginOptional: 'Login (Opcional)',
usernameOptional: 'Nome de usuário (Opcional)',
privateKey: 'Chave Privada',
override: 'Substituir',
useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: 'Utilize este tipo de chave para repositórios HTTPS e para playbooks que utilizem ligações não SSH.',
deleteKey: 'Eliminar chave',
useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: 'Use este tipo de chave para repositórios HTTPS e para playbooks que usam conexões não-SSH.',
deleteKey: 'Excluir chave',
newKey: 'Nova Chave',
create: 'Criar',
newTask: 'Nova Tarefa',
cantDeleteThe: 'Não é possível eliminar o {objectTitle}',
theCantBeDeletedBecauseItUsedByTheResourcesBelow: 'O {objectTitle} não pode ser eliminado porque está a ser utilizado pelos recursos abaixo',
cantDeleteThe: 'Não é possível excluir o {objectTitle}',
theCantBeDeletedBecauseItUsedByTheResourcesBelow: 'O {objectTitle} não pode ser excluído porque está sendo usado pelos recursos abaixo',
projectName: 'Nome do Projeto',
allowAlertsForThisProject: 'Permitir alertas para este projeto',
telegramChatIdOptional: 'ID de Chat do Telegram (Opcional)',
maxNumberOfParallelTasksOptional: 'Número Máximo de Tarefas Paralelas (Opcional)',
deleteRepository: 'Eliminar repositório',
telegramChatIdOptional: 'ID do Chat do Telegram (Opcional)',
maxNumberOfParallelTasksOptional: 'Número máximo de tarefas paralelas (Opcional)',
deleteRepository: 'Excluir repositório',
newRepository: 'Novo Repositório',
urlOrPath: 'URL ou caminho',
absPath: 'caminho abs.',
absPath: 'caminho absoluto',
branch: 'Ramo',
accessKey: 'Chave de Acesso',
credentialsToAccessToTheGitRepositoryItShouldBe: 'Credenciais para aceder ao repositório Git. Deve ser:',
ifYouUseGitOrSshUrl: 'se utilizar o URL Git ou SSH.',
ifYouUseHttpsOrFileUrl: 'se utilizar o URL HTTPS ou ficheiro.',
credentialsToAccessToTheGitRepositoryItShouldBe: 'Credenciais para acessar o repositório Git. Deve ser:',
ifYouUseGitOrSshUrl: 'se você usar URL Git ou SSH.',
ifYouUseHttpsOrFileUrl: 'se você usar URL HTTPS ou de arquivo.',
none: 'Nenhum',
ssh: 'SSH',
deleteProject: 'Eliminar projeto',
save: 'Guardar',
deleteProject2: 'Eliminar Projeto',
onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: 'Depois de eliminar um projeto, não há volta atrás. Por favor, tenha a certeza.',
deleteProject: 'Excluir projeto',
save: 'Salvar',
deleteProject2: 'Excluir Projeto',
onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: 'Uma vez que você exclui um projeto, não há como voltar. Por favor, tenha certeza.',
name2: 'Nome *',
title: 'Título *',
description: 'Descrição',
required: 'Obrigatório',
key: '{expr}',
surveyVariables: 'Variáveis de Inquérito',
surveyVariables: 'Variáveis de Pesquisa',
addVariable: 'Adicionar variável',
columns: 'Colunas',
buildVersion: 'Versão de Compilação',
buildVersion: 'Versão de Construção',
messageOptional: 'Mensagem (Opcional)',
debug: 'Depuração',
dryRun: 'Execução a seco',
debug: 'Depurar',
dryRun: 'Execução Simulada',
diff: 'Diferença',
advanced: 'Avançado',
hide: 'Ocultar',
pleaseAllowOverridingCliArgumentInTaskTemplateSett: 'Por favor, permita a substituição do argumento CLI nas definições do Modelo de Tarefa',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'Argumentos CLI (matriz JSON). Exemplo: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
pleaseAllowOverridingCliArgumentInTaskTemplateSett: 'Para permitir a substituição de argumento CLI nas configurações do Modelo de Tarefa',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'Argumentos CLI (array JSON). Exemplo: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
started: 'Iniciado',
author: 'Autor',
duration: 'Duração',
stop: 'Parar',
deleteTeamMember: 'Eliminar membro da equipa',
team2: 'Equipa',
newTeamMember: 'Novo Membro da Equipa',
user: 'Utilizador',
forceStop: 'Parar Forçadamente',
confirmTask: 'Confirmar',
deleteTeamMember: 'Excluir membro da equipe',
team2: 'Equipe',
newTeamMember: 'Novo Membro da Equipe',
user: 'Usuário',
administrator: 'Administrador',
definesStartVersionOfYourArtifactEachRunIncrements: 'Define a versão de início do seu artefacto. Cada execução incrementa a versão do artefacto.',
forMoreInformationAboutBuildingSeeThe: 'Para mais informações sobre a construção, consulte a',
definesStartVersionOfYourArtifactEachRunIncrements: 'Define a versão inicial do seu artefato. Cada execução incrementa a versão do artefato.',
forMoreInformationAboutBuildingSeeThe: 'Para mais informações sobre construção, veja o',
taskTemplateReference: 'Referência do Modelo de Tarefa',
definesWhatArtifactShouldBeDeployedWhenTheTaskRun: 'Define qual artefacto deve ser implementado quando a tarefa for executada.',
forMoreInformationAboutDeployingSeeThe: 'Para mais informações sobre a implementação, consulte a',
definesWhatArtifactShouldBeDeployedWhenTheTaskRun: 'Define qual artefato deve ser implantado quando a tarefa for executada.',
forMoreInformationAboutDeployingSeeThe: 'Para mais informações sobre implantação, veja o',
taskTemplateReference2: 'Referência do Modelo de Tarefa',
definesAutorunSchedule: 'Define o cronograma de autorun.',
forMoreInformationAboutCronSeeThe: 'Para mais informações sobre o cron, consulte a',
cronExpressionFormatReference: 'Referência do Formato de Expressão Cron',
startVersion: 'Versão de Início',
definesAutorunSchedule: 'Define o cronograma de execução automática.',
forMoreInformationAboutCronSeeThe: 'Para mais informações sobre cron, veja o',
cronExpressionFormatReference: 'Referência do formato de expressão cron',
startVersion: 'Versão Inicial',
example000: 'Exemplo: 0.0.0',
buildTemplate: 'Modelo de Compilação',
autorun: 'Autorun',
playbookFilename: 'Nome do Ficheiro de Playbook *',
buildTemplate: 'Modelo de Construção',
autorun: 'Execução Automática',
playbookFilename: 'Nome do Arquivo do Playbook *',
exampleSiteyml: 'Exemplo: site.yml',
inventory2: 'Inventário *',
repository: 'Repositório',
environment3: 'Ambiente *',
vaultPassword: 'Palavra-passe Vault',
vaultPassword2: 'Palavra-passe Vault',
view: 'Vista',
vaultPassword: 'Senha do Cofre',
vaultPassword2: 'Senha do Cofre',
view: 'Visualizar',
cron: 'Cron',
iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: 'Quero executar uma tarefa pelo cron apenas para novos commits de algum repositório',
repository2: 'Repositório',
cronChecksNewCommitBeforeRun: 'O cron verifica um novo commit antes da execução',
cronChecksNewCommitBeforeRun: 'O cron verifica novos commits antes de executar',
readThe: 'Leia o',
toLearnMoreAboutCron: 'para saber mais sobre o Cron.',
toLearnMoreAboutCron: 'para saber mais sobre Cron.',
suppressSuccessAlerts: 'Suprimir alertas de sucesso',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'Argumentos CLI (matriz JSON). Exemplo: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'Argumentos CLI (array JSON). Exemplo: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
allowCliArgsInTask: 'Permitir argumentos CLI na Tarefa',
docs: 'documentação',
editViews: 'Editar Vistas',
docs: 'documentos',
editViews: 'Editar Visualizações',
newTemplate: 'Novo modelo',
taskTemplates2: 'Modelos de Tarefas',
all: 'Tudo',
taskTemplates2: 'Modelos de Tarefa',
all: 'Todos',
notLaunched: 'Não lançado',
by: 'por {user_name}',
editTemplate: 'Editar Modelo',
newTemplate2: 'Novo Modelo',
deleteTemplate: 'Eliminar modelo',
deleteTemplate: 'Excluir modelo',
playbook: 'Playbook',
email: 'E-mail',
adminUser: 'Utilizador Administrador',
email: 'Email',
adminUser: 'Usuário administrador',
sendAlerts: 'Enviar alertas',
deleteUser: 'Eliminar utilizador',
newUser: 'Novo Utilizador',
deleteUser: 'Excluir usuário',
newUser: 'Novo Usuário',
re: 'Re{getActionButtonTitle}',
teamMember: '{expr} Membro da Equipa',
teamMember: '{expr} Membro da Equipe',
taskId: 'ID da Tarefa',
version: 'Versão',
status: 'Estado',
status: 'Status',
start: 'Iniciar',
actions: 'Ações',
alert: 'Alerta',
admin: 'Administrador',
admin: 'Admin',
role: 'Função',
external: 'Externo',
time: 'Hora',
time: 'Tempo',
path: 'Caminho',
gitUrl: 'URL Git',
gitUrl: 'URL do Git',
sshKey: 'Chave SSH',
lastTask: 'Última Tarefa',
// task2: 'Tarefa',
// build: 'Compilar',
// deploy: 'Implementar',
task2: 'Tarefa',
build: 'Construir',
deploy: 'Implantar',
run: 'Executar',
add: 'Adicionar',
password_required: 'Palavra-passe obrigatória',
name_required: 'Nome obrigatório',
user_credentials_required: 'Credenciais de utilizador obrigatórias',
type_required: 'Tipo obrigatório',
path_required: 'Caminho para o ficheiro de Inventário obrigatório',
private_key_required: 'Chave privada obrigatória',
project_name_required: 'Nome do projeto obrigatório',
repository_required: 'Repositório obrigatório',
branch_required: 'Ramo obrigatório',
key_required: 'Chave obrigatória',
user_required: 'Utilizador obrigatório',
build_version_required: 'Versão de compilação obrigatória',
title_required: 'Título obrigatório',
password_required: 'Senha é obrigatória',
name_required: 'Nome é obrigatório',
user_credentials_required: 'Credenciais do usuário são obrigatórias',
type_required: 'Tipo é obrigatório',
path_required: 'Caminho para o arquivo de Inventário é obrigatório',
private_key_required: 'Chave privada é obrigatória',
project_name_required: 'Nome do projeto é obrigatório',
repository_required: 'Repositório é obrigatório',
branch_required: 'Ramo é obrigatório',
key_required: 'Chave é obrigatória',
user_required: 'Usuário é obrigatório',
build_version_required: 'Versão de construção é obrigatória',
title_required: 'Título é obrigatório',
isRequired: 'é obrigatório',
mustBeInteger: 'Deve ser um número inteiro',
mustBe0OrGreater: 'Deve ser 0 ou superior',
start_version_required: 'Versão de início obrigatória',
playbook_filename_required: 'Nome do ficheiro de playbook obrigatório',
inventory_required: 'Inventário obrigatório',
environment_required: 'Ambiente obrigatório',
email_required: 'E-mail obrigatório',
build_template_required: 'Modelo de compilação obrigatório',
// Task: 'Tarefa',
// Build: 'Compilar',
// Deploy: 'Implementar',
mustBe0OrGreater: 'Deve ser 0 ou maior',
start_version_required: 'Versão inicial é obrigatória',
playbook_filename_required: 'Nome do arquivo do playbook é obrigatório',
inventory_required: 'Inventário é obrigatório',
environment_required: 'Ambiente é obrigatório',
email_required: 'Email é obrigatório',
build_template_required: 'Modelo de construção é obrigatório',
Task: 'Tarefa',
Build: 'Construir',
Deploy: 'Implantar',
Run: 'Executar',
CreateDemoProject: 'Criar Projeto de Demonstração',
LeaveProject: 'Sair do Projeto',
integration: 'Integração',
integrations: 'Integrações',
NewIntegration: 'Nova Integração',
EditIntegration: 'Editar Integração',
DeleteIntegration: 'Excluir Integração',
DeleteIntegrationMsg: 'Você tem certeza de que deseja excluir esta Integração?',
AddAlias: 'Adicionar Alias',
LoadAlias: 'Carregando aliases...',
runners: 'Executores',
newRunner: 'Novo Executor',
enabled: 'Habilitado',
scheduleNextRun: 'Próxima execução',
maxNumberOfParallelTasks: 'Número máximo de tarefas paralelas',
runnerUsage: 'Uso:',
runnerToken: 'Token:',
editRunner: 'Editar Executor',
};

View File

@ -1,8 +1,10 @@
export default {
backup: 'Cópia de segurança',
downloadTheProjectBackupFile: 'Baixe o arquivo de backup do projeto (em json)',
restoreProject: 'Restaurar...',
incorrectUsrPwd: 'Usuário ou senha incorretos',
'Check interval': 'Intervalo de verificação',
Schedule: 'Agendar',
backup: 'Backup',
downloadTheProjectBackupFile: 'Baixar o arquivo de backup do projeto (em json)',
restoreProject: 'Restaurar Projeto...',
incorrectUsrPwd: 'Login ou senha incorretos',
askDeleteUser: 'Você realmente deseja excluir este usuário?',
askDeleteTemp: 'Você realmente deseja excluir este modelo?',
askDeleteEnv: 'Você realmente deseja excluir este ambiente?',
@ -30,11 +32,11 @@ export default {
newProject: 'Novo Projeto',
close: 'Fechar',
newProject2: 'Novo projeto...',
demoMode: 'MODO DE DEMONSTRAÇÃO',
demoMode: 'MODO DEMONSTRAÇÃO',
task: 'Tarefa #{expr}',
youCanRunAnyTasks: 'Você pode executar qualquer tarefa',
youHaveReadonlyAccess: 'Você tem acesso somente leitura',
taskTemplates: 'Modelos de Tarefas',
taskTemplates: 'Modelos de Tarefa',
inventory: 'Inventário',
environment: 'Ambiente',
keyStore: 'Armazenamento de Chaves',
@ -46,75 +48,75 @@ export default {
signOut: 'Sair',
error: 'Erro',
refreshPage: 'Atualizar Página',
relogin: 'Refazer login',
relogin: 'Reentrar',
howToFixSigninIssues: 'Como corrigir problemas de login',
firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: 'Primeiramente, você precisa ter acesso ao servidor onde o Semaphore está em execução.',
firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: 'Primeiro, você precisa de acesso ao servidor onde o Semaphore está em execução.',
executeTheFollowingCommandOnTheServerToSeeExisting: 'Execute o seguinte comando no servidor para ver os usuários existentes:',
semaphoreUserList: 'semaphore lista de usuários',
youCanChangePasswordOfExistingUser: 'Você pode alterar a senha de um usuário existente:',
semaphoreUserChangebyloginLoginUser123Password: 'semaphore alterar-por-login --login usuário123 --senha {exemploDeSenha}',
orCreateNewAdminUser: 'Ou criar um novo usuário administrador:',
semaphoreUserList: 'lista de usuários semaphore',
youCanChangePasswordOfExistingUser: 'Você pode alterar a senha do usuário existente:',
semaphoreUserChangebyloginLoginUser123Password: 'semaphore user change-by-login --login user123 --password {makePasswordExample}',
orCreateNewAdminUser: 'Ou crie um novo usuário administrador:',
close2: 'Fechar',
semaphore: 'SEMAPHORE',
dontHaveAccountOrCantSignIn: 'Não tem uma conta ou não consegue fazer login?',
semaphore: 'SEMAFORO',
dontHaveAccountOrCantSignIn: 'Não tem conta ou não consegue entrar?',
password2: 'Senha',
cancel: 'Cancelar',
noViews: 'Nenhuma visualização',
noViews: 'Sem visualizações',
addView: 'Adicionar visualização',
editEnvironment: 'Editar Ambiente',
deleteEnvironment: 'Excluir ambiente',
environment2: 'Ambiente',
newEnvironment: 'Novo Ambiente',
environmentName: 'Nome do Ambiente',
extraVariables: 'Variáveis Extras',
enterExtraVariablesJson: 'Insira JSON de variáveis extras...',
environmentVariables: 'Variáveis de Ambiente',
enterEnvJson: 'Insira JSON de ambiente...',
extraVariables: 'Variáveis extras',
enterExtraVariablesJson: 'Insira variáveis extras em JSON...',
environmentVariables: 'Variáveis de ambiente',
enterEnvJson: 'Insira env JSON...',
environmentAndExtraVariablesMustBeValidJsonExample: 'O ambiente e as variáveis extras devem ser JSON válidos. Exemplo:',
dashboard2: 'Painel',
ansibleSemaphore: 'Semaphore UI',
wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: 'Pedimos desculpas, mas <%= htmlWebpackPlugin.options.title %> não funciona corretamente sem JavaScript habilitado. Por favor, habilite-o para continuar.',
ansibleSemaphore: 'Interface do Semaphore',
wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: 'Lamentamos, mas <%= htmlWebpackPlugin.options.title %> não funciona corretamente sem JavaScript habilitado. Por favor, habilite-o para continuar.',
deleteInventory: 'Excluir inventário',
newInventory: 'Novo Inventário',
name: 'Nome',
userCredentials: 'Credenciais de Usuário',
userCredentials: 'Credenciais do Usuário',
sudoCredentialsOptional: 'Credenciais Sudo (Opcional)',
type: 'Tipo',
pathToInventoryFile: 'Caminho para o arquivo de inventário',
enterInventory: 'Insira o inventário...',
pathToInventoryFile: 'Caminho para o arquivo de Inventário',
enterInventory: 'Insira inventário...',
staticInventoryExample: 'Exemplo de inventário estático:',
staticYamlInventoryExample: 'Exemplo de inventário YAML estático:',
keyName: 'Nome da Chave',
loginOptional: 'Login (Opcional)',
usernameOptional: 'Nome de usuário (Opcional)',
privateKey: 'Chave Privada',
override: 'Sobrepor',
useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: 'Use este tipo de chave para repositórios HTTPS e para playbooks que utilizam conexões não-SSH.',
override: 'Substituir',
useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: 'Use este tipo de chave para repositórios HTTPS e para playbooks que usam conexões não-SSH.',
deleteKey: 'Excluir chave',
newKey: 'Nova Chave',
create: 'Criar',
newTask: 'Nova Tarefa',
cantDeleteThe: 'Não é possível excluir o {objectTitle}',
theCantBeDeletedBecauseItUsedByTheResourcesBelow: 'O {objectTitle} não pode ser excluído porque é utilizado pelos recursos abaixo',
theCantBeDeletedBecauseItUsedByTheResourcesBelow: 'O {objectTitle} não pode ser excluído porque está sendo usado pelos recursos abaixo',
projectName: 'Nome do Projeto',
allowAlertsForThisProject: 'Permitir alertas para este projeto',
telegramChatIdOptional: 'ID do Chat do Telegram (Opcional)',
maxNumberOfParallelTasksOptional: 'Número máximo de tarefas em paralelo (Opcional)',
maxNumberOfParallelTasksOptional: 'Número máximo de tarefas paralelas (Opcional)',
deleteRepository: 'Excluir repositório',
newRepository: 'Novo Repositório',
urlOrPath: 'URL ou caminho',
absPath: 'caminho absoluto',
branch: 'Branch',
branch: 'Ramo',
accessKey: 'Chave de Acesso',
credentialsToAccessToTheGitRepositoryItShouldBe: 'Credenciais para acessar o repositório Git. Deve ser:',
ifYouUseGitOrSshUrl: 'se você usar Git ou URL SSH.',
ifYouUseHttpsOrFileUrl: 'se você usar URL HTTPS ou arquivo.',
ifYouUseGitOrSshUrl: 'se você usar URL Git ou SSH.',
ifYouUseHttpsOrFileUrl: 'se você usar URL HTTPS ou de arquivo.',
none: 'Nenhum',
ssh: 'SSH',
deleteProject: 'Excluir projeto',
save: 'Salvar',
deleteProject2: 'Excluir Projeto',
onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: 'Uma vez que você exclui um projeto, não há como voltar atrás. Esteja certo.',
onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: 'Uma vez que você exclui um projeto, não há como voltar. Por favor, tenha certeza.',
name2: 'Nome *',
title: 'Título *',
description: 'Descrição',
@ -123,59 +125,60 @@ export default {
surveyVariables: 'Variáveis de Pesquisa',
addVariable: 'Adicionar variável',
columns: 'Colunas',
buildVersion: 'Versão de Build',
buildVersion: 'Versão de Construção',
messageOptional: 'Mensagem (Opcional)',
debug: 'Debug',
debug: 'Depurar',
dryRun: 'Execução Simulada',
diff: 'Diferença',
advanced: 'Avançado',
hide: 'Ocultar',
pleaseAllowOverridingCliArgumentInTaskTemplateSett: 'Permita a substituição de argumentos CLI nas configurações do Modelo de Tarefa',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'Argumentos CLI (JSON array). Exemplo: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
pleaseAllowOverridingCliArgumentInTaskTemplateSett: 'Para permitir a substituição de argumento CLI nas configurações do Modelo de Tarefa',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'Argumentos CLI (array JSON). Exemplo: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
started: 'Iniciado',
author: 'Autor',
duration: 'Duração',
stop: 'Parar',
forceStop: 'Forçar Parada',
forceStop: 'Parar Forçadamente',
confirmTask: 'Confirmar',
deleteTeamMember: 'Excluir membro da equipe',
team2: 'Equipe',
newTeamMember: 'Novo Membro da Equipe',
user: 'Usuário',
administrator: 'Administrador',
definesStartVersionOfYourArtifactEachRunIncrements: 'Define a versão inicial de seu artefato. Cada execução incrementa a versão do artefato.',
forMoreInformationAboutBuildingSeeThe: 'Para obter mais informações sobre construção, consulte o',
taskTemplateReference: 'Referência de Modelo de Tarefa',
definesWhatArtifactShouldBeDeployedWhenTheTaskRun: 'Define qual artefato deve ser implantado quando a tarefa é executada.',
forMoreInformationAboutDeployingSeeThe: 'Para obter mais informações sobre implantação, consulte o',
taskTemplateReference2: 'Referência de Modelo de Tarefa',
definesAutorunSchedule: 'Define o cronograma de autorun.',
forMoreInformationAboutCronSeeThe: 'Para obter mais informações sobre cron, consulte a',
cronExpressionFormatReference: 'Referência de Formato de Expressão Cron',
definesStartVersionOfYourArtifactEachRunIncrements: 'Define a versão inicial do seu artefato. Cada execução incrementa a versão do artefato.',
forMoreInformationAboutBuildingSeeThe: 'Para mais informações sobre construção, veja o',
taskTemplateReference: 'Referência do Modelo de Tarefa',
definesWhatArtifactShouldBeDeployedWhenTheTaskRun: 'Define qual artefato deve ser implantado quando a tarefa for executada.',
forMoreInformationAboutDeployingSeeThe: 'Para mais informações sobre implantação, veja o',
taskTemplateReference2: 'Referência do Modelo de Tarefa',
definesAutorunSchedule: 'Define o cronograma de execução automática.',
forMoreInformationAboutCronSeeThe: 'Para mais informações sobre cron, veja o',
cronExpressionFormatReference: 'Referência do formato de expressão cron',
startVersion: 'Versão Inicial',
example000: 'Exemplo: 0.0.0',
buildTemplate: 'Modelo de Build',
autorun: 'Autorun',
playbookFilename: 'Nome do Playbook *',
buildTemplate: 'Modelo de Construção',
autorun: 'Execução Automática',
playbookFilename: 'Nome do Arquivo do Playbook *',
exampleSiteyml: 'Exemplo: site.yml',
inventory2: 'Inventário *',
repository: 'Repositório',
environment3: 'Ambiente *',
vaultPassword: 'Senha do Vault',
vaultPassword2: 'Senha do Vault',
view: 'Visualização',
vaultPassword: 'Senha do Cofre',
vaultPassword2: 'Senha do Cofre',
view: 'Visualizar',
cron: 'Cron',
iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: 'Eu quero executar uma tarefa no cron apenas para novos commits de algum repositório',
iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: 'Quero executar uma tarefa pelo cron apenas para novos commits de algum repositório',
repository2: 'Repositório',
cronChecksNewCommitBeforeRun: 'O cron verifica novos commits antes da execução',
cronChecksNewCommitBeforeRun: 'O cron verifica novos commits antes de executar',
readThe: 'Leia o',
toLearnMoreAboutCron: 'para saber mais sobre o Cron.',
toLearnMoreAboutCron: 'para saber mais sobre Cron.',
suppressSuccessAlerts: 'Suprimir alertas de sucesso',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'Argumentos CLI (JSON array). Exemplo: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
allowCliArgsInTask: 'Permitir Argumentos CLI na Tarefa',
docs: 'documentação',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'Argumentos CLI (array JSON). Exemplo: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
allowCliArgsInTask: 'Permitir argumentos CLI na Tarefa',
docs: 'documentos',
editViews: 'Editar Visualizações',
newTemplate: 'Novo Modelo',
taskTemplates2: 'Modelos de Tarefas',
newTemplate: 'Novo modelo',
taskTemplates2: 'Modelos de Tarefa',
all: 'Todos',
notLaunched: 'Não lançado',
by: 'por {user_name}',
@ -183,8 +186,8 @@ export default {
newTemplate2: 'Novo Modelo',
deleteTemplate: 'Excluir modelo',
playbook: 'Playbook',
email: 'E-mail',
adminUser: 'Usuário Administrador',
email: 'Email',
adminUser: 'Usuário administrador',
sendAlerts: 'Enviar alertas',
deleteUser: 'Excluir usuário',
newUser: 'Novo Usuário',
@ -196,7 +199,7 @@ export default {
start: 'Iniciar',
actions: 'Ações',
alert: 'Alerta',
admin: 'Administrador',
admin: 'Admin',
role: 'Função',
external: 'Externo',
time: 'Tempo',
@ -205,34 +208,52 @@ export default {
sshKey: 'Chave SSH',
lastTask: 'Última Tarefa',
task2: 'Tarefa',
build: 'Build',
deploy: 'Implantação',
run: 'Execução',
build: 'Construir',
deploy: 'Implantar',
run: 'Executar',
add: 'Adicionar',
password_required: 'Senha é obrigatória',
name_required: 'Nome é obrigatório',
user_credentials_required: 'Credenciais de usuário são obrigatórias',
user_credentials_required: 'Credenciais do usuário são obrigatórias',
type_required: 'Tipo é obrigatório',
path_required: 'Caminho para arquivo de inventário é obrigatório',
path_required: 'Caminho para o arquivo de Inventário é obrigatório',
private_key_required: 'Chave privada é obrigatória',
project_name_required: 'Nome do projeto é obrigatório',
repository_required: 'Repositório é obrigatório',
branch_required: 'Branch é obrigatório',
branch_required: 'Ramo é obrigatório',
key_required: 'Chave é obrigatória',
user_required: 'Usuário é obrigatório',
build_version_required: 'Versão de build é obrigatória',
build_version_required: 'Versão de construção é obrigatória',
title_required: 'Título é obrigatório',
isRequired: 'é obrigatório',
mustBeInteger: 'Deve ser um número inteiro',
mustBe0OrGreater: 'Deve ser 0 ou maior',
start_version_required: 'Versão inicial é obrigatória',
playbook_filename_required: 'Nome do playbook é obrigatório',
playbook_filename_required: 'Nome do arquivo do playbook é obrigatório',
inventory_required: 'Inventário é obrigatório',
environment_required: 'Ambiente é obrigatório',
email_required: 'E-mail é obrigatório',
build_template_required: 'Modelo de build é obrigatório',
email_required: 'Email é obrigatório',
build_template_required: 'Modelo de construção é obrigatório',
Task: 'Tarefa',
Build: 'Build',
Deploy: 'Implantação',
Run: 'Execução',
Build: 'Construir',
Deploy: 'Implantar',
Run: 'Executar',
CreateDemoProject: 'Criar Projeto de Demonstração',
LeaveProject: 'Sair do Projeto',
integration: 'Integração',
integrations: 'Integrações',
NewIntegration: 'Nova Integração',
EditIntegration: 'Editar Integração',
DeleteIntegration: 'Excluir Integração',
DeleteIntegrationMsg: 'Você tem certeza de que deseja excluir esta Integração?',
AddAlias: 'Adicionar Alias',
LoadAlias: 'Carregando aliases...',
runners: 'Executores',
newRunner: 'Novo Executor',
enabled: 'Habilitado',
scheduleNextRun: 'Próxima execução',
maxNumberOfParallelTasks: 'Número máximo de tarefas paralelas',
runnerUsage: 'Uso:',
runnerToken: 'Token:',
editRunner: 'Editar Executor',
};

View File

@ -1,201 +1,205 @@
export default {
backup: 'Бэкап',
downloadTheProjectBackupFile: 'Выгрузить файл резервной копии проекта (в формате JSON)',
restoreProject: 'Восстановить...',
incorrectUsrPwd: 'Некорректный логин или пароль',
'Check interval': 'Интервал проверки',
Schedule: 'Расписание',
backup: 'Резервное копирование',
downloadTheProjectBackupFile: 'Скачать файл резервной копии проекта (в формате json)',
restoreProject: 'Восстановить проект...',
incorrectUsrPwd: 'Неверный логин или пароль',
askDeleteUser: 'Вы действительно хотите удалить этого пользователя?',
askDeleteTemp: 'Вы действительно хотите удалить этот шаблон?',
askDeleteEnv: 'Вы действительно хотите удалить это окружение?',
askDeleteEnv: 'Вы действительно хотите удалить эту среду?',
askDeleteInv: 'Вы действительно хотите удалить этот инвентарь?',
askDeleteKey: 'Вы действительно хотите удалить этот ключ?',
askDeleteRepo: 'Вы действительно хотите удалить этот репозиторий?',
askDeleteProj: 'Вы действительно хотите удалить этот проект?',
askDeleteTMem: 'Вы действительно хотите удалить этого участника команды?',
edit: 'Изменить',
edit: 'Редактировать',
nnew: 'Новый',
keyFormSshKey: 'SSH ключ',
keyFormLoginPassword: 'Логин с паролем',
keyFormNone: 'Ничего',
incorrectUrl: 'Некорректный URL',
keyFormNone: 'Нет',
incorrectUrl: 'Неверный URL',
username: 'Имя пользователя',
username_required: 'Имя пользователя обязательно',
dashboard: 'Панель',
dashboard: 'Панель управления',
history: 'История',
activity: 'Активность',
settings: 'Настройки',
signIn: 'Войти',
password: 'Пароль',
changePassword: 'Изменить пароль',
editUser: 'Изменить пользователя',
changePassword: 'Сменить пароль',
editUser: 'Редактировать пользователя',
newProject: 'Новый проект',
close: 'Закрыть',
newProject2: 'Новый проект...',
demoMode: 'Демо режим',
demoMode: 'РЕЖИМ ДЕМО',
task: 'Задача #{expr}',
youCanRunAnyTasks: 'Вы можете запускать любые задачи',
youHaveReadonlyAccess: 'Вы имеете доступ "только для чтения"',
youHaveReadonlyAccess: 'У вас доступ только для чтения',
taskTemplates: 'Шаблоны задач',
inventory: 'Инвентарь',
environment: 'Окружение',
environment: 'Переменные окружения',
keyStore: 'Хранилище ключей',
repositories: 'Репозитории',
darkMode: 'Тёмная тема',
darkMode: 'Темный режим',
team: 'Команда',
users: 'Пользователи',
editAccount: 'Изменить учётную запись',
editAccount: 'Редактировать аккаунт',
signOut: 'Выйти',
error: 'Ошибка',
refreshPage: 'Обновить страницу',
relogin: ерезайти',
howToFixSigninIssues: 'Как устранить проблемы со входом в систему',
firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: 'Во-первых, необходим доступ к серверу, на котором работает Semaphore.',
relogin: овторный вход',
howToFixSigninIssues: 'Как исправить проблемы с входом',
firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: 'Во-первых, вам нужен доступ к серверу, на котором работает Semaphore.',
executeTheFollowingCommandOnTheServerToSeeExisting: 'Выполните следующую команду на сервере, чтобы увидеть существующих пользователей:',
semaphoreUserList: 'Список пользователей semaphore',
semaphoreUserList: 'semaphore user list',
youCanChangePasswordOfExistingUser: 'Вы можете изменить пароль существующего пользователя:',
semaphoreUserChangebyloginLoginUser123Password: 'semaphore user change-by-login --login user123 --password {makePasswordExample}',
orCreateNewAdminUser: 'Или создать нового пользователя с поными правами:',
orCreateNewAdminUser: 'Или создайте нового администратора:',
close2: 'Закрыть',
semaphore: 'Семафор',
dontHaveAccountOrCantSignIn: 'Нет учётной записи или не можете войти?',
semaphore: 'СЕМАФОР',
dontHaveAccountOrCantSignIn: 'Нет аккаунта или не можете войти?',
password2: 'Пароль',
cancel: 'Закрыть',
noViews: 'Нет видов',
addView: 'Добавить вид',
editEnvironment: 'Изменить окружение',
cancel: 'Отмена',
noViews: 'Нет представлений',
addView: 'Добавить представление',
editEnvironment: 'Редактировать переменные окружкния',
deleteEnvironment: 'Удалить окружение',
environment2: 'Окружение',
environment2: 'Переменные окружения',
newEnvironment: 'Новое окружение',
environmentName: 'Имя окружения',
extraVariables: 'Дополнительные переменные',
enterExtraVariablesJson: 'Ввести дополнительные переменные в формате JSON...',
enterExtraVariablesJson: 'Введите дополнительные переменные в формате JSON...',
environmentVariables: 'Переменные окружения',
enterEnvJson: 'Введите переменную окружения в формате JSON...',
environmentAndExtraVariablesMustBeValidJsonExample: 'Окружениеи дополнительные переменные должны быть корректным JSON. Например:',
dashboard2: 'Панель',
ansibleSemaphore: 'Ансибл Семафор',
wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: 'Извините, но <%= htmlWebpackPlugin.options.title %> не работает без включенного JavaScript. Пожалуйста включите, чтобы продолжить',
enterEnvJson: 'Введите env JSON...',
environmentAndExtraVariablesMustBeValidJsonExample: 'Переменные среды и дополнительные переменные должны быть действительным JSON. Пример:',
dashboard2: 'Панель управления',
ansibleSemaphore: 'Semaphore UI',
wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: 'Извините, но <%= htmlWebpackPlugin.options.title %> не работает должным образом без включенного JavaScript. Пожалуйста, включите его, чтобы продолжить.',
deleteInventory: 'Удалить инвентарь',
newInventory: 'Новый инвентарь',
name: 'Имя',
userCredentials: 'Учётные данные пользователя',
sudoCredentialsOptional: 'Повышенные учётные данные (дополнительно)',
userCredentials: 'Учетные данные пользователя',
sudoCredentialsOptional: 'Учетные данные sudo (необязательно)',
type: 'Тип',
pathToInventoryFile: 'Путь до файла инвентаря',
pathToInventoryFile: 'Путь к файлу инвентаря',
enterInventory: 'Введите инвентарь...',
staticInventoryExample: 'Пример статичного инвентаря:',
staticYamlInventoryExample: 'Пример статичного инвентаря в YAML:',
staticInventoryExample: 'Пример статического инвентаря:',
staticYamlInventoryExample: 'Пример статического YAML инвентаря:',
keyName: 'Имя ключа',
loginOptional: 'Логин (дополнительно)',
usernameOptional: 'Имя пользователя (дополнительно)',
loginOptional: 'Логин (необязательно)',
usernameOptional: 'Имя пользователя (необязательно)',
privateKey: 'Закрытый ключ',
override: 'Переопределить',
useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: 'Используйте этот тип ключа для HTTPS-репозиториев и для плейбуков, использующих не-SSH-соединения.',
useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: 'Используйте этот тип ключа для HTTPS репозиториев и для плейбуков, которые используют не SSH соединения.',
deleteKey: 'Удалить ключ',
newKey: 'Новый ключ',
create: 'Создать',
newTask: 'Новая задача',
cantDeleteThe: 'Невозможно удалить {objectTitle}',
theCantBeDeletedBecauseItUsedByTheResourcesBelow: '{objectTitle} нельзя удалить, так как он используется следующими ресурсами',
theCantBeDeletedBecauseItUsedByTheResourcesBelow: '{objectTitle} не может быть удален, так как он используется ресурсами ниже',
projectName: 'Имя проекта',
allowAlertsForThisProject: 'Разрешить оповещения для этого проекта',
telegramChatIdOptional: 'Идентификатор чата Телеграм (дополнительно)',
maxNumberOfParallelTasksOptional: 'Максимальное число параллельных задач (дополнительно)',
telegramChatIdOptional: 'Telegram Chat ID (необязательно)',
maxNumberOfParallelTasksOptional: 'Максимальное количество параллельных задач (необязательно)',
deleteRepository: 'Удалить репозиторий',
newRepository: 'Новый репозиторий',
urlOrPath: 'URL или путь',
absPath: 'abs. path',
absPath: 'абс. путь',
branch: 'Ветка',
accessKey: 'Ключ доступа',
credentialsToAccessToTheGitRepositoryItShouldBe: 'Учетные данные для доступа к репозиториям Git. Должен быть:',
credentialsToAccessToTheGitRepositoryItShouldBe: 'Учетные данные для доступа к Git репозиторию. Это должно быть:',
ifYouUseGitOrSshUrl: 'если вы используете Git или SSH URL.',
ifYouUseHttpsOrFileUrl: 'если вы используете HTTPS или file URL.',
none: 'Ничего',
none: 'Нет',
ssh: 'SSH',
deleteProject: 'Удалить проект',
save: 'Сохранить',
deleteProject2: 'Удалить проект',
onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: 'Как только вы удалите проект, вернуть его будет невозможно. Пожалуйста, будьте осторожны.',
onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: 'После удаления проекта возврата нет. Пожалуйста, будьте уверены.',
name2: 'Имя *',
title: 'Заголовок *',
title: 'Название *',
description: 'Описание',
required: 'Необходимый',
required: 'Обязательно',
key: '{expr}',
surveyVariables: 'Опрос переменных',
surveyVariables: 'Переменные опроса',
addVariable: 'Добавить переменную',
columns: 'Столбцы',
buildVersion: 'Версия сборки',
messageOptional: 'Сообщение (дополнительно)',
messageOptional: 'Сообщение (необязательно)',
debug: 'Отладка',
dryRun: 'Пробный запуск',
diff: 'Разница',
advanced: 'Расширенный',
hide: 'Спрятать',
pleaseAllowOverridingCliArgumentInTaskTemplateSett: 'Пожалуйста, разрешите переопределение аргумента CLI в настройках шаблона задачи',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'Аргументы CLI (массив JSON). Например: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
started: 'Начал',
diff: 'Различия',
advanced: 'Расширенные',
hide: 'Скрыть',
pleaseAllowOverridingCliArgumentInTaskTemplateSett: 'Чтобы разрешить переопределение аргумента CLI в настройках шаблона задачи',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'CLI Args (JSON массив). Пример: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
started: 'Запущено',
author: 'Автор',
duration: 'Продолжительность',
stop: 'Стоп',
deleteTeamMember: 'Удалить члена команды',
stop: 'Остановить',
forceStop: 'Принудительная остановка',
confirmTask: 'Подтвердить',
deleteTeamMember: 'Удалить участника команды',
team2: 'Команда',
newTeamMember: 'Новый член команды',
newTeamMember: 'Новый участник команды',
user: 'Пользователь',
administrator: 'Администратор',
definesStartVersionOfYourArtifactEachRunIncrements: 'Определяет начальную версию вашего артефакта. Каждый запуск увеличивает версию артефакта.',
forMoreInformationAboutBuildingSeeThe: ополнительную информацию о построении смотрите',
taskTemplateReference: 'Справочник по шаблону задачи',
definesWhatArtifactShouldBeDeployedWhenTheTaskRun: 'Определяет, какой артефакт должен быть развернут при запуске задачи.',
forMoreInformationAboutDeployingSeeThe: ополнительные сведения о развертывании смотрите',
taskTemplateReference2: 'Справочник по шаблону задачи',
definesStartVersionOfYourArtifactEachRunIncrements: 'Определяет начальную версию вашего артефакта. Каждое выполнение увеличивает версию артефакта.',
forMoreInformationAboutBuildingSeeThe: ля получения дополнительной информации о сборке смотрите',
taskTemplateReference: 'Справка по шаблону задачи',
definesWhatArtifactShouldBeDeployedWhenTheTaskRun: 'Определяет, какой артефакт должен быть развернут при выполнении задачи.',
forMoreInformationAboutDeployingSeeThe: ля получения дополнительной информации о развертывании смотрите',
taskTemplateReference2: 'Справка по шаблону задачи',
definesAutorunSchedule: 'Определяет расписание автозапуска.',
forMoreInformationAboutCronSeeThe: ополнительные сведения о Крон см.',
cronExpressionFormatReference: 'Документация по формату выражений Крон',
forMoreInformationAboutCronSeeThe: ля получения дополнительной информации о cron смотрите',
cronExpressionFormatReference: 'Справка по формату выражений cron',
startVersion: 'Начальная версия',
example000: 'Например: 0.0.0',
example000: 'Пример: 0.0.0',
buildTemplate: 'Шаблон сборки',
autorun: 'Автозапуск',
playbookFilename: 'Имя файла плейбука *',
exampleSiteyml: 'Например: site.yml',
exampleSiteyml: 'Пример: site.yml',
inventory2: 'Инвентарь *',
repository: 'Репозиторий',
environment3: 'Окружение *',
vaultPassword: 'Vault пароль',
vaultPassword2: 'Vault пароль',
view: 'Вид',
cron: 'Крон',
iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: 'Я хочу запускать задачу по Крону только для новых коммитов некоторых репозиториев',
environment3: 'Среда *',
vaultPassword: 'Пароль хранилища',
vaultPassword2: 'Пароль хранилища',
view: 'Просмотр',
cron: 'Cron',
iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: 'Я хочу запускать задачу по cron только для новых коммитов некоторого репозитория',
repository2: 'Репозиторий',
cronChecksNewCommitBeforeRun: 'Проверять через Крон новые коммиты до запуска',
cronChecksNewCommitBeforeRun: 'Cron проверяет новый коммит перед запуском',
readThe: 'Читать',
toLearnMoreAboutCron: 'чтобы узнать больше о Крон.',
suppressSuccessAlerts: 'Скрыть оповещения об успехе',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'Аргументы CLI (массив JSON). Например: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
allowCliArgsInTask: 'Разрешить рагументы CLI в задаче',
docs: 'Документация',
editViews: 'Изменить вид',
toLearnMoreAboutCron: 'чтобы узнать больше о Cron.',
suppressSuccessAlerts: 'Подавить успешные оповещения',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'CLI Args (JSON массив). Пример: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
allowCliArgsInTask: 'Разрешить аргументы CLI в задаче',
docs: 'документация',
editViews: 'Редактировать представления',
newTemplate: 'Новый шаблон',
taskTemplates2: 'Шаблоны задач',
all: 'Все',
notLaunched: 'Не запущен',
by: 'к {user_name}',
editTemplate: 'Изменить шаблон',
notLaunched: 'Не запущено',
by: 'от {user_name}',
editTemplate: 'Редактировать шаблон',
newTemplate2: 'Новый шаблон',
deleteTemplate: 'Удалить шаблон',
playbook: 'Плейбук',
email: 'Почта',
email: 'Электронная почта',
adminUser: 'Администратор',
sendAlerts: 'Отправить оповещение',
sendAlerts: 'Отправить оповещения',
deleteUser: 'Удалить пользователя',
newUser: 'Новый пользователь',
re: 'Пере{getActionButtonTitle}',
teamMember: '{expr} Team Member',
taskId: 'Номер задачи',
re: 'Re{getActionButtonTitle}',
teamMember: '{expr} Участник команды',
taskId: 'ID задачи',
version: 'Версия',
status: 'Статус',
start: 'Начать',
actions: 'Действия',
alert: 'Оповещение',
admin: 'Администратор',
admin: 'Админ',
role: 'Роль',
external: 'Внешний',
time: 'Время',
@ -203,36 +207,53 @@ export default {
gitUrl: 'Git URL',
sshKey: 'SSH ключ',
lastTask: 'Последняя задача',
// task2: 'Задача',
// build: 'Сборка',
// deploy: 'Развертывать',
task2: 'Задача',
build: 'Сборка',
deploy: 'Развертывание',
run: 'Запуск',
add: 'Добавить',
password_required: 'Требуется пароль',
name_required: 'Требуется имя',
user_credentials_required: 'Требуются учетные данные пользователя',
type_required: 'Требуется тип',
path_required: 'Требуется путь до файла инвенторя',
private_key_required: 'Требуется приватный ключ',
project_name_required: 'Требуется имя проекта',
репозиторий_required: 'Требуется репозиторий',
branch_required: 'Требуется ветка',
key_required: 'Требуется ключ',
user_required: 'Требуется пользователь',
build_version_required: 'Требуется номер сборки',
title_required: 'Требуется заголовок',
isRequired: 'требуется',
password_required: 'Пароль обязателен',
name_required: 'Имя обязательно',
user_credentials_required: 'Учетные данные пользователя обязательны',
type_required: 'Тип обязателен',
path_required: 'Путь к файлу инвентаря обязателен',
private_key_required: 'Закрытый ключ обязателен',
project_name_required: 'Имя проекта обязательно',
repository_required: 'Репозиторий обязателен',
branch_required: 'Ветка обязательна',
key_required: 'Ключ обязателен',
user_required: 'Пользователь обязателен',
build_version_required: 'Версия сборки обязательна',
title_required: 'Название обязательно',
isRequired: 'обязательно',
mustBeInteger: 'Должно быть целым числом',
mustBe0OrGreater: 'Должно быть 0 или больше',
start_version_required: 'Требуется стартовая версия',
playbook_filename_required: 'Требуется имя файла плейбука',
inventory_required: 'Требуется инвентарь',
environment_required: 'Требуется окружение',
email_required: 'Требуется почта',
build_template_required: 'Требуется шаблон сборки',
// Task: 'Задача',
// Build: 'Сборка',
// Deploy: 'Развертывать',
start_version_required: 'Начальная версия обязательна',
playbook_filename_required: 'Имя файла плейбука обязательно',
inventory_required: 'Инвентарь обязателен',
environment_required: 'Среда обязательна',
email_required: 'Электронная почта обязательна',
build_template_required: 'Шаблон сборки обязателен',
Task: 'Задача',
Build: 'Сборка',
Deploy: 'Развертывание',
Run: 'Запуск',
CreateDemoProject: 'Создать демонстрационный проект',
LeaveProject: 'Покинуть проект',
integration: 'Интеграция',
integrations: 'Интеграции',
NewIntegration: 'Новая интеграция',
EditIntegration: 'Редактировать интеграцию',
DeleteIntegration: 'Удалить интеграцию',
DeleteIntegrationMsg: 'Вы уверены, что хотите удалить эту интеграцию?',
AddAlias: 'Добавить псевдоним',
LoadAlias: 'Загрузка псевдонимов...',
runners: 'Ранеры',
newRunner: 'Новый ранер',
enabled: 'Включено',
scheduleNextRun: 'Следующий запуск',
maxNumberOfParallelTasks: 'Максимальное количество параллельных задач',
runnerUsage: 'Использование:',
runnerToken: 'Токен:',
editRunner: 'Редактировать исполнителя',
};

View File

@ -1,250 +1,259 @@
export default {
'Check interval': '检查间隔',
Schedule: '计划',
backup: '备份',
downloadTheProjectBackupFile: '下载项目备份文件json格式',
restoreProject: '恢复...',
incorrectUsrPwd: '用户名或密码错误',
askDeleteUser: '您确定要删除此用户吗?',
askDeleteTemp: '您确实要删除此模板吗?',
askDeleteEnv: '您确实要删除此环境吗?',
askDeleteInv: '您确实要删除此主机配置吗?',
askDeleteKey: '您确定要删除此密钥吗?',
askDeleteRepo: '您确定要删除此存储库吗?',
askDeleteProj: '您确定要删除此项目吗?',
askDeleteTMem: '您确定要删除此团队成员吗?',
restoreProject: '恢复项目...',
incorrectUsrPwd: '用户名或密码不正确',
askDeleteUser: '您真的想删除这个用户吗?',
askDeleteTemp: '您真的想删除这个模板吗?',
askDeleteEnv: '您真的想删除这个环境吗?',
askDeleteInv: '您真的想删除这个库存吗?',
askDeleteKey: '您真的想删除这个密钥吗?',
askDeleteRepo: '您真的想删除这个仓库吗?',
askDeleteProj: '您真的想删除这个项目吗?',
askDeleteTMem: '您真的想删除这个团队成员吗?',
edit: '编辑',
nnew: '新建',
keyFormSshKey: 'SSH 密钥',
keyFormLoginPassword: '使用密码登录',
keyFormNone: '无',
incorrectUrl: 'URL地址不正确',
incorrectUrl: '不正确的 URL',
username: '用户名',
username_required: '未填写用户名',
dashboard: '控制台',
username_required: '用户名是必需的',
dashboard: '仪表板',
history: '历史',
activity: '活动',
settings: '设置',
signIn: '登录',
password: '密码',
changePassword: '更改密码',
editUser: '编用户',
newProject: '新项目',
editUser: '编用户',
newProject: '新项目',
close: '关闭',
newProject2: '新项目...',
demoMode: 'DEMO MODE',
newProject2: '新项目...',
demoMode: '演示模式',
task: '任务 #{expr}',
youCanRunAnyTasks: '您可以运行任何任务',
youHaveReadonlyAccess: '您有只读访问权限',
youHaveReadonlyAccess: '您有只读访问权限',
taskTemplates: '任务模板',
inventory: '主机配置',
inventory: '库存',
environment: '环境',
keyStore: '密钥',
repositories: '存储库',
darkMode: '模式',
keyStore: '密钥存储',
repositories: '库',
darkMode: '暗模式',
team: '团队',
users: '用户',
editAccount: '账户编辑',
signOut: '注销',
editAccount: '编辑账户',
signOut: '登出',
error: '错误',
refreshPage: '刷新页面',
relogin: '重新登录',
howToFixSigninIssues: '如何解决登录问题',
firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: '首先,您需要登录运行 Semaphore 的服务器。',
executeTheFollowingCommandOnTheServerToSeeExisting: '在服务器上执行以下命令查看现有用户:',
semaphoreUserList: 'semaphore user list',
firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: '首先,您需要访问运行 Semaphore 的服务器。',
executeTheFollowingCommandOnTheServerToSeeExisting: '在服务器上执行以下命令查看现有用户:',
semaphoreUserList: 'semaphore 用户列表',
youCanChangePasswordOfExistingUser: '您可以更改现有用户的密码:',
semaphoreUserChangebyloginLoginUser123Password: 'semaphore user change-by-login --login user123 --password {makePasswordExample}',
orCreateNewAdminUser: '或创建新管理员用户:',
semaphoreUserChangebyloginLoginUser123Password: 'semaphore 用户更改 - 登录 --login user123 --password {makePasswordExample}',
orCreateNewAdminUser: '或创建新管理员用户:',
close2: '关闭',
semaphore: 'SEMAPHORE',
dontHaveAccountOrCantSignIn: '没有户或无法登录?',
semaphore: '信号灯',
dontHaveAccountOrCantSignIn: '没有户或无法登录?',
password2: '密码',
cancel: '关闭',
noViews: '没有分组视图',
addView: '新增分组视图',
cancel: '取消',
noViews: '没有视图',
addView: '添加视图',
editEnvironment: '编辑环境',
deleteEnvironment: '删除环境',
environment2: '环境',
newEnvironment: '新环境',
newEnvironment: '新环境',
environmentName: '环境名称',
extraVariables: '扩展变量',
enterExtraVariablesJson: '添加额外的Json格式变量...',
extraVariables: '额外变量',
enterExtraVariablesJson: '输入额外变量 JSON...',
environmentVariables: '环境变量',
enterEnvJson: '添加额外的Json格式环境变量...',
environmentAndExtraVariablesMustBeValidJsonExample: '环境变量和额外变量必须是有效的 JSON。例',
dashboard2: '控制台',
ansibleSemaphore: 'Semaphore UI',
wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: '抱歉,如果未启用 JavaScript<%= htmlWebpackPlugin.options.title %> 将无法正常工作。请启用它以继续。',
deleteInventory: '删除主机配置',
newInventory: '新增主机配置',
enterEnvJson: '输入环境 JSON...',
environmentAndExtraVariablesMustBeValidJsonExample: '环境和额外变量必须是有效的 JSON。例:',
dashboard2: '仪表板',
ansibleSemaphore: '信号灯 UI',
wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: '我们很抱歉,但 <%= htmlWebpackPlugin.options.title %> 在没有启用 JavaScript 的情况下无法正常工作。请启用它以继续。',
deleteInventory: '删除库存',
newInventory: '新库存',
name: '名称',
userCredentials: '用户凭据',
sudoCredentialsOptional: 'Sudo 凭据(可选)',
type: '类型',
pathToInventoryFile: '主机配置文件路径',
enterInventory: '编辑主机配置...',
staticInventoryExample: '静态主机配置示例:',
staticYamlInventoryExample: '静态 YAML 格式主机配置示例:',
keyName: '凭据名称',
loginOptional: '登录名 (可选)',
usernameOptional: '用户名 (可选)',
pathToInventoryFile: '库存文件路径',
enterInventory: '输入库存...',
staticInventoryExample: '静态库存示例:',
staticYamlInventoryExample: '静态 YAML 库存示例:',
keyName: '密钥名称',
loginOptional: '登录(可选)',
usernameOptional: '用户名(可选)',
privateKey: '私钥',
override: '覆盖',
useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: '对于 HTTPS 存储库和使用非 SSH 连接的 playbook请使用此类密钥。',
deleteKey: '删除凭据',
newKey: '新增凭据',
useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: '使用此类型的密钥用于 HTTPS 仓库和使用非 SSH 连接的剧本。',
deleteKey: '删除密钥',
newKey: '新密钥',
create: '创建',
newTask: '创建任务',
newTask: '任务',
cantDeleteThe: '无法删除 {objectTitle}',
theCantBeDeletedBecauseItUsedByTheResourcesBelow: '无法删除 {objectTitle},因为它已被如下资源使用',
theCantBeDeletedBecauseItUsedByTheResourcesBelow: '{objectTitle} 无法删除,因为它被以下资源使用',
projectName: '项目名称',
allowAlertsForThisProject: '在此项目开启通知',
telegramChatIdOptional: 'Telegram Chat ID (可选)',
maxNumberOfParallelTasksOptional: '最大并行任务数 (可选)',
deleteRepository: '删除存储库',
newRepository: '新增存储库',
allowAlertsForThisProject: '允许此项目的警报',
telegramChatIdOptional: 'Telegram 聊天 ID可选',
maxNumberOfParallelTasksOptional: '最大并行任务数(可选)',
deleteRepository: '删除库',
newRepository: '新库',
urlOrPath: 'URL 或路径',
absPath: 'abs. path',
absPath: '绝对路径',
branch: '分支',
accessKey: '访问凭证',
credentialsToAccessToTheGitRepositoryItShouldBe: '访问 Git 存储库的凭据。它应该是:',
ifYouUseGitOrSshUrl: '如果您使用 Git 或 SSH URL.',
ifYouUseHttpsOrFileUrl: '如果您使用 HTTPS 或文件 URL.',
none: 'None',
accessKey: '访问密钥',
credentialsToAccessToTheGitRepositoryItShouldBe: '访问 Git 仓库的凭据。它应该是:',
ifYouUseGitOrSshUrl: '如果您使用 Git 或 SSH URL',
ifYouUseHttpsOrFileUrl: '如果您使用 HTTPS 或文件 URL',
none: '',
ssh: 'SSH',
deleteProject: '删除项目',
save: '保存',
deleteProject2: '删除项目',
onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: '一旦删除项目,就无法恢复!!!',
onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: '一旦您删除项目,就无法恢复。请确认。',
name2: '名称 *',
title: '标题 *',
description: '说明',
description: '描述',
required: '必需',
key: '{expr}',
surveyVariables: '列出变量',
surveyVariables: '调查变量',
addVariable: '添加变量',
columns: '列',
buildVersion: '编译版本',
messageOptional: '说明 (可选)',
debug: '调试模式',
dryRun: 'Dry Run',
diff: '显示差异',
advanced: '高级选项',
buildVersion: '构建版本',
messageOptional: '消息(可选)',
debug: '调试',
dryRun: '干运行',
diff: '差异',
advanced: '高级',
hide: '隐藏',
pleaseAllowOverridingCliArgumentInTaskTemplateSett: '请在设置中开启 “允许在任务中自定义 CLI 参数”',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'CLI 测试 (JSON 数组). 例如: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
started: '已启动',
author: '关联用户',
duration: '说明',
pleaseAllowOverridingCliArgumentInTaskTemplateSett: '允许在任务模板设置中覆盖 CLI 参数',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'CLI 参数JSON 数组)。示例:[ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
started: '已开始',
author: '作者',
duration: '持续时间',
stop: '停止',
forceStop: '强制删除',
forceStop: '强制停止',
confirmTask: '确认',
deleteTeamMember: '删除团队成员',
team2: '团队',
newTeamMember: '新团队成员',
newTeamMember: '新团队成员',
user: '用户',
administrator: '管理员',
definesStartVersionOfYourArtifactEachRunIncrements: '定义起始版本,每次运行都会增加版本。',
forMoreInformationAboutBuildingSeeThe: '有关构建的更多信息,请参',
definesStartVersionOfYourArtifactEachRunIncrements: '定义您的工件的起始版本。每次运行都会增加工件版本。',
forMoreInformationAboutBuildingSeeThe: '有关构建的更多信息,请参',
taskTemplateReference: '任务模板参考',
definesWhatArtifactShouldBeDeployedWhenTheTaskRun: '定义任务运行时应部署哪些产物。',
forMoreInformationAboutDeployingSeeThe: '有关部署的更多信息,请参',
definesWhatArtifactShouldBeDeployedWhenTheTaskRun: '定义在任务运行时应部署的工件。',
forMoreInformationAboutDeployingSeeThe: '有关部署的更多信息,请参',
taskTemplateReference2: '任务模板参考',
definesAutorunSchedule: '定义计划任务',
forMoreInformationAboutCronSeeThe: '有关 cron 的更多信息,请参',
definesAutorunSchedule: '定义自动运行计划。',
forMoreInformationAboutCronSeeThe: '有关 cron 的更多信息,请参',
cronExpressionFormatReference: 'Cron 表达式格式参考',
startVersion: '始版本',
example000: '例如: 0.0.0',
startVersion: '始版本',
example000: '示例:0.0.0',
buildTemplate: '构建模板',
autorun: '自动运行',
playbookFilename: 'Playbook 文件名称 *',
exampleSiteyml: '例如: site.yml',
inventory2: '主机配置 *',
repository: '存储库',
playbookFilename: '剧本文件名 *',
exampleSiteyml: '示例:site.yml',
inventory2: '库存 *',
repository: '库',
environment3: '环境 *',
vaultPassword: 'Vault 密码',
vaultPassword2: 'Vault 密码',
view: 'View',
vaultPassword: '保险库密码',
vaultPassword2: '保险库密码',
view: '视图',
cron: 'Cron',
iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: '我想通过 cron 运行一个任务,仅用于某些存储库的新提交',
repository2: '存储库',
cronChecksNewCommitBeforeRun: 'Cron 在运行前检查新提交',
iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: '我想通过 cron 仅为某个仓库的新提交运行任务',
repository2: '库',
cronChecksNewCommitBeforeRun: 'Cron 在运行前检查新提交',
readThe: '阅读',
toLearnMoreAboutCron: '了解有关 Cron 的更多信息。',
suppressSuccessAlerts: 'Suppress success alerts',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'CLI 参数 (JSON 数组格式). 例如: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
allowCliArgsInTask: '允许任务中自定义 CLI 参数',
toLearnMoreAboutCron: '了解有关 Cron 的更多信息。',
suppressSuccessAlerts: '抑制成功警报',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'CLI 参数JSON 数组)。示例:[ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
allowCliArgsInTask: '允许任务中 CLI 参数',
docs: '文档',
editViews: '编辑视图',
newTemplate: '新模板',
newTemplate: '新模板',
taskTemplates2: '任务模板',
all: '全部',
all: '所有',
notLaunched: '未启动',
by: 'by {user_name}',
by: ' {user_name}',
editTemplate: '编辑模板',
newTemplate2: '新模板',
newTemplate2: '新模板',
deleteTemplate: '删除模板',
playbook: 'Playbook',
email: '邮箱',
playbook: '剧本',
email: '电子邮件',
adminUser: '管理员用户',
sendAlerts: '发送通知',
sendAlerts: '发送警报',
deleteUser: '删除用户',
newUser: '新用户',
re: 'Re{getActionButtonTitle}',
teamMember: '{expr} Team Member',
newUser: '新用户',
re: '重新 {getActionButtonTitle}',
teamMember: '{expr} 团队成员',
taskId: '任务 ID',
version: '版本',
status: '状态',
start: '启动',
actions: '任务',
alert: '通知',
start: '开始',
actions: '操作',
alert: '警报',
admin: '管理员',
role: '角色',
external: '扩展',
external: '外部',
time: '时间',
path: '路径',
gitUrl: 'Git 存储库链接',
gitUrl: 'Git URL',
sshKey: 'SSH 密钥',
lastTask: '最后一次任务',
lastTask: '最后任务',
task2: '任务',
build: '编译',
build: '构建',
deploy: '部署',
run: '行',
run: '行',
add: '添加',
password_required: '密码是必填项',
name_required: '名称是必填项',
user_credentials_required: '用户凭证是必填项',
type_required: '类型是是必填项',
path_required: '主机配置文件路径是必填项',
private_key_required: '私钥是是必填项',
project_name_required: '项目名称是必填项',
repository_required: '存储库地址是必填项',
branch_required: '分支是必填项',
key_required: 'Key 是必填项',
user_required: '用户是必填项',
build_version_required: '编译版本是必填项',
title_required: '标题是必填项',
isRequired: '是必填项',
password_required: '密码是必需的',
name_required: '名称是必需的',
user_credentials_required: '用户凭据是必需的',
type_required: '类型是必需的',
path_required: '库存文件路径是必需的',
private_key_required: '私钥是必需的',
project_name_required: '项目名称是必需的',
repository_required: '仓库是必需的',
branch_required: '分支是必需的',
key_required: '密钥是必需的',
user_required: '用户是必需的',
build_version_required: '构建版本是必需的',
title_required: '标题是必需的',
isRequired: '是必需的',
mustBeInteger: '必须是整数',
mustBe0OrGreater: '必须大于或等于 0',
start_version_required: '开始版本是必填项',
playbook_filename_required: 'Playbook 文件名称是必填项',
inventory_required: '主机配置是必填项',
environment_required: '环境配置是必填项',
email_required: '邮箱是必填项',
build_template_required: '编译模板是必填项',
start_version_required: '起始版本是必需的',
playbook_filename_required: '剧本文件名是必需的',
inventory_required: '库存是必需的',
environment_required: '环境是必需的',
email_required: '电子邮件是必需的',
build_template_required: '构建模板是必需的',
Task: '任务',
Build: '编译',
Build: '构建',
Deploy: '部署',
Run: '运行',
CreateDemoProject: '创建模板项目',
CreateDemoProject: '创建演示项目',
LeaveProject: '离开项目',
Schedule: '计划任务',
integration: '外部集成',
integrations: '外部集成',
NewIntegration: '新增集成',
integration: '集成',
integrations: '集成',
NewIntegration: '新集成',
EditIntegration: '编辑集成',
DeleteIntegration: '删除集成',
DeleteIntegrationMsg: '确定删除此集成吗?',
AddAlias: '新增 Alias',
LoadAlias: '列出已有的 Alias',
DeleteIntegrationMsg: '您确定要删除此集成吗?',
AddAlias: '添加别名',
LoadAlias: '加载别名...',
runners: '运行器',
newRunner: '新运行器',
enabled: '已启用',
scheduleNextRun: '下次运行',
maxNumberOfParallelTasks: '最大并行任务数',
runnerUsage: '使用:',
runnerToken: '令牌:',
editRunner: '编辑运行器',
};

View File

@ -1,242 +1,259 @@
export default {
'Check interval': '檢查間隔',
Schedule: '排程',
backup: '備份',
downloadTheProjectBackupFile: '下載專案備份檔json格式',
restoreProject: '恢复...',
incorrectUsrPwd: '使用者名稱或密碼錯誤',
askDeleteUser: '您確定要刪除此使用者嗎? ',
askDeleteTemp: '您確實要刪除此範本嗎? ',
askDeleteEnv: '您確實要刪除此環境嗎? ',
askDeleteInv: '您確實要刪除此主機配置嗎? ',
askDeleteKey: '您確定要刪除此金鑰嗎? ',
askDeleteRepo: '您確定要刪除此儲存庫嗎? ',
askDeleteProj: '您確定要刪除此項目嗎? ',
askDeleteTMem: '您確定要刪除此團隊成員嗎? ',
downloadTheProjectBackupFile: '下載專案備份檔json格式',
restoreProject: '還原專案...',
incorrectUsrPwd: '登入或密碼不正確',
askDeleteUser: '您確定要刪除這個使用者嗎?',
askDeleteTemp: '您確定要刪除這個範本嗎?',
askDeleteEnv: '您確定要刪除這個環境嗎?',
askDeleteInv: '您確定要刪除這個庫存嗎?',
askDeleteKey: '您確定要刪除這個金鑰嗎?',
askDeleteRepo: '您確定要刪除這個儲存庫嗎?',
askDeleteProj: '您確定要刪除這個專案嗎?',
askDeleteTMem: '您確定要刪除這個團隊成員嗎?',
edit: '編輯',
nnew: '新',
nnew: '新',
keyFormSshKey: 'SSH 金鑰',
keyFormLoginPassword: '使用密碼登入',
keyFormNone: '無',
incorrectUrl: 'URL位址不正確',
incorrectUrl: '不正確的 URL',
username: '使用者名稱',
username_required: '未填入使用者名稱',
dashboard: '控制台',
username_required: '使用者名稱是必填的',
dashboard: '儀表板',
history: '歷史',
activity: '活動',
settings: '設定',
signIn: '登入',
password: '密碼',
changePassword: '更改密碼',
editUser: '編使用者',
newProject: '新專案',
editUser: '編使用者',
newProject: '新專案',
close: '關閉',
newProject2: '新專案...',
demoMode: 'DEMO MODE',
newProject2: '新專案...',
demoMode: '示範模式',
task: '任務 #{expr}',
youCanRunAnyTasks: '您可以執行任何任務',
youHaveReadonlyAccess: '您只有唯讀存取權限',
youHaveReadonlyAccess: '您擁有唯讀權限',
taskTemplates: '任務範本',
inventory: '主機配置',
inventory: '庫存',
environment: '環境',
keyStore: '金鑰',
keyStore: '金鑰儲存',
repositories: '儲存庫',
darkMode: '模式',
darkMode: '暗模式',
team: '團隊',
users: '使用者',
editAccount: '帳戶編輯',
signOut: '註銷',
editAccount: '編輯帳戶',
signOut: '登出',
error: '錯誤',
refreshPage: '刷新頁面',
refreshPage: '重新整理頁面',
relogin: '重新登入',
howToFixSigninIssues: '如何解決登入問題',
firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: '首先,您需要登入執行 Semaphore 的伺服器。 ',
executeTheFollowingCommandOnTheServerToSeeExisting: '在伺服器上執行以下命令查看現有使用者:',
firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: '首先,您需要訪問運行 Semaphore 的伺服器。',
executeTheFollowingCommandOnTheServerToSeeExisting: '在伺服器上執行以下命令查看現有使用者:',
semaphoreUserList: 'semaphore user list',
youCanChangePasswordOfExistingUser: '您可以更改現有使用者的密碼:',
semaphoreUserChangebyloginLoginUser123Password: 'semaphore user change-by-login --login user123 --password {makePasswordExample}',
orCreateNewAdminUser: '或新的管理員使用者:',
orCreateNewAdminUser: '或建新的管理員使用者:',
close2: '關閉',
semaphore: 'SEMAPHORE',
dontHaveAccountOrCantSignIn: '沒有帳戶或無法登入? ',
semaphore: '信號燈',
dontHaveAccountOrCantSignIn: '沒有帳戶或無法登入?',
password2: '密碼',
cancel: '關閉',
noViews: '沒有分組視圖',
addView: '新增分組檢視',
cancel: '取消',
noViews: '沒有視圖',
addView: '新增',
editEnvironment: '編輯環境',
deleteEnvironment: '刪除環境',
environment2: '環境',
newEnvironment: '新環境',
newEnvironment: '新環境',
environmentName: '環境名稱',
extraVariables: '擴展變數',
enterExtraVariablesJson: '新增額外的Json格式變數...',
extraVariables: '額外變數',
enterExtraVariablesJson: '輸入額外變數 JSON...',
environmentVariables: '環境變數',
enterEnvJson: '新增額外的Json格式環境變數...',
environmentAndExtraVariablesMustBeValidJsonExample: '環境變數和額外變數必須是有效的 JSON。 例如',
dashboard2: '控制台',
enterEnvJson: '輸入環境 JSON...',
environmentAndExtraVariablesMustBeValidJsonExample: '環境和額外變數必須是有效的 JSON。範例',
dashboard2: '儀表板',
ansibleSemaphore: 'Semaphore UI',
wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: '抱歉,如果未啟用 JavaScript<%= htmlWebpackPlugin.options.title %> 將無法正常運作。 請啟用它以繼續。 ',
deleteInventory: '刪除主機配置',
newInventory: '新增主機配置',
wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: '我們很抱歉,但 <%= htmlWebpackPlugin.options.title %> 在未啟用 JavaScript 的情況下無法正常工作。請啟用它以繼續。',
deleteInventory: '刪除庫存',
newInventory: '新庫存',
name: '名稱',
userCredentials: '使用者憑證',
sudoCredentialsOptional: 'Sudo 憑證(可選)',
type: '類型',
pathToInventoryFile: '主機設定檔路徑',
enterInventory: '編輯主機配置...',
staticInventoryExample: '靜態主機配置範例:',
staticYamlInventoryExample: '靜態 YAML 格式主機設定範例:',
keyName: '憑證名稱',
loginOptional: '登入名稱 (可選)',
usernameOptional: '使用者名稱 (可選)',
pathToInventoryFile: '庫存檔案路徑',
enterInventory: '輸入庫存...',
staticInventoryExample: '靜態庫存範例:',
staticYamlInventoryExample: '靜態 YAML 庫存範例:',
keyName: '金鑰名稱',
loginOptional: '登入(可選)',
usernameOptional: '使用者名稱(可選)',
privateKey: '私鑰',
override: '覆蓋',
useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: '對於 HTTPS 儲存庫和使用非 SSH 連線的 playbook請使用此類金鑰。 ',
deleteKey: '刪除憑證',
newKey: '新增憑證',
useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: '對於 HTTPS 儲存庫和使用非 SSH 連接的 playbook請使用此類型的金鑰。',
deleteKey: '刪除金鑰',
newKey: '新金鑰',
create: '創建',
newTask: '建立任務',
newTask: '任務',
cantDeleteThe: '無法刪除 {objectTitle}',
theCantBeDeletedBecauseItUsedByTheResourcesBelow: '無法刪除 {objectTitle},因為它已被如下資源使用',
theCantBeDeletedBecauseItUsedByTheResourcesBelow: '{objectTitle} 無法刪除,因為它被以下資源使用',
projectName: '專案名稱',
allowAlertsForThisProject: '在此專案開啟通知',
telegramChatIdOptional: 'Telegram Chat ID (可選)',
maxNumberOfParallelTasksOptional: '最大並行任務數 (可選)',
allowAlertsForThisProject: '允許此專案的警報',
telegramChatIdOptional: 'Telegram 聊天 ID可選',
maxNumberOfParallelTasksOptional: '最大並行任務數(可選)',
deleteRepository: '刪除儲存庫',
newRepository: '新儲存庫',
newRepository: '新儲存庫',
urlOrPath: 'URL 或路徑',
absPath: 'abs. path',
absPath: '絕對路徑',
branch: '分支',
accessKey: '存取憑證',
credentialsToAccessToTheGitRepositoryItShouldBe: '存取 Git 儲存庫的憑證。 它應該是:',
ifYouUseGitOrSshUrl: '如果您使用 Git 或 SSH URL.',
ifYouUseHttpsOrFileUrl: '如果您使用 HTTPS 或檔案 URL.',
none: 'None',
accessKey: '訪問金鑰',
credentialsToAccessToTheGitRepositoryItShouldBe: '訪問 Git 儲存庫的憑證。應該是:',
ifYouUseGitOrSshUrl: '如果您使用 Git 或 SSH URL',
ifYouUseHttpsOrFileUrl: '如果您使用 HTTPS 或檔案 URL',
none: '',
ssh: 'SSH',
deleteProject: '刪除項目',
save: '存',
deleteProject2: '刪除項目',
onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: '一旦刪除項目,將無法恢復 ',
deleteProject: '刪除專案',
save: '存',
deleteProject2: '刪除專案',
onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: '一旦刪除專案,就無法恢復。請確定。',
name2: '名稱 *',
title: '標題 *',
description: '說明',
description: '描述',
required: '必填',
key: '{expr}',
surveyVariables: '列出變數',
surveyVariables: '調查變數',
addVariable: '新增變數',
columns: '',
buildVersion: '編譯版本',
messageOptional: '說明 (可選)',
debug: '調試模式',
dryRun: 'Dry Run',
diff: '顯示差異',
advanced: '進階選項',
columns: '欄位',
buildVersion: '版本',
messageOptional: '訊息(可選)',
debug: '除錯',
dryRun: '模擬執行',
diff: '差異',
advanced: '進階',
hide: '隱藏',
pleaseAllowOverridingCliArgumentInTaskTemplateSett: '請在設定中開啟 「允許在任務中自訂 CLI 參數」',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'CLI 測試 (JSON 陣列). 例如: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
pleaseAllowOverridingCliArgumentInTaskTemplateSett: '允許在任務範本設定中覆蓋 CLI 參數',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'CLI 參數JSON 陣列)。範例: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
started: '已啟動',
author: '關聯用戶',
duration: '說明',
author: '作者',
duration: '持續時間',
stop: '停止',
forceStop: '強制刪除',
confirmTask: '确认',
forceStop: '強制停止',
confirmTask: '確認',
deleteTeamMember: '刪除團隊成員',
team2: '團隊',
newTeamMember: '新團隊成員',
newTeamMember: '新團隊成員',
user: '使用者',
administrator: '管理員',
definesStartVersionOfYourArtifactEachRunIncrements: '定義起始版本,每次運行都會增加版本。 ',
forMoreInformationAboutBuildingSeeThe: '有關構建的更多信息,請參',
definesStartVersionOfYourArtifactEachRunIncrements: '定義您的工件的起始版本。每次運行都會增加工件版本。',
forMoreInformationAboutBuildingSeeThe: '有關構建的更多信息,請參',
taskTemplateReference: '任務範本參考',
definesWhatArtifactShouldBeDeployedWhenTheTaskRun: '定義任務執行時應部署哪些產物。 ',
forMoreInformationAboutDeployingSeeThe: '有關部署的更多信息,請參',
definesWhatArtifactShouldBeDeployedWhenTheTaskRun: '定義在任務運行時應部署的工件。',
forMoreInformationAboutDeployingSeeThe: '有關部署的更多信息,請參',
taskTemplateReference2: '任務範本參考',
definesAutorunSchedule: '定義計畫任務',
forMoreInformationAboutCronSeeThe: '有關 cron 的更多信息,請參',
definesAutorunSchedule: '定義自動運行排程。',
forMoreInformationAboutCronSeeThe: '有關 cron 的更多信息,請參',
cronExpressionFormatReference: 'Cron 表達式格式參考',
startVersion: '始版本',
example000: '例如: 0.0.0',
buildTemplate: '範本',
startVersion: '始版本',
example000: '範例: 0.0.0',
buildTemplate: '建範本',
autorun: '自動運行',
playbookFilename: 'Playbook 檔 *',
exampleSiteyml: '例如: site.yml',
inventory2: '主機配置 *',
playbookFilename: 'Playbook 檔名 *',
exampleSiteyml: '範例: site.yml',
inventory2: '庫存 *',
repository: '儲存庫',
environment3: '環境 *',
vaultPassword: 'Vault 密碼',
vaultPassword2: 'Vault 密碼',
view: '查看',
cron: '計劃任務',
iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: '我想透過 cron 執行一個任務,只用於某些儲存庫的新提交',
vaultPassword: '保險庫密碼',
vaultPassword2: '保險庫密碼',
view: '視圖',
cron: 'Cron',
iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: '我想通過 cron 僅對某些儲存庫的新提交運行任務',
repository2: '儲存庫',
cronChecksNewCommitBeforeRun: 'Cron 在執行前檢查新的提交',
cronChecksNewCommitBeforeRun: 'Cron 在運行之前檢查新提交',
readThe: '閱讀',
toLearnMoreAboutCron: '了解更多關於 Cron 的資訊。 ',
suppressSuccessAlerts: 'Suppress success alerts',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'CLI 參數 (JSON 陣列格式). 例如: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
allowCliArgsInTask: '允許任務中自訂 CLI 參數',
toLearnMoreAboutCron: '以了解有關 Cron 的更多信息。',
suppressSuccessAlerts: '抑制成功警報',
cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'CLI 參數JSON 陣列)。範例: [ "-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv" ]',
allowCliArgsInTask: '允許任務中 CLI 參數',
docs: '文檔',
editViews: '編輯視',
newTemplate: '新增模板',
editViews: '編輯',
newTemplate: '新範本',
taskTemplates2: '任務範本',
all: '全部',
all: '所有',
notLaunched: '未啟動',
by: 'by {user_name}',
by: ' {user_name}',
editTemplate: '編輯範本',
newTemplate2: '新範本',
deleteTemplate: '刪除模板',
newTemplate2: '新範本',
deleteTemplate: '刪除範本',
playbook: 'Playbook',
email: '信箱',
email: '電子郵件',
adminUser: '管理員使用者',
sendAlerts: '發送通知',
sendAlerts: '發送警報',
deleteUser: '刪除使用者',
newUser: '新使用者',
re: 'Re{getActionButtonTitle}',
teamMember: '{expr} Team Member',
newUser: '新使用者',
re: '重新 {getActionButtonTitle}',
teamMember: '{expr} 團隊成員',
taskId: '任務 ID',
version: '版本',
status: '狀態',
start: '啟動',
actions: '任務',
alert: '通知',
start: '開始',
actions: '操作',
alert: '警報',
admin: '管理員',
role: '角色',
external: '擴展',
external: '外部',
time: '時間',
path: '路徑',
gitUrl: 'Git 儲存庫連結',
sshKey: 'SSH 鑰',
lastTask: '最後一次任務',
gitUrl: 'Git URL',
sshKey: 'SSH 鑰',
lastTask: '最後任務',
task2: '任務',
build: '編譯',
build: '構建',
deploy: '部署',
run: '行',
run: '行',
add: '新增',
password_required: '密碼是必填',
name_required: '名稱是必填',
user_credentials_required: '使用者憑證是必填',
type_required: '型別是必填項',
path_required: '主機設定檔路徑是必填項',
private_key_required: '私鑰是是必填項',
project_name_required: '專案名稱是必填',
repository_required: '儲存庫位址是必填項',
branch_required: '分支是必填',
key_required: 'Key 是必填項',
user_required: '使用者是必填',
build_version_required: '編譯版是必填項',
title_required: '標題是必填',
isRequired: '是必填',
password_required: '密碼是必填',
name_required: '名稱是必填',
user_credentials_required: '使用者憑證是必填',
type_required: '類型是必填的',
path_required: '庫存檔案路徑是必填的',
private_key_required: '私鑰是必填的',
project_name_required: '專案名稱是必填',
repository_required: '儲存庫是必填的',
branch_required: '分支是必填',
key_required: '金鑰是必填的',
user_required: '使用者是必填',
build_version_required: '版本是必填的',
title_required: '標題是必填',
isRequired: '是必填',
mustBeInteger: '必須是整數',
mustBe0OrGreater: '必須大於或等於 0',
start_version_required: '開始版本是必填項',
playbook_filename_required: 'Playbook 檔案名稱是必填項',
inventory_required: '主機配置是必填項',
environment_required: '環境配置是必填項',
email_required: '信箱是必填項',
build_template_required: '編譯模板是必填項',
mustBe0OrGreater: '必須是 0 或更大',
start_version_required: '起始版本是必填的',
playbook_filename_required: 'Playbook 檔名是必填的',
inventory_required: '庫存是必填的',
environment_required: '環境是必填的',
email_required: '電子郵件是必填的',
build_template_required: '構建範本是必填的',
Task: '任務',
Build: '編譯',
Build: '構建',
Deploy: '部署',
Run: '運行',
CreateDemoProject: '建立範本專案',
CreateDemoProject: '創建示範專案',
LeaveProject: '離開專案',
integration: '整合',
integrations: '整合',
NewIntegration: '新整合',
EditIntegration: '編輯整合',
DeleteIntegration: '刪除整合',
DeleteIntegrationMsg: '您確定要刪除這個整合嗎?',
AddAlias: '新增別名',
LoadAlias: '正在加載別名...',
runners: '執行者',
newRunner: '新執行者',
enabled: '已啟用',
scheduleNextRun: '下一次運行',
maxNumberOfParallelTasks: '最大並行任務數',
runnerUsage: '使用情況:',
runnerToken: '令牌:',
editRunner: '編輯執行者',
};

View File

@ -17,6 +17,7 @@ import New from '../views/project/New.vue';
import Integrations from '../views/project/Integrations.vue';
import IntegrationExtractor from '../views/project/IntegrationExtractor.vue';
import Apps from '../views/Apps.vue';
import Runners from '../views/Runners.vue';
Vue.use(VueRouter);
@ -101,6 +102,10 @@ const routes = [
path: '/users',
component: Users,
},
{
path: '/runners',
component: Runners,
},
{
path: '/apps',
component: Apps,

254
web/src/views/Runners.vue Normal file
View File

@ -0,0 +1,254 @@
<template xmlns:v-slot="http://www.w3.org/1999/XSL/Transform">
<div v-if="items != null">
<EditDialog
v-model="editDialog"
:save-button-text="itemId === 'new' ? $t('create') : $t('save')"
:title="itemId === 'new' ? $t('newRunner') : $t('editRunner')"
@save="loadItemsAndShowRunnerDetails($event)"
>
<template v-slot:form="{ onSave, onError, needSave, needReset }">
<RunnerForm
:project-id="projectId"
:item-id="itemId"
@save="onSave"
@error="onError"
:need-save="needSave"
:need-reset="needReset"
:is-admin="true"
/>
</template>
</EditDialog>
<EditDialog
:max-width="600"
v-model="newRunnerTokenDialog"
:save-button-text="null"
:title="$t('newRunnerToken')"
>
<template v-slot:form="{}">
<div>
<div class="mb-4">
<div>Token:</div>
<div style="position: relative;">
<code
class="pa-2 mt-2"
style="background: gray; color: white; display: block; font-size: 14px;"
>{{ (newRunner || {}).token }}</code>
<v-btn
style="position: absolute; right: 10px; top: 2px;"
icon
color="white"
@click="copyToClipboard((newRunner || {}).token)"
>
<v-icon>mdi-content-copy</v-icon>
</v-btn>
</div>
</div>
<div>
<div>Usage:</div>
<div style="position: relative;">
<pre style="white-space: pre-wrap;
background: gray;
color: white;
border-radius: 10px;
margin-top: 5px;"
class="pa-2"
>{{ runnerUsageCommand }}</pre>
<v-btn
style="position: absolute; right: 10px; top: 10px;"
icon
color="white"
@click="copyToClipboard(runnerUsageCommand)"
>
<v-icon>mdi-content-copy</v-icon>
</v-btn>
</div>
</div>
</div>
</template>
</EditDialog>
<YesNoDialog
:title="$t('deleteRunner')"
:text="$t('askDeleteRunner')"
v-model="deleteItemDialog"
@yes="deleteItem(itemId)"
/>
<v-toolbar flat>
<v-btn
icon
class="mr-4"
@click="returnToProjects()"
>
<v-icon>mdi-arrow-left</v-icon>
</v-btn>
<v-toolbar-title>{{ $t('runners') }}</v-toolbar-title>
<v-spacer></v-spacer>
<v-btn
color="primary"
@click="editItem('new')"
>{{ $t('newRunner') }}
</v-btn>
</v-toolbar>
<v-data-table
:headers="headers"
:items="items"
class="mt-4"
:footer-props="{ itemsPerPageOptions: [20] }"
>
<template v-slot:item.active="{ item }">
<v-switch
v-model="item.active"
inset
@change="setActive(item.id, item.active)"
></v-switch>
</template>
<template v-slot:item.name="{ item }">{{ item.name || '&mdash;' }}</template>
<template v-slot:item.webhook="{ item }">{{ item.webhook || '&mdash;' }}</template>
<template v-slot:item.max_parallel_tasks="{ item }">
{{ item.max_parallel_tasks || '∞' }}
</template>
<template v-slot:item.actions="{ item }">
<div style="white-space: nowrap">
<v-btn
icon
class="mr-1"
@click="askDeleteItem(item.id)"
>
<v-icon>mdi-delete</v-icon>
</v-btn>
<v-btn
icon
class="mr-1"
@click="editItem(item.id)"
>
<v-icon>mdi-pencil</v-icon>
</v-btn>
</div>
</template>
</v-data-table>
</div>
</template>
<script>
import EventBus from '@/event-bus';
import YesNoDialog from '@/components/YesNoDialog.vue';
import ItemListPageBase from '@/components/ItemListPageBase';
import EditDialog from '@/components/EditDialog.vue';
import RunnerForm from '@/components/RunnerForm.vue';
import axios from 'axios';
export default {
mixins: [ItemListPageBase],
components: {
RunnerForm,
YesNoDialog,
EditDialog,
},
props: {
webHost: String,
},
computed: {
runnerUsageCommand() {
return `SEMAPHORE_RUNNER_API_URL=${this.webHost}/internal \\
SEMAPHORE_RUNNER_ID=${(this.newRunner || {}).id} \\
SEMAPHORE_RUNNER_TOKEN=${(this.newRunner || {}).token} \\
semaphore runner --no-config`;
},
},
data() {
return {
newRunnerTokenDialog: null,
newRunner: null,
};
},
methods: {
async loadItemsAndShowRunnerDetails(e) {
if (e.item.token) {
this.newRunnerTokenDialog = true;
this.newRunner = e.item;
}
return this.loadItems();
},
async copyToClipboard(text) {
try {
await window.navigator.clipboard.writeText(text);
EventBus.$emit('i-snackbar', {
color: 'success',
text: 'The command has been copied to the clipboard.',
});
} catch (e) {
EventBus.$emit('i-snackbar', {
color: 'error',
text: `Can't copy the command: ${e.message}`,
});
}
},
async setActive(runnerId, active) {
await axios({
method: 'post',
url: `/api/runners/${runnerId}/active`,
responseType: 'json',
data: {
active,
},
});
},
getHeaders() {
return [
{
value: 'active',
}, {
text: this.$i18n.t('name'),
value: 'name',
width: '50%',
},
{
text: this.$i18n.t('webhook'),
value: 'webhook',
},
{
text: this.$i18n.t('maxNumberOfParallelTasks'),
value: 'max_parallel_tasks',
}, {
text: this.$i18n.t('actions'),
value: 'actions',
sortable: false,
}];
},
async returnToProjects() {
EventBus.$emit('i-open-last-project');
},
getItemsUrl() {
return '/api/runners';
},
getSingleItemUrl() {
return `/api/runners/${this.itemId}`;
},
getEventName() {
return 'i-runner';
},
},
};
</script>

View File

@ -69,7 +69,6 @@
icon
class="mr-1"
@click="askDeleteItem(item.id)"
:disabled="item.id === userId"
>
<v-icon>mdi-delete</v-icon>
</v-btn>

View File

@ -35,7 +35,7 @@
<v-toolbar flat >
<v-app-bar-nav-icon @click="showDrawer()"></v-app-bar-nav-icon>
<v-toolbar-title>{{ $t('environment2') }}</v-toolbar-title>
<v-toolbar-title>{{ $t('environment') }}</v-toolbar-title>
<v-spacer></v-spacer>
<v-btn
color="primary"