摘要:在寫一個的過程中難免會遇到要做國際化的時候也就是需要根據不同的地區展示不同的文案對于簡單的文本直接用一個或者或者一個變量就能搞定但是有時候需要在一句話中加入變量就比較麻煩或者說比較惡心了比如這樣的情況有個人喜歡了你應運而生其作用是將模板
在寫一個APP的過程中, 難免會遇到要做國際化的時候. 也就是需要根據不同的地區, 展示不同的文案. 對于簡單的文本, 直接用一個xml或者json或者一個變量就能搞定, 但是有時候需要在一句話中加入變量, 就比較麻煩或者說比較惡心了. 比如這樣的情況:
cn: 有xx個人喜歡了你. en: xx People liked you.
i18n-json-compiler應運而生, 其作用是將json模板編譯成TypeScript(或者JavaScript)函數或者字符串.
比如對以下json:
[ { "cn": "你好", "en": "Hello" }, { "cn": "{n}個好友", "en": "{n} friends" }, ]
可以直接編譯出ts文件, 內容大致如下:
export const cn = { Hello: "你好", n_friends: (n: any) => n + "個好友", } export const en = { Hello: "Hello", n_friends: (n: any) => n + " friends", }
在代碼中直接調用相應的屬性或函數即可.
安裝yarn add i18n-json-compiler # 或者使用npm/cnpm npm i -S i18n-json-compiler使用
在命令行中, 執行./node_modules/.bin/i18n, 參數如下:
i18n [options] - Parse i18n json files to typescript files. Options: -i, --input-files The json files to parse [string] [required] -o, --output-dir The directory to emit output [string] [required] -h, --help Show help [boolean] -v, --version Show version number [boolean] --default-lang [string] [default: "cn"]JSON文檔的格式
i18n命令接受參數-i指定輸入文件列表(glob), 比如./strings/*.json, 文件格式為json, 內容為一個數組. 每個數組元素為一組需要編譯的字符串. key為語言, value為值. 值中被{}包起來的地方會被轉換為函數參數, 其格式為{name:type:default}, 其中:
name是必需的, 可以是字符串或數字
type為數據類型, 可以是int, double, string, boolean, any, 默認為any, 即接受任意參數
default為參數默認值
比如:
[ { "cn": "{n:int:1}個人喜歡了你", "en": "{n}people liked you" } ]
得出的結果為:
const n_people_liked_you = (n: int = 1) => n + "個人喜歡了你"輸出格式
i18n接受參數-o指定輸出目錄, 輸入目錄中, 包括一個index.ts文件, 以及若干語言文件夾, 其中index.ts為所用到的文件, 其導出一個變量strings, 結構如下:
export interface I18n例子{ // 設置語言 set(lang: string, defaultLang?: L): void; // 獲取語言下的字符串對象 get(lang: string, defaultLang?: L): T; // 當前語言 lang: L; // 當前語言的字符串結構 value: T; }
參考https://github.com/acrazing/i..., 其中input為輸入目錄, output為輸出目錄. 在代碼中, 只需要:
import { strings } from "./output/index.ts" console.log(strings.value.world.$0_people_liked_you(1))TODO
編譯成js
不同語言參數位置不同
指定名稱key
更多內容, 請穩步 https://github.com/acrazing/i...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/92828.html
摘要:的網站仍然使用有漏洞庫上周發布了開源社區安全現狀報告,發現隨著開源社區的日漸活躍,開源代碼中包含的安全漏洞以及影響的范圍也在不斷擴大。與應用安全是流行的服務端框架,本文即是介紹如何使用以及其他的框架來增強應用的安全性。 showImg(https://segmentfault.com/img/remote/1460000012181337?w=1240&h=826); 前端每周清單專注...
摘要:本國際化方案僅針對技術棧,且不會涉及服務端國際化內容。引入多語言環境的數據雖然我只用到了文本翻譯的功能,以為就不需要加載這些數據,但后來發現這是必須的步驟。 前言 最近新接了一個項目,從0開始做,需要做多語言的國際化,今天搞了一下,基本達到了想要的效果, 在這里簡單分享下: showImg(https://segmentfault.com/img/bVbuiJB); 背景國際化方案國際...
摘要:本國際化方案僅針對技術棧,且不會涉及服務端國際化內容。引入多語言環境的數據雖然我只用到了文本翻譯的功能,以為就不需要加載這些數據,但后來發現這是必須的步驟。 前言 最近新接了一個項目,從0開始做,需要做多語言的國際化,今天搞了一下,基本達到了想要的效果, 在這里簡單分享下: showImg(https://segmentfault.com/img/bVbuiJB); 背景國際化方案國際...
閱讀 2814·2021-11-18 10:02
閱讀 3673·2021-11-15 17:59
閱讀 2306·2021-09-06 15:00
閱讀 3344·2019-08-29 16:58
閱讀 1056·2019-08-26 10:34
閱讀 1581·2019-08-26 10:15
閱讀 1286·2019-08-26 10:11
閱讀 2713·2019-08-23 18:33