public inbox for pbs-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [pbs-devel] [PATCH proxmox-backup v2] fix #3103. node config: allow to configure default UI language
@ 2022-01-24 10:09 Matthias Heiserer
  2022-02-03 13:37 ` [pbs-devel] applied: " Thomas Lamprecht
  0 siblings, 1 reply; 2+ messages in thread
From: Matthias Heiserer @ 2022-01-24 10:09 UTC (permalink / raw)
  To: pbs-devel

This language is only used if none is set in the cookies.

Signed-off-by: Matthias Heiserer <m.heiserer@proxmox.com>
---
Changes  from v1:
 Adhere to max length
 Remove trailing whitespace
 Use enum to store available translations
 Add language name to enum variants
 Rename chinese and portugese to same case as in i18 files
 Check for existance of translation file when using default language

 src/bin/proxmox-backup-proxy.rs |  9 ++++
 src/config/node.rs              | 75 ++++++++++++++++++++++++++++++++-
 2 files changed, 82 insertions(+), 2 deletions(-)

diff --git a/src/bin/proxmox-backup-proxy.rs b/src/bin/proxmox-backup-proxy.rs
index 523966cf..382d4507 100644
--- a/src/bin/proxmox-backup-proxy.rs
+++ b/src/bin/proxmox-backup-proxy.rs
@@ -168,6 +168,15 @@ async fn get_index_future(
             lang = language;
         }
     }
+    if lang.is_empty() {
+        if let Ok((config, _)) = proxmox_backup::config::node::config() {
+            if let Some(default) = config.default_lang {
+                if Path::new(&format!("/usr/share/pbs-i18n/pbs-lang-{}.js", default)).exists() {
+                    lang = default;
+                }
+            }
+        }
+    }
 
     let data = json!({
         "NodeName": nodename,
diff --git a/src/config/node.rs b/src/config/node.rs
index 40d7b220..a26f5974 100644
--- a/src/config/node.rs
+++ b/src/config/node.rs
@@ -57,6 +57,69 @@ pub struct AcmeConfig {
     account: AcmeAccountName,
 }
 
+/// All available languages in Proxmox. Taken from proxmox-i18n repository.
+/// pt_BR, zh_CN, and zh_TW use the same case in the translation files.
+// TODO: auto-generate from available translations
+#[api]
+#[allow(non_camel_case_types)]
+#[derive(Serialize, Deserialize)]
+#[serde(rename_all="lowercase")]
+pub enum Translation {
+    /// Arabic
+    Ar,
+    /// Catalan
+    Ca,
+    /// Danish
+    Da,
+    /// German
+    De,
+    /// Spanish
+    Es,
+    /// Euskera
+    Eu,
+    /// Persian (Farsi)
+    Fa,
+    /// French
+    Fr,
+    /// Galician
+    Gl,
+    /// Hebrew
+    He,
+    /// Hungarian
+    Hu,
+    /// Italian
+    It,
+    /// Japanese
+    Ja,
+    /// Korean
+    Kr,
+    /// Norwegian (Bokmal)
+    Nb,
+    /// Dutch
+    Nl,
+    /// Norwegian (Nynorsk)
+    Nn,
+    /// Polish
+    Pl,
+    /// Portuguese (Brazil)
+    #[serde(rename="pt_BR")]
+    Pt_Br,
+    /// Russian
+    Ru,
+    /// Slovenian
+    Sl,
+    /// Swedish
+    Sv,
+    /// Turkish
+    Tr,
+    /// Chinese (simplified)
+    #[serde(rename="zh_CN")]
+    Zh_Cn,
+    /// Chinese (traditional)
+    #[serde(rename="zh_TW")]
+    Zh_Tw,
+}
+
 #[api(
     properties: {
         acme: {
@@ -100,6 +163,10 @@ pub struct AcmeConfig {
             schema: OPENSSL_CIPHERS_TLS_1_2_SCHEMA,
             optional: true,
         },
+        "default-lang" : {
+            schema: Translation::API_SCHEMA,
+            optional: true,
+        }
     },
 )]
 #[derive(Deserialize, Serialize, Updater)]
@@ -127,17 +194,21 @@ pub struct NodeConfig {
 
     #[serde(skip_serializing_if = "Option::is_none")]
     pub http_proxy: Option<String>,
-    
+
     #[serde(skip_serializing_if = "Option::is_none")]
     pub email_from: Option<String>,
 
     /// List of TLS ciphers for TLS 1.3 that will be used by the proxy. (Proxy has to be restarted for changes to take effect)
     #[serde(skip_serializing_if = "Option::is_none", rename="ciphers-tls-1.3")]
     pub ciphers_tls_1_3: Option<String>,
-    
+
     /// List of TLS ciphers for TLS <= 1.2 that will be used by the proxy. (Proxy has to be restarted for changes to take effect)
     #[serde(skip_serializing_if = "Option::is_none", rename="ciphers-tls-1.2")]
     pub ciphers_tls_1_2: Option<String>,
+
+    /// Default language used in the GUI
+    #[serde(skip_serializing_if = "Option::is_none")]
+    pub default_lang: Option<String>,
 }
 
 impl NodeConfig {
-- 
2.30.2





^ permalink raw reply	[flat|nested] 2+ messages in thread

* [pbs-devel] applied: [PATCH proxmox-backup v2] fix #3103. node config: allow to configure default UI language
  2022-01-24 10:09 [pbs-devel] [PATCH proxmox-backup v2] fix #3103. node config: allow to configure default UI language Matthias Heiserer
@ 2022-02-03 13:37 ` Thomas Lamprecht
  0 siblings, 0 replies; 2+ messages in thread
From: Thomas Lamprecht @ 2022-02-03 13:37 UTC (permalink / raw)
  To: Proxmox Backup Server development discussion, Matthias Heiserer

On 24.01.22 11:09, Matthias Heiserer wrote:
> This language is only used if none is set in the cookies.
> 
> Signed-off-by: Matthias Heiserer <m.heiserer@proxmox.com>
> ---
> Changes  from v1:
>  Adhere to max length
>  Remove trailing whitespace
>  Use enum to store available translations
>  Add language name to enum variants
>  Rename chinese and portugese to same case as in i18 files
>  Check for existance of translation file when using default language
> 
>  src/bin/proxmox-backup-proxy.rs |  9 ++++
>  src/config/node.rs              | 75 ++++++++++++++++++++++++++++++++-
>  2 files changed, 82 insertions(+), 2 deletions(-)
> 
>

applied, thanks!

I dropped the need for `#[allow(non_camel_case_types)]` on the enu, as we
have a serde-rename on the affected members anyway, also cleaned up how the
proxy extracts the language stuff, as that was quite convoluted..

FYI, there's still something missing: the api is missing integration for
this in the node config update method, so setting it via API or via
`proxmox-backup-manager node update --default-language it` cannot work yet,
fixing that is quite trivial, can you please send a followup patch for that
and ideally also the GUI support?




^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-02-03 13:37 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-24 10:09 [pbs-devel] [PATCH proxmox-backup v2] fix #3103. node config: allow to configure default UI language Matthias Heiserer
2022-02-03 13:37 ` [pbs-devel] applied: " Thomas Lamprecht

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal