All Projects → babyblue94520 → translate-go

babyblue94520 / translate-go

Licence: MIT license
https://babyblue94520.github.io/translate-go/dist/

Programming Languages

typescript
32286 projects
javascript
184084 projects - #8 most used programming language
SCSS
7915 projects
HTML
75241 projects

Projects that are alternatives of or similar to translate-go

Texterify
The localization management system.
Stars: ✭ 37 (+164.29%)
Mutual labels:  i18n, translate
react-text-translator
An experimental way to translate text inside React components with context
Stars: ✭ 15 (+7.14%)
Mutual labels:  i18n, translate
vue-translated
Internationalization (i18n) and localization (l10n) library for Vue.js v2.
Stars: ✭ 19 (+35.71%)
Mutual labels:  i18n, translate
deepl-php-lib
🧠 DeepL API Client Library supporting PHP >= 7.3
Stars: ✭ 50 (+257.14%)
Mutual labels:  i18n, translate
React Translated
A dead simple way to add complex translations (i18n) in a React (DOM/Native) project 🌎🌍🌏
Stars: ✭ 176 (+1157.14%)
Mutual labels:  i18n, translate
React Intl Hooks
React hooks for internationalization without the hassle ⚛️🌍
Stars: ✭ 64 (+357.14%)
Mutual labels:  i18n, translate
tr4n5l4te
Use Google Translate without an API key.
Stars: ✭ 32 (+128.57%)
Mutual labels:  i18n, translate
Deeply
PHP client for the DeepL.com translation API (unofficial)
Stars: ✭ 152 (+985.71%)
Mutual labels:  i18n, translate
Flutter translate
Flutter Translate is a fully featured localization / internationalization (i18n) library for Flutter.
Stars: ✭ 245 (+1650%)
Mutual labels:  i18n, translate
background-translation-i18n
Based on the YII2 module to translate JSON formatted translation files on the web
Stars: ✭ 11 (-21.43%)
Mutual labels:  i18n, translate
go-localize
i18n (Internationalization and localization) engine written in Go, used for translating locale strings.
Stars: ✭ 45 (+221.43%)
Mutual labels:  i18n
elm-format-number
✨Format numbers as pretty strings
Stars: ✭ 56 (+300%)
Mutual labels:  i18n
LorittaLocales
🌎 Loritta's localization files, bringing Loritta's cuteness to everyone around the world!
Stars: ✭ 21 (+50%)
Mutual labels:  i18n
i18n-unused
The static analyze tool for finding, marking and removing unused and missing i18n translations in your JavaScript project
Stars: ✭ 76 (+442.86%)
Mutual labels:  i18n
fyodor
Convert your Amazon Kindle highlights and notes into markdown (or any format).
Stars: ✭ 101 (+621.43%)
Mutual labels:  i18n
awesome-translations
😎 Awesome lists about Internationalization & localization stuff. l10n, g11n, m17n, i18n. Translations! 🌎🌍
Stars: ✭ 54 (+285.71%)
Mutual labels:  i18n
advanced-spring-scaffold
This project provides an advanced baseline to help you kick start a Spring project.
Stars: ✭ 21 (+50%)
Mutual labels:  i18n
D-i18n
前端国际化通用解决方案。抹平不同前端开发技术栈所带来的差异。
Stars: ✭ 85 (+507.14%)
Mutual labels:  i18n
vue-translations
VueJs translations very similar to Laravel Translation system
Stars: ✭ 15 (+7.14%)
Mutual labels:  i18n
JSON-i18n-Editor
Translate your i18n JSONs for your website or app with this tool
Stars: ✭ 29 (+107.14%)
Mutual labels:  i18n

TranslateGO

純前端多語系輔助工具

npm網址:https://www.npmjs.com/package/translate-go

git網址:https://github.com/babyblue94520/translate-go

DEMO:https://babyblue94520.github.io/translate-go/dist/

前言

        本身是Java後端開發工程師,碰過一些多語系的架構設計,老實說真的很麻煩,很多前後端程式都必須依賴原開發專案多語架構下去開發,就連原本沒有多語系的專案要導入多語系,也需要大改,於是開發這個純前端的多語套件,只要 translate-go.js 加上自行翻譯的語言包,就可以讓專案有多語的功能!

目的

利用TranslateGO快速搜尋需要被翻譯的文字,再利用TranslateGO ToolBar快速製作多語系JS檔、TS檔。

翻譯範圍

  1. HTMLElement的innerText
  2. Input placeholder
  3. window.alert
  4. window.confirm

一. 安裝

在自己的網站需要翻譯的頁面,增加以下程式碼:

JavaScript

直接下載,放進專案目錄。

一般使用

<script type="text/javascript" src="js/translate-go.min.js"></script>
<script type="text/javascript">
	// 開發模式
	TranslateModule.TranslateConfig.dev = true;

	// 預設使用語系
	TranslateModule.TranslateConfig.defaultLanguage = 'zh_TW';
	var translateGO = TranslateModule.getTranslateGO();
	// 開始監聽
	translateGO.start();
</script>

開發模式

<script type="text/javascript" src="js/translate-toolbar.js"></script>
<script type="text/javascript" src="js/translate-go.min.js"></script>
<script type="text/javascript">
	// 開發模式
	TranslateModule.TranslateConfig.dev = true;
	// 預設使用語系
	TranslateModule.TranslateConfig.defaultLanguage = 'zh_TW';
	// 取得TranslateGO 
	var translateGO = TranslateModule.getTranslateGO();
	// 開始監聽
	translateGO.start();
	// 產生translate-toolbar element
	if(TranslateModule.TranslateConfig.dev){
		document.body.appendChild(docuemnt.createElement('translate-toolbar'));
	}
</script>

Angular TypeScript

安裝

npm install translate-go@latest

一般使用

任意開始 *.ts ex: app.module.ts

import { getTranslateGO,TranslateConfig } from 'translate-go';

// 預設使用語系
TranslateConfig.defaultLanguage = 'zh_TW';
let translateGO = getTranslateGO();
// 開始監聽
translateGO.start();

開發模式

angular.json

"architect": {
    "build": {
        "scripts": [{
          "input": "node_modules/translate-go/lib/translate-toolbar.js"
        }]
    },

切記正式環境設定要移除 scripts

"configurations": {
	"production": {
    	"scripts": []
	}
}

任意開始 *.ts ex: app.module.ts

import { getTranslateGO,TranslateConfig } from 'translate-go';

// 開發模式
TranslateConfig.dev = true;
// 預設使用語系
TranslateConfig.defaultLanguage = 'zh_TW';
// 取得TranslateGO 
let translateGO = getTranslateGO();
// 開始監聽
translateGO.start();
// 產生translate-toolbar element
if(TranslateModule.TranslateConfig.dev){
	document.body.appendChild(docuemnt.createElement('translate-toolbar'));
}

二. 蒐集需要翻譯字串

在開發模式下,左下角會出現工具列,利用該工具編輯翻譯檔

  1. 語系下拉選單:

    • 列出目前有的翻譯資料語系,切換可轉換語系。
  2. Start:

    • 進入開發模式,開始蒐集無法翻譯的資料。
    • 開始監聽DOM insert、modify和remove事件並翻譯。
  3. Stop:

    • 關閉開發模式,停止蒐集無法翻譯的資料。
    • 停止監聽DOM insert、modify和remove事件。
  4. Refresh:

    • 載入window底下__translateGO_開頭的翻譯資料到 Tool
    • 列出無法翻譯的資料到 Tool 裡。
    • Tool 裡編輯好的翻譯資料載入到 TranslateGO
  5. Tool:

    • 開啟編輯翻譯資料頁面。

三. 加載部分翻譯檔案

加載已產生的翻譯資料,反覆搜尋是否有遺漏的。

JavaScript

<script type="text/javascript" src="js/translate-go.min.js"></script>
<script type="text/javascript" src="js/TranslateSourceAll.js"></script>
<script type="text/javascript">
	// 預設使用語系
	TranslateConfig.defaultLanguage = 'zh_TW';
	// 取得TranslateGO 
	var translateGO = TranslateModule.getTranslateGO();
	// 載入翻譯資料
	translateGO.reload(TranslateSourceAll);
	// or
	// 將自動載入所有在window.__translateGO_開頭的翻譯資料
	translateGO.reload();
    // 開始監聽
	translateGO.start();
</script>

TypeScript

import { getTranslateGO,TranslateConfig } from 'translate-go';
import { TranslateSourceAll } from 'ts/translate/TranslateSourceAll';

// 預設使用語系
TranslateConfig.defaultLanguage = 'zh_TW';
// 取得TranslateGO 
let translateGO = getTranslateGO();
// 載入翻譯資料
translateGO.reload(TranslateSourceAll);
// or
// 將自動載入所有在window.__translateGO_開頭的翻譯資料
translateGO.reload();
// 開始監聽
translateGO.start();

四. 開始使用:

JavaScript

<script type="text/javascript" src="js/translate-go.min.js"></script>
<script type="text/javascript" src="js/TranslateSourceAll.js"></script>
<script type="text/javascript">
	// 用英文語系最明顯,true:產生右下角的toolbar
	var translateGO = TranslateModule.getTranslateGO();
    // 加載翻譯資料
	translateGO.reload();
	// 開始監聽
	translateGO.start();
    
	// 其他使用方式
    var testText = translateGO.getText('測試');// return 'test';
    // or
    var testText = translateGO.getTextByKey('testKey');// return 'test';
    // or
    var testText = TranslateSourceAll['testKey']['zh_TW'];
</script>

TypeScript

import {  getTranslateGO,TranslateConfig } from 'translate-go';
import { TranslateSourceAll } from 'ts/translate/TranslateSourceAll';

// 預設使用語系
TranslateConfig.defaultLanguage = 'zh_TW';
// 取得TranslateGO 
let translateGO = getTranslateGO();
// 加載翻譯資料
translateGO.reload();
// 開始監聽
translateGO.start();

// 其他使用方式
let testText = translateGO.getText('測試');// return 'test';
// or
let testText = translateGO.getTextByKey('testKey');// return 'test';
// or
let testText = TranslateSourceByLang.testKey.zh_TW;

JavaScript偷懶步驟

直接打開Chrome DevTools 貼上下面程式碼

var source = document.createElement('script');
source.src = 'https://babyblue94520.github.io/translate-go/lib/translate-toolbar.js';
source.onload = function(){
	document.body.appendChild(document.createElement('translate-toolbar'));
}
document.head.appendChild(source);

使用密技

  1. 開啟要製作翻譯資料的網站,直接打開Chrome DevTools(F12),貼上 JavaScript偷懶步驟 執行。

  2. 左下角工具列,點擊 Start 開始蒐集需要翻譯文字

  3. 點擊 Tool ,將 未處理 中要翻譯的文字,切換群組到 All

  4. 新增所有需要的語系

  5. 點擊有資料欄位上的 列出 ,將 列出textarea 內的文字複製到 Google翻譯 (:每組文字都是換行隔開)

  6. 翻譯成對象語系後,將翻譯後的資料直接複製到 列出 上的 textarea載入

  7. Key的部分必須為英文

  8. 完成所有語系的文字翻譯後,點擊左下角工具列 Refresh ,再點擊 Tool 關閉視窗

  9. 透過工具列上的 語系下拉選單 切換當前語系

  10. 翻譯資料製作完成後,透過 Tool 內的下載功能,保存翻譯資料

TranslateGO功能以下:

  1. translate

    直接翻譯語言包裡有的文字。

     translateGO.translate('zh_TW');
    
  2. start

    監聽所有DOM增加、減少和改變的事件,動態翻譯文字。

     translateGO.start();
    
  3. stop

    停止監聽DOM insert、modify和remove事件。

     translateGO.stop();
    
  4. reload

    重新載入翻譯資料,如果沒有傳入翻譯資料,則自動載入當前 window.__translateGO_開頭的翻譯資料

     translateGO.reload({key:{""zh-TW"":"text"}});
    
  5. getText

    取得當前語系的文字。

     translateGO.getText('Test');//return '測試';
    
  6. getTextByKey

    依Key取得當前語系的文字。

     translateGO.getTextByKey('key');//return '測試';
    
  7. getLanguage

    取得當前語系。

     translateGO.getLanguage();//return 'zh-TW';
    
  8. getNonTranslateText

    取得無法翻譯的資料,搭配快速建立翻譯資源檔,快速建立翻譯檔。

     translateGO.getNonTranslateText();//return {"zh-TW":{"key":"text"}};
    

Translate Toolbar功能介紹

  1. 檔名&變數名稱前綴

    合併下載 的檔案名稱和變數名稱

  2. 載入翻譯資源

    點擊跳出視窗,貼上你下載的翻譯JS檔的內容並載入

  3. 載入當前翻譯資源

    自動載入當前 window.__translateGO_開頭的翻譯資料

  4. 合併下載JS

    將所有翻譯群組合併成一個 *.js 檔案並下載

  5. 合併下載TS

    將所有翻譯群組合併成一個 *.ts 檔案並下載

  6. 檢查

    檢查當前所有群組內是否有重複的Key

  7. 新增語系

    為目前所有群組的翻譯資料新增語系

  8. 新增群組

    將翻譯資料依類型設定群組,增加可維護性與檔案大小的切割

  9. 切換群組

    將該組翻譯資料設定到指定群組裡

  10. 下載JS

    將當前群組的翻譯資料,獨立下載成 檔名&變數名稱前綴 + 群組名稱.js 檔案

  11. 下載TS

    將當前群組的翻譯資料,獨立下載成 檔名&變數名稱前綴 + 群組名稱.ts 檔案

  12. 刪除

    刪除整個群組

  13. 新增翻譯

    在當前群組下,新增一組翻譯資料

  14. 清除翻譯

    清除當前群組所有翻譯資料

  15. 表格欄位上的 列出

    將該欄的所以文字以 換行 隔開,輸出在上面的 textarea

  16. 表格欄位上的 載入

    將該欄的 textarea 的內容,依順序更新到每個翻譯資料

相容性:

  1. 目前translate-go支持到IE9
  2. translate-toolbar只支持chrome

其他:

  1. 就算是TS環境,也務必下載JS檔留存

  2. 設定不需要翻譯的區塊

    //不做翻譯區塊

    <div notTranslate>
    	<div>
    		...
    	</div>
    </div>
    
  3. 指定翻譯Key

    <div>TestKey</div>
    // or
    <div translateKey="TestKey"></div>
    
    
  4. placeholder指定翻譯Key

    <input placeholder="TestKey">
    // or
    <input placeholderTranslateKey="TestKey">
    
    
  5. 保留部分文字不翻譯

    原文

     Clare 您確定要這麼刪除 Steven 好友嗎?
     刪除 Steven 好友失敗!
    

    翻譯資源

     // 利用 (.+) 保留中間的文字
    
     // en
     Deleting(.+)friends failed!
     (.+)Are you sure you want to delete(.+)friends like this?
     // zh_TW
     刪除(.+)好友失敗!
     (.+)您確定要這麼刪除(.+)好友嗎?
    
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].