The JavaScript version of Open Chinese Convert (OpenCC)
Import
Import opencc-js in HTML page
Import in HTML pages:
<script src="https://cdn.jsdelivr.net/npm/opencc-js@1.0.5/dist/umd/full.js"></script> <!-- Full version --> <script src="https://cdn.jsdelivr.net/npm/opencc-js@1.0.5/dist/umd/cn2t.js"></script> <!-- For Simplified to Traditional --> <script src="https://cdn.jsdelivr.net/npm/opencc-js@1.0.5/dist/umd/t2cn.js"></script> <!-- For Traditional Chinese to Simplified Chinese -->
ES6 import
<script type="module"> import * as OpenCC from './dist/esm/full.js'; // Full version import * as OpenCC from './dist/esm/cn2t.js'; // For Simplified to Traditional import * as OpenCC from './dist/esm/t2cn.js'; // For Traditional Chinese to Simplified Chinese </script>
Import opencc-js in Node.js script
CommonJS
const OpenCC = require('opencc-js');
ES Modules
import * as OpenCC from 'opencc-js';
Usage
Basic usage
// Convert Traditional Chinese (Hong Kong) to Simplified Chinese (Mainland China) const converter = OpenCC.Converter({ from: 'hk', to: 'cn' }); console.log(converter('漢語')); // output: 汉语
Custom Converter
const converter = OpenCC.CustomConverter([ ['香蕉', 'banana'], ['蘋果', 'apple'], ['梨', 'pear'], ]); console.log(converter('香蕉 蘋果 梨')); // output: banana apple pear
Or using space and vertical bar as delimiter.
const converter = OpenCC.CustomConverter('香蕉 banana|蘋果 apple|梨 pear'); console.log(converter('香蕉 蘋果 梨')); // output: banana apple pear
Add words
- Use low-level function
ConverterFactoryto create converter. - Get dictionary from the property
Locale.
const customDict = [ ['“', '「'], ['”', '」'], ['‘', '『'], ['’', '』'], ]; const converter = OpenCC.ConverterFactory( OpenCC.Locale.from.cn, // Simplified Chinese (Mainland China) => OpenCC standard OpenCC.Locale.to.tw.concat([customDict]) // OpenCC standard => Traditional Chinese (Taiwan) with custom words ); console.log(converter('悟空道:“师父又来了。怎么叫做‘水中捞月’?”')); // output: 悟空道:「師父又來了。怎麼叫做『水中撈月』?」
This will get the same result with an extra convertion.
const customDict = [ ['“', '「'], ['”', '」'], ['‘', '『'], ['’', '』'], ]; const converter = OpenCC.ConverterFactory( OpenCC.Locale.from.cn, // Simplified Chinese (Mainland China) => OpenCC standard OpenCC.Locale.to.tw, // OpenCC standard => Traditional Chinese (Taiwan) [customDict] // Traditional Chinese (Taiwan) => custom words ); console.log(converter('悟空道:“师父又来了。怎么叫做‘水中捞月’?”')); // output: 悟空道:「師父又來了。怎麼叫做『水中撈月』?」
DOM operations
HTML attribute lang='*' defines the targets.
<span lang="zh-HK">漢語</span>
// Set Chinese convert from Traditional (Hong Kong) to Simplified (Mainland China) const converter = OpenCC.Converter({ from: 'hk', to: 'cn' }); // Set the conversion starting point to the root node, i.e. convert the whole page const rootNode = document.documentElement; // Convert all elements with attributes lang='zh-HK'. Change attribute value to lang='zh-CN' const HTMLConvertHandler = OpenCC.HTMLConverter(converter, rootNode, 'zh-HK', 'zh-CN'); HTMLConvertHandler.convert(); // Convert -> 汉语 HTMLConvertHandler.restore(); // Restore -> 漢語
API
.Converter({}): declare the converter's direction via locals.- default:
{ from: 'tw', to: 'cn' } - syntax :
{ from: local1, to: local2 }
- default:
- locals: letter codes defining a writing local tradition, occasionally its idiomatic habits.
cn: Simplified Chinese (Mainland China)tw: Traditional Chinese (Taiwan)twp: with phrase conversion (ex: 自行車 -> 腳踏車)
hk: Traditional Chinese (Hong Kong)jp: Japanese Shinjitait: Traditional Chinese (OpenCC standard. Do not use unless you know what you are doing)
.CustomConverter([]): defines custom dictionary.- default:
[] - syntax :
[ ['item1','replacement1'], ['item2','replacement2'], … ]
- default:
.HTMLConverter(converter, rootNode, langAttrInitial, langAttrNew ): uses previously defined converter() to converts all HTML elements text content from a starting root node and down, into the target local. Also converts all attributeslangfrom existinglangAttrInitialtolangAttrNewvalues.langattributes : html attribute defines the languages of the text content to the browser, at start (langAttrInitial) and after conversion (langAttrNew).- syntax convention: IETF languages codes, mainly
zh-TW,zh-HK,zh-CN,zh-SG,…
- syntax convention: IETF languages codes, mainly
ignore-opencc: html class signaling an element and its sub-nodes will not be converted.
Bundle optimization
- Tree Shaking (ES Modules Only) may result less size of bundle file.
- Using
ConverterFactoryinstead ofConverter.
import * as OpenCC from 'opencc-js/core'; // primary code import * as Locale from 'opencc-js/preset'; // dictionary const converter = OpenCC.ConverterFactory(Locale.from.hk, Locale.to.cn); console.log(converter('漢語'));