1
0
Fork 0
mirror of https://github.com/documize/community.git synced 2025-07-19 13:19:43 +02:00

Implement basic i18n client-side foundation

This commit is contained in:
McMatts 2022-03-01 20:01:06 -05:00
parent 59c929d251
commit 8a25509019
9 changed files with 33 additions and 18 deletions

View file

@ -36,7 +36,7 @@ func GetSMTPConfig(s *store.Store) (c smtp.Config) {
c.SenderEmail, _ = s.Setting.Get("SMTP", "sender") c.SenderEmail, _ = s.Setting.Get("SMTP", "sender")
c.SenderName, _ = s.Setting.Get("SMTP", "senderName") c.SenderName, _ = s.Setting.Get("SMTP", "senderName")
if c.SenderName == "" { if c.SenderName == "" {
c.SenderName = "Documize" c.SenderName = "Documize Community"
} }
// anon auth? // anon auth?

View file

@ -41,7 +41,7 @@ func main() {
rt.Product.Major = "4" rt.Product.Major = "4"
rt.Product.Minor = "2" rt.Product.Minor = "2"
rt.Product.Patch = "3" rt.Product.Patch = "3"
rt.Product.Revision = "220214141054" rt.Product.Revision = "220301191336"
rt.Product.Version = fmt.Sprintf("%s.%s.%s", rt.Product.Major, rt.Product.Minor, rt.Product.Patch) rt.Product.Version = fmt.Sprintf("%s.%s.%s", rt.Product.Major, rt.Product.Minor, rt.Product.Patch)
rt.Product.Edition = domain.CommunityEdition rt.Product.Edition = domain.CommunityEdition
rt.Product.Title = "Community" rt.Product.Title = "Community"

View file

@ -2,7 +2,7 @@
<div class="auth-box"> <div class="auth-box">
<div class="logo"> <div class="logo">
<img src="{{appMeta.endpoint}}/public/logo?cb={{random-id}}" <img src="{{appMeta.endpoint}}/public/logo?cb={{random-id}}"
title="Documize" alt="Documize" class="img-fluid"> title="Community" alt="Community" class="img-fluid">
<div class="url">{{appMeta.title}} ({{appMeta.appHost}})</div> <div class="url">{{appMeta.title}} ({{appMeta.appHost}})</div>
</div> </div>
<div class="login-form"> <div class="login-form">

View file

@ -2,7 +2,7 @@
<div class="auth-box"> <div class="auth-box">
<div class="logo"> <div class="logo">
<img src="{{appMeta.endpoint}}/public/logo?cb={{random-id}}" <img src="{{appMeta.endpoint}}/public/logo?cb={{random-id}}"
title="Documize" alt="Documize" class="img-fluid"> title="Community" alt="Community" class="img-fluid">
<div class="url">{{appMeta.title}} ({{appMeta.appHost}})</div> <div class="url">{{appMeta.title}} ({{appMeta.appHost}})</div>
</div> </div>
{{user/password-reset reset=(action "reset")}} {{user/password-reset reset=(action "reset")}}

View file

@ -12,7 +12,7 @@
{{/if}} {{/if}}
{{#if session.isAdmin}} {{#if session.isAdmin}}
{{ui/ui-toolbar-icon icon=constants.Icon.Settings color=constants.Color.Green {{ui/ui-toolbar-icon icon=constants.Icon.Settings color=constants.Color.Green
tooltip="Documize Community settings" linkTo="customize"}} linkTo="customize"}}
{{/if}} {{/if}}
{{/ui/ui-toolbar}} {{/ui/ui-toolbar}}
{{/if}} {{/if}}
@ -27,20 +27,20 @@
<div class="list"> <div class="list">
<div class="item {{if (eq selectedView "all") "selected"}}" {{action "onSelect" "all"}}> <div class="item {{if (eq selectedView "all") "selected"}}" {{action "onSelect" "all"}}>
<i class={{concat "dicon " constants.Icon.All}} /> <i class={{concat "dicon " constants.Icon.All}} />
<div class="name">All ({{model.spaces.length}})</div> <div class="name">{{localize 'all'}} ({{model.spaces.length}})</div>
</div> </div>
<div class="item {{if (eq selectedView "public") "selected"}}" {{action "onSelect" "public"}}> <div class="item {{if (eq selectedView "public") "selected"}}" {{action "onSelect" "public"}}>
<i class={{concat "dicon " constants.Icon.World}} /> <i class={{concat "dicon " constants.Icon.World}} />
<div class="name">Public ({{publicSpaces.length}})</div> <div class="name">{{localize 'public'}} ({{publicSpaces.length}})</div>
</div> </div>
{{#if session.authenticated}} {{#if session.authenticated}}
<div class="item {{if (eq selectedView "protected") "selected"}}" {{action "onSelect" "protected"}}> <div class="item {{if (eq selectedView "protected") "selected"}}" {{action "onSelect" "protected"}}>
<i class={{concat "dicon " constants.Icon.People}} /> <i class={{concat "dicon " constants.Icon.People}} />
<div class="name">Protected ({{protectedSpaces.length}})</div> <div class="name">{{localize 'protected'}} ({{protectedSpaces.length}})</div>
</div> </div>
<div class="item {{if (eq selectedView "personal") "selected"}}" {{action "onSelect" "personal"}}> <div class="item {{if (eq selectedView "personal") "selected"}}" {{action "onSelect" "personal"}}>
<i class={{concat "dicon " constants.Icon.Person}} /> <i class={{concat "dicon " constants.Icon.Person}} />
<div class="name">Personal ({{personalSpaces.length}})</div> <div class="name">{{localize 'personal'}} ({{personalSpaces.length}})</div>
</div> </div>
{{/if}} {{/if}}
</div> </div>
@ -49,7 +49,7 @@
<Ui::UiSpacer @size="300" /> <Ui::UiSpacer @size="300" />
<div class="section"> <div class="section">
<div class="title">label</div> <div class="title">{{localize 'label'}}</div>
{{#if labels}} {{#if labels}}
<div class="list"> <div class="list">
{{#each labels as |label|}} {{#each labels as |label|}}
@ -62,7 +62,7 @@
{{/each}} {{/each}}
</div> </div>
{{else}} {{else}}
<div class="empty">No labels</div> <div class="empty">{{localize 'no_labels'}}</div>
{{/if}} {{/if}}
</div> </div>
</div> </div>

View file

@ -44,7 +44,7 @@ export default Service.extend({
updateAvailable: false, updateAvailable: false,
// empty theme uses default theme // empty theme uses default theme
theme: '', theme: '',
locale: 'en-US', locale: '',
getBaseUrl(endpoint) { getBaseUrl(endpoint) {
return [this.get('endpoint'), endpoint].join('/'); return [this.get('endpoint'), endpoint].join('/');

View file

@ -20,14 +20,28 @@ export default Service.extend({
}); });
}, },
localize(key) { localize(key, ...args) {
console.log(this.session.locale); console.log(this.session.locale);
let str = "";
switch(this.session.locale) { switch(this.session.locale) {
case "fr-FR": case "fr-FR":
return "unsupported"; str = "";
break;
default: default:
return this.langs.enUS[key]; str = this.langs.enUS[key];
} }
if (str === "") {
console.log("i18n miss", key);
return;
}
for (let i = 0; i < args.length; i++) {
str = str.replace(`{${i+1}}`, args[i]);
}
return str;
}, },
}); });

View file

@ -1,5 +1,5 @@
<div class="installer"> <div class="installer">
<img src="/assets/img/setup/logo-purple.png" srcset="/assets/img/setup/logo-purple@2x.png" alt="Documize Community Setup" style="width: 250px; height: 76px;"> <img src="/assets/img/setup/logo.png" srcset="/assets/img/setup/logo@2x.png" alt="Documize Community Setup" style="width: 250px; height: 76px;">
<Ui::UiSpacer @size="300" /> <Ui::UiSpacer @size="300" />
<h1 class="color-theme-700">Setup</h1> <h1 class="color-theme-700">Setup</h1>
<p class="color-gray-800"> <p class="color-gray-800">
@ -38,7 +38,7 @@
<div class="form-group"> <div class="form-group">
<label for="activation-key">Activation Key</label> <label for="activation-key">Activation Key</label>
{{textarea id="activation-key" value=model.activationKey rows="5" class=(if hasKeyError "form-control is-invalid" "form-control")}} {{textarea id="activation-key" value=model.activationKey rows="5" class=(if hasKeyError "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">You can get it from <a href="https://www.documize.com/downloads" target="_blank">https://www.documize.com/downloads</a></small> <small class="form-text text-muted">You can get from <a href="https://www.documize.com/community" target="_blank">https://www.documize.com/community</a></small>
</div> </div>
{{/if}} {{/if}}
{{ui/ui-button submit=true color=constants.Color.Green light=true label=buttonLabel onClick=(action "save")}} {{ui/ui-button submit=true color=constants.Color.Green light=true label=buttonLabel onClick=(action "save")}}

View file

@ -45,4 +45,5 @@ type SiteMeta struct {
Location string `json:"location"` // reserved for internal use Location string `json:"location"` // reserved for internal use
Theme string `json:"theme"` // default side-wide theme, user overrideble Theme string `json:"theme"` // default side-wide theme, user overrideble
Configured bool `json:"configured"` // is Documize instance configured Configured bool `json:"configured"` // is Documize instance configured
Locale string `json:"locale"` // server default locale
} }