Hybrid應用,WEB部分的國際化

2021-07-25 08:54:32 字數 2662 閱讀 1429

我們現在的應用已經有一部分功能hybrid化了,之前也說過,有客戶需要國際版的,我這邊需要支援到多語言切換。

當時寫了一點**(把中文的東西抓出來,給翻譯,所以原生部分在哪個時候已經基本解決了。從中文版切換到英文版,只需要到系統設定裡面切換下語言就行。雖然還有一點細節,但是這裡就不攤開了。

之前翻譯一直沒出來,所以,web這邊的國際化也就一直掛著。

web這邊的國際化有幾種方案的,原理都是把文字等東西資源化。

第一種:

就像msdn上的做法一樣

原理應該是通過路由來定位給到對應的網頁

global.asax.cs

public static void registerroutes(routecollection routes)

.axd/");

routes.maproute(

"globalization", // 路由名稱

"///", // 帶有引數的 url

new , // 引數預設值

new (-[a-za-z])?$" } //引數約束

); routes.maproute(

"default", // 路由名稱

"//", // 帶有引數的 url

new // 引數預設值

);}

(**來自:

這種的好處是,可以有針對性的給頁面,官方也是這樣用的。不過問題可能就是出在會改變鏈結上,加了乙個字首,所以之前**中寫了不少絕對路徑,例如(/order/index)都要改一輪,原生那邊也要跟著改一輪,切換語言時也要手動改一輪。

第二種:

通過accept-language的第乙個語言來確定系統當前優先使用的語言

private string innergetfirstacceptlanguageinrequest() }}

}return language;

}

accept-language第乙個值 在chrome中可以這樣設定

在手機中就是系統語言了。

然後在把獲取到的語言資訊同步到cookie、c#中

private void innerupdateculture(string language)

else

}//update culture in c#

if (!string.isnullorempty(language))

}

然後c#上的資源就自動轉過去了,js上如果需要國際化的資訊,就可以從cookie中拿

tools.ischinese = function() 

*/protected void internationalization()

/inner

private string innergetfirstacceptlanguageinrequest() }}

}return language;

}private void innerupdateculture(string language)

else

}//update culture in c#

if (!string.isnullorempty(language))}}

}

然後全部的controller都要繼承它,每個方法都要呼叫internationalization,例如

step3、找出專案中的全部中文字元,資源化它。

厚臉皮的說,我年初開始寫web的時候,雖然web是新手,但是原生那邊有一些經驗,所以一開始上來都是直接用資源、用string.format去寫,所以這一步反而沒什麼工作量。

如果需要找出來,可以參考我這篇部落格(

step4、頁面細節調整。

替換過後,每個頁面都要看看,真會頁面錯亂,文字溢位的。

中午吃飯的時候,我們幾個小夥伴的討論這個,pc端的小夥伴有個意見:這裡應該保留乙個配置,如果一定要指定中文版或者英文版,要給指定到。

我雖然是拒絕的,因為現在產品saas化,不可能在針對某個酒店給配置了。然而考慮到我就要離職了,不要給接手的小夥伴造成困擾,我還是留了配置。

在basecontroller中,關掉 enbaleautoswitchlanguage 選項,或者

/*

* if any need?

protected void onlyenglish()

*/

然後今天的大部分時間都在弄step3、step4,東西不少,翻譯那邊也要協助搞,必然是耗時的。

by yeshen 2016.12.13

Web應用的本質

了解了http協議和html文件,我們其實就明白了乙個web應用的本質就是 瀏覽器傳送乙個http請求 伺服器收到請求,生成乙個html文件 伺服器把html文件作為http響應的body傳送給瀏覽器 瀏覽器收到http響應,從http body取出html文件並顯示。所以,最簡單的web應用就是先...

10 步帶你做乙個棒棒的 Hybrid 應用

本文講的是10 步帶你做乙個棒棒的 hybrid 應用,james miller 介紹了 10 條建議以助你得到最佳成果。原始且最受歡迎的開源 hybrid 框架。js apis 可呼叫手機原生功能。它有助力開發跨平台應用的 cli。phonegap 是在 cordova 基礎上構建的 adobe ...

Web桌面應用框架2 著名的WEB桌面應用分析

前一篇文章裡,分析了包括nw.js和electron這種純js框架在內的幾種web桌面應用開發方式,實際上還有一種最古老的方式,那就是嵌入webview的方式。嵌入webview的方式和整個程式都是web視窗不同,僅在視窗的部分子視窗使用webview,和原生ui或directui結合的方式。這種在...