mirror of
https://github.com/miniflux/v2.git
synced 2025-09-15 18:57:04 +00:00
Use unique translation IDs instead of English text as key
This commit is contained in:
parent
f244df6293
commit
beb7a0cfcb
66 changed files with 4069 additions and 2972 deletions
|
@ -49,7 +49,7 @@ func (c *Controller) SaveCategory(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
|
||||
if duplicateCategory != nil {
|
||||
view.Set("errorMessage", "This category already exists.")
|
||||
view.Set("errorMessage", "error.category_already_exists")
|
||||
html.OK(w, r, view.Render("create_category"))
|
||||
return
|
||||
}
|
||||
|
@ -61,7 +61,7 @@ func (c *Controller) SaveCategory(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
if err = c.store.CreateCategory(&category); err != nil {
|
||||
logger.Error("[Controller:CreateCategory] %v", err)
|
||||
view.Set("errorMessage", "Unable to create this category.")
|
||||
view.Set("errorMessage", "error.unable_to_create_category")
|
||||
html.OK(w, r, view.Render("create_category"))
|
||||
return
|
||||
}
|
||||
|
|
|
@ -60,7 +60,7 @@ func (c *Controller) UpdateCategory(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
|
||||
if c.store.AnotherCategoryExists(user.ID, category.ID, categoryForm.Title) {
|
||||
view.Set("errorMessage", "This category already exists.")
|
||||
view.Set("errorMessage", "error.category_already_exists")
|
||||
html.OK(w, r, view.Render("edit_category"))
|
||||
return
|
||||
}
|
||||
|
@ -68,7 +68,7 @@ func (c *Controller) UpdateCategory(w http.ResponseWriter, r *http.Request) {
|
|||
err = c.store.UpdateCategory(categoryForm.Merge(category))
|
||||
if err != nil {
|
||||
logger.Error("[Controller:UpdateCategory] %v", err)
|
||||
view.Set("errorMessage", "Unable to update this category.")
|
||||
view.Set("errorMessage", "error.unable_to_update_category")
|
||||
html.OK(w, r, view.Render("edit_category"))
|
||||
return
|
||||
}
|
||||
|
|
|
@ -71,7 +71,7 @@ func (c *Controller) UpdateFeed(w http.ResponseWriter, r *http.Request) {
|
|||
err = c.store.UpdateFeed(feedForm.Merge(feed))
|
||||
if err != nil {
|
||||
logger.Error("[Controller:EditFeed] %v", err)
|
||||
view.Set("errorMessage", "Unable to update this feed.")
|
||||
view.Set("errorMessage", "error.unable_to_update_feed")
|
||||
html.OK(w, r, view.Render("edit_feed"))
|
||||
return
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ type AuthForm struct {
|
|||
// Validate makes sure the form values are valid.
|
||||
func (a AuthForm) Validate() error {
|
||||
if a.Username == "" || a.Password == "" {
|
||||
return errors.NewLocalizedError("All fields are mandatory.")
|
||||
return errors.NewLocalizedError("error.fields_mandatory")
|
||||
}
|
||||
|
||||
return nil
|
||||
|
|
|
@ -19,7 +19,7 @@ type CategoryForm struct {
|
|||
// Validate makes sure the form values are valid.
|
||||
func (c CategoryForm) Validate() error {
|
||||
if c.Title == "" {
|
||||
return errors.NewLocalizedError("The title is mandatory.")
|
||||
return errors.NewLocalizedError("error.title_required")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@ type FeedForm struct {
|
|||
// ValidateModification validates FeedForm fields
|
||||
func (f FeedForm) ValidateModification() error {
|
||||
if f.FeedURL == "" || f.SiteURL == "" || f.Title == "" || f.CategoryID == 0 {
|
||||
return errors.NewLocalizedError("All fields are mandatory.")
|
||||
return errors.NewLocalizedError("error.fields_mandatory")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -40,16 +40,16 @@ func (s *SettingsForm) Merge(user *model.User) *model.User {
|
|||
// Validate makes sure the form values are valid.
|
||||
func (s *SettingsForm) Validate() error {
|
||||
if s.Username == "" || s.Theme == "" || s.Language == "" || s.Timezone == "" || s.EntryDirection == "" {
|
||||
return errors.NewLocalizedError("The username, theme, language and timezone fields are mandatory.")
|
||||
return errors.NewLocalizedError("error.settings_mandatory_fields")
|
||||
}
|
||||
|
||||
if s.Password != "" {
|
||||
if s.Password != s.Confirmation {
|
||||
return errors.NewLocalizedError("Passwords are not the same.")
|
||||
return errors.NewLocalizedError("error.different_passwords")
|
||||
}
|
||||
|
||||
if len(s.Password) < 6 {
|
||||
return errors.NewLocalizedError("You must use at least 6 characters")
|
||||
return errors.NewLocalizedError("error.password_min_length")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ type SubscriptionForm struct {
|
|||
// Validate makes sure the form values are valid.
|
||||
func (s *SubscriptionForm) Validate() error {
|
||||
if s.URL == "" || s.CategoryID == 0 {
|
||||
return errors.NewLocalizedError("The URL and the category are mandatory.")
|
||||
return errors.NewLocalizedError("error.feed_mandatory_fields")
|
||||
}
|
||||
|
||||
return nil
|
||||
|
|
|
@ -22,15 +22,15 @@ type UserForm struct {
|
|||
// ValidateCreation validates user creation.
|
||||
func (u UserForm) ValidateCreation() error {
|
||||
if u.Username == "" || u.Password == "" || u.Confirmation == "" {
|
||||
return errors.NewLocalizedError("All fields are mandatory.")
|
||||
return errors.NewLocalizedError("error.fields_mandatory")
|
||||
}
|
||||
|
||||
if u.Password != u.Confirmation {
|
||||
return errors.NewLocalizedError("Passwords are not the same.")
|
||||
return errors.NewLocalizedError("error.different_passwords")
|
||||
}
|
||||
|
||||
if len(u.Password) < 6 {
|
||||
return errors.NewLocalizedError("You must use at least 6 characters.")
|
||||
return errors.NewLocalizedError("error.password_min_length")
|
||||
}
|
||||
|
||||
return nil
|
||||
|
@ -39,16 +39,16 @@ func (u UserForm) ValidateCreation() error {
|
|||
// ValidateModification validates user modification.
|
||||
func (u UserForm) ValidateModification() error {
|
||||
if u.Username == "" {
|
||||
return errors.NewLocalizedError("The username is mandatory.")
|
||||
return errors.NewLocalizedError("error.user_mandatory_fields")
|
||||
}
|
||||
|
||||
if u.Password != "" {
|
||||
if u.Password != u.Confirmation {
|
||||
return errors.NewLocalizedError("Passwords are not the same.")
|
||||
return errors.NewLocalizedError("error.different_passwords")
|
||||
}
|
||||
|
||||
if len(u.Password) < 6 {
|
||||
return errors.NewLocalizedError("You must use at least 6 characters.")
|
||||
return errors.NewLocalizedError("error.password_min_length")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -36,7 +36,7 @@ func (c *Controller) PocketAuthorize(w http.ResponseWriter, r *http.Request) {
|
|||
requestToken, err := connector.RequestToken(redirectURL)
|
||||
if err != nil {
|
||||
logger.Error("[Pocket:Authorize] %v", err)
|
||||
sess.NewFlashErrorMessage(c.translator.GetLanguage(request.UserLanguage(r)).Get("Unable to fetch request token from Pocket!"))
|
||||
sess.NewFlashErrorMessage(c.translator.GetLanguage(request.UserLanguage(r)).Get("error.pocket_request_token"))
|
||||
response.Redirect(w, r, route.Path(c.router, "integrations"))
|
||||
return
|
||||
}
|
||||
|
@ -65,7 +65,7 @@ func (c *Controller) PocketCallback(w http.ResponseWriter, r *http.Request) {
|
|||
accessToken, err := connector.AccessToken(request.PocketRequestToken(r))
|
||||
if err != nil {
|
||||
logger.Error("[Pocket:Callback] %v", err)
|
||||
sess.NewFlashErrorMessage(c.translator.GetLanguage(request.UserLanguage(r)).Get("Unable to fetch access token from Pocket!"))
|
||||
sess.NewFlashErrorMessage(c.translator.GetLanguage(request.UserLanguage(r)).Get("error.pocket_access_token"))
|
||||
response.Redirect(w, r, route.Path(c.router, "integrations"))
|
||||
return
|
||||
}
|
||||
|
@ -79,6 +79,6 @@ func (c *Controller) PocketCallback(w http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
|
||||
sess.NewFlashMessage(c.translator.GetLanguage(request.UserLanguage(r)).Get("Your Pocket account is now linked!"))
|
||||
sess.NewFlashMessage(c.translator.GetLanguage(request.UserLanguage(r)).Get("alert.pocket_linked"))
|
||||
response.Redirect(w, r, route.Path(c.router, "integrations"))
|
||||
}
|
||||
|
|
|
@ -36,7 +36,7 @@ func (c *Controller) UpdateIntegration(w http.ResponseWriter, r *http.Request) {
|
|||
integrationForm.Merge(integration)
|
||||
|
||||
if integration.FeverUsername != "" && c.store.HasDuplicateFeverUsername(user.ID, integration.FeverUsername) {
|
||||
sess.NewFlashErrorMessage(c.translator.GetLanguage(request.UserLanguage(r)).Get("There is already someone else with the same Fever username!"))
|
||||
sess.NewFlashErrorMessage(c.translator.GetLanguage(request.UserLanguage(r)).Get("error.duplicate_fever_username"))
|
||||
response.Redirect(w, r, route.Path(c.router, "integrations"))
|
||||
return
|
||||
}
|
||||
|
@ -53,6 +53,6 @@ func (c *Controller) UpdateIntegration(w http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
|
||||
sess.NewFlashMessage(c.translator.GetLanguage(request.UserLanguage(r)).Get("Preferences saved!"))
|
||||
sess.NewFlashMessage(c.translator.GetLanguage(request.UserLanguage(r)).Get("alert.prefs_saved"))
|
||||
response.Redirect(w, r, route.Path(c.router, "integrations"))
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@ func (c *Controller) CheckLogin(w http.ResponseWriter, r *http.Request) {
|
|||
authForm := form.NewAuthForm(r)
|
||||
|
||||
view := view.New(c.tpl, r, sess)
|
||||
view.Set("errorMessage", "Invalid username or password.")
|
||||
view.Set("errorMessage", "error.bad_credentials")
|
||||
view.Set("form", authForm)
|
||||
|
||||
if err := authForm.Validate(); err != nil {
|
||||
|
|
|
@ -65,7 +65,7 @@ func (c *Controller) OAuth2Callback(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
if user != nil {
|
||||
logger.Error("[OAuth2] User #%d cannot be associated because %s is already associated", request.UserID(r), user.Username)
|
||||
sess.NewFlashErrorMessage(c.translator.GetLanguage(request.UserLanguage(r)).Get("There is already someone associated with this provider!"))
|
||||
sess.NewFlashErrorMessage(c.translator.GetLanguage(request.UserLanguage(r)).Get("error.duplicate_linked_account"))
|
||||
response.Redirect(w, r, route.Path(c.router, "settings"))
|
||||
return
|
||||
}
|
||||
|
@ -75,7 +75,7 @@ func (c *Controller) OAuth2Callback(w http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
|
||||
sess.NewFlashMessage(c.translator.GetLanguage(request.UserLanguage(r)).Get("Your external account is now linked!"))
|
||||
sess.NewFlashMessage(c.translator.GetLanguage(request.UserLanguage(r)).Get("alert.account_linked"))
|
||||
response.Redirect(w, r, route.Path(c.router, "settings"))
|
||||
return
|
||||
}
|
||||
|
|
|
@ -40,7 +40,7 @@ func (c *Controller) OAuth2Unlink(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
|
||||
if !hasPassword {
|
||||
sess.NewFlashErrorMessage(c.translator.GetLanguage(request.UserLanguage(r)).Get("You must define a password otherwise you won't be able to login again."))
|
||||
sess.NewFlashErrorMessage(c.translator.GetLanguage(request.UserLanguage(r)).Get("error.unlink_account_without_password"))
|
||||
response.Redirect(w, r, route.Path(c.router, "settings"))
|
||||
return
|
||||
}
|
||||
|
@ -50,6 +50,6 @@ func (c *Controller) OAuth2Unlink(w http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
|
||||
sess.NewFlashMessage(c.translator.GetLanguage(request.UserLanguage(r)).Get("Your external account is now dissociated!"))
|
||||
sess.NewFlashMessage(c.translator.GetLanguage(request.UserLanguage(r)).Get("alert.account_unlinked"))
|
||||
response.Redirect(w, r, route.Path(c.router, "settings"))
|
||||
}
|
||||
|
|
|
@ -48,7 +48,7 @@ func (c *Controller) UploadOPML(w http.ResponseWriter, r *http.Request) {
|
|||
view.Set("countErrorFeeds", c.store.CountErrorFeeds(user.ID))
|
||||
|
||||
if fileHeader.Size == 0 {
|
||||
view.Set("errorMessage", "This file is empty")
|
||||
view.Set("errorMessage", "error.empty_file")
|
||||
html.OK(w, r, view.Render("import"))
|
||||
return
|
||||
}
|
||||
|
|
|
@ -54,7 +54,7 @@ func (c *Controller) UpdateSettings(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
|
||||
if c.store.AnotherUserExists(user.ID, settingsForm.Username) {
|
||||
view.Set("errorMessage", "This user already exists.")
|
||||
view.Set("errorMessage", "error.user_already_exists")
|
||||
html.OK(w, r, view.Render("settings"))
|
||||
return
|
||||
}
|
||||
|
@ -62,13 +62,13 @@ func (c *Controller) UpdateSettings(w http.ResponseWriter, r *http.Request) {
|
|||
err = c.store.UpdateUser(settingsForm.Merge(user))
|
||||
if err != nil {
|
||||
logger.Error("[Controller:UpdateSettings] %v", err)
|
||||
view.Set("errorMessage", "Unable to update this user.")
|
||||
view.Set("errorMessage", "error.unable_to_update_user")
|
||||
html.OK(w, r, view.Render("settings"))
|
||||
return
|
||||
}
|
||||
|
||||
sess.SetLanguage(user.Language)
|
||||
sess.SetTheme(user.Theme)
|
||||
sess.NewFlashMessage(c.translator.GetLanguage(request.UserLanguage(r)).Get("Preferences saved!"))
|
||||
sess.NewFlashMessage(c.translator.GetLanguage(request.UserLanguage(r)).Get("alert.prefs_saved"))
|
||||
response.Redirect(w, r, route.Path(c.router, "settings"))
|
||||
}
|
||||
|
|
|
@ -71,7 +71,7 @@ func (c *Controller) SubmitSubscription(w http.ResponseWriter, r *http.Request)
|
|||
switch {
|
||||
case n == 0:
|
||||
v.Set("form", subscriptionForm)
|
||||
v.Set("errorMessage", "Unable to find any subscription.")
|
||||
v.Set("errorMessage", "error.subscription_not_found")
|
||||
html.OK(w, r, v.Render("add_subscription"))
|
||||
case n == 1:
|
||||
feed, err := c.feedHandler.CreateFeed(
|
||||
|
|
|
@ -47,7 +47,7 @@ func (c *Controller) SaveUser(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
|
||||
if c.store.UserExists(userForm.Username) {
|
||||
view.Set("errorMessage", "This user already exists.")
|
||||
view.Set("errorMessage", "error.user_already_exists")
|
||||
html.OK(w, r, view.Render("create_user"))
|
||||
return
|
||||
}
|
||||
|
@ -55,7 +55,7 @@ func (c *Controller) SaveUser(w http.ResponseWriter, r *http.Request) {
|
|||
newUser := userForm.ToUser()
|
||||
if err := c.store.CreateUser(newUser); err != nil {
|
||||
logger.Error("[Controller:SaveUser] %v", err)
|
||||
view.Set("errorMessage", "Unable to create this user.")
|
||||
view.Set("errorMessage", "error.unable_to_create_user")
|
||||
html.OK(w, r, view.Render("create_user"))
|
||||
return
|
||||
}
|
||||
|
|
|
@ -65,7 +65,7 @@ func (c *Controller) UpdateUser(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
|
||||
if c.store.AnotherUserExists(selectedUser.ID, userForm.Username) {
|
||||
view.Set("errorMessage", "This user already exists.")
|
||||
view.Set("errorMessage", "error.user_already_exists")
|
||||
html.OK(w, r, view.Render("edit_user"))
|
||||
return
|
||||
}
|
||||
|
@ -73,7 +73,7 @@ func (c *Controller) UpdateUser(w http.ResponseWriter, r *http.Request) {
|
|||
userForm.Merge(selectedUser)
|
||||
if err := c.store.UpdateUser(selectedUser); err != nil {
|
||||
logger.Error("[Controller:UpdateUser] %v", err)
|
||||
view.Set("errorMessage", "Unable to update this user.")
|
||||
view.Set("errorMessage", "error.unable_to_update_user")
|
||||
html.OK(w, r, view.Render("edit_user"))
|
||||
return
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue