国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

i18n-json-compiler 一個為TypeScript編寫的國際化方案

Zack / 1166人閱讀

摘要:在寫一個的過程中難免會遇到要做國際化的時候也就是需要根據不同的地區展示不同的文案對于簡單的文本直接用一個或者或者一個變量就能搞定但是有時候需要在一句話中加入變量就比較麻煩或者說比較惡心了比如這樣的情況有個人喜歡了你應運而生其作用是將模板

在寫一個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

相關文章

  • 前端每周清單第 41 期 : Node 與 Rust、OpenCV 火花,網絡安全二三事

    摘要:的網站仍然使用有漏洞庫上周發布了開源社區安全現狀報告,發現隨著開源社區的日漸活躍,開源代碼中包含的安全漏洞以及影響的范圍也在不斷擴大。與應用安全是流行的服務端框架,本文即是介紹如何使用以及其他的框架來增強應用的安全性。 showImg(https://segmentfault.com/img/remote/1460000012181337?w=1240&h=826); 前端每周清單專注...

    syoya 評論0 收藏0
  • Webpack附錄

    摘要:附錄查看所有文檔頁面全棧開發,獲取更多信息。常用用于修改行為定義環境變量,在區分環境中有介紹。開啟功能,在開啟中有介紹。借鑒的思想大幅度提升構建速度,在使用中有介紹。集成到項目中,在檢查代碼中有介紹。 Webpack附錄 查看所有文檔頁面:全棧開發,獲取更多信息。原文鏈接:webpack原理,原文廣告模態框遮擋,閱讀體驗不好,所以整理成本文,方便查找。 常用 Loaders 加載文件 ...

    dack 評論0 收藏0
  • React項目際化(antd)多語言開發

    摘要:本國際化方案僅針對技術棧,且不會涉及服務端國際化內容。引入多語言環境的數據雖然我只用到了文本翻譯的功能,以為就不需要加載這些數據,但后來發現這是必須的步驟。 前言 最近新接了一個項目,從0開始做,需要做多語言的國際化,今天搞了一下,基本達到了想要的效果, 在這里簡單分享下: showImg(https://segmentfault.com/img/bVbuiJB); 背景國際化方案國際...

    tracymac7 評論0 收藏0
  • React項目際化(antd)多語言開發

    摘要:本國際化方案僅針對技術棧,且不會涉及服務端國際化內容。引入多語言環境的數據雖然我只用到了文本翻譯的功能,以為就不需要加載這些數據,但后來發現這是必須的步驟。 前言 最近新接了一個項目,從0開始做,需要做多語言的國際化,今天搞了一下,基本達到了想要的效果, 在這里簡單分享下: showImg(https://segmentfault.com/img/bVbuiJB); 背景國際化方案國際...

    wushuiyong 評論0 收藏0

發表評論

0條評論

Zack

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<