Metadata-Version: 2.1
Name: Create-Multi-Langs
Version: 0.1.1
Summary: Create-Multi-Langs is a library for creating code file from translated csv file.
Home-page: https://github.com/mychiux413/create-multi-langs
Author: Yihua Chiu
Author-email: mychiux413@gmail.com
License: UNKNOWN
Description: # Create-Multi-Langs
        
        Create-Multi-Langs is a package to create code for multi-lingual sites development, 
        
        ## Features
        - Use CSV file grid table as translated source data instead of JSON to better manage translations.
        - Output code language support python, go, javascript(ES6), typescript.
        - No more map or dict like so, but use property to get `code intelligence`.
        - Support watching mode for source csv file.
        
        ## Install
        ```
        pip install create-multi-langs
        ```
        
        
        ## Prepare Data
        
        prepare csv data by yourself, liek `valid_format.csv`:
        
        | _field | zh-tw | en | _note |
        |--------|-------|----|-------|
        | SelectLang | 繁體中文 | English | # select language |
        | Login | 登入 | Login | used for login button |
        | Hello | 您好,歡迎 | Hello,Welcome | pop up greeting message |
        
        * Use CSV file as source data, a grid table is easier to manage for multi-lingual application.
        * `_field` and `_note` are preserved column names, others column names are considered as language code
        * the values under column `_field`, will become the field name in code file, but constraint the name with common naming rule of which language
        * the values under column `_note`, will become the comment for code docs
        
        ## Usage
        ```bash
        create-multi-langs valid_format.csv generated.py
        ```
        * support output language: `typscript`, `javascript`, `go`, `python`
        * the generated code is determined by your output filename extension like: .py .go .js .ts .mjs
        
        
        ## Testing
        import from generated.py:
        ```python
        from generated import MultiLangs, ZH_TW, EN
        
        ml = MultiLangs(ZH_TW)
        assert ml.hello == "您好,歡迎"
        assert ml.login == "登入"
        assert ml.select_lang == "繁體中文"
        
        ml.set_lang(EN)
        assert ml.hello == "Hello,Welcome"
        assert ml.login == "Login"
        assert ml.select_lang == "English"
        ```
        
        import from generated.js:
        ```javascript
        import { ml, setLang } from "./generated_frontend.mjs"
        
        var compare = function(expect_value, actual_value) {
            if (expect_value !== actual_value) {
                return `[Error] expect '${expect_value}' but got '${actual_value}'\n`
            }
            return ""
        }
        
        var errs = ""
        errs += compare(ml.hello, "您好,歡迎")
        errs += compare(ml.login, "登入")
        errs += compare(ml.selectLang, "繁體中文")
        setLang("en")
        errs += compare(ml.hello, "Hello,Welcome")
        errs += compare(ml.login, "Login")
        errs += compare(ml.selectLang, "English")
        
        if (errs !== "") {
            throw errs
        }
        ```
        
        import from generated.ts:
        ```typescript
        import { ml, setLang } from "./generated_frontend"
        
        const compare = (expect_value: string, actual_value: string): string => {
            if (expect_value !== actual_value) {
                return `[Error] expect '${expect_value}' but got '${actual_value}'\n`
            }
            return ""
        }
        
        let errs = ""
        errs += compare(ml.hello, "您好,歡迎")
        errs += compare(ml.login, "登入")
        errs += compare(ml.selectLang, "繁體中文")
        setLang("en")
        errs += compare(ml.hello, "Hello,Welcome")
        errs += compare(ml.login, "Login")
        errs += compare(ml.selectLang, "English")
        
        if (errs !== "") {
            throw errs
        }
        ```
        
        import from generated.go:
        ```go
        package generated
        
        import "testing"
        import "github.com/stretchr/testify/assert"
        
        func TestGenerated(t *testing.T) {
        	ml := NewMultiLangs(ZHTW)
        	assert.Equal(t, "您好,歡迎", ml.Hello)
        	assert.Equal(t, "登入", ml.Login)
        	assert.Equal(t, "繁體中文", ml.SelectLang)
        	ml.SetLang(EN)
        	assert.Equal(t, "Hello,Welcome", ml.Hello)
        	assert.Equal(t, "Login", ml.Login)
        	assert.Equal(t, "English", ml.SelectLang)
        }
        ```
        
        ## Help
        ```shell
        $ create-multi-langs --help
        usage: create-multi-langs [-h] [--backend] [--py_typing] [--watch] [--sep SEP]
                                  [--naming_rule NAMING_RULE]
                                  from_csv to_file
        
        Running DeepSpeech inference.
        
        positional arguments:
          from_csv              Generate script from csv
          to_file               generate file path, support ext: .go .py .js .ts .mjs
        
        optional arguments:
          -h, --help            show this help message and exit
          --backend, -b         Default is generate frontend script for js/ts
          --py_typing, -t       Default is generate python script without typing
          --watch, -w           Watch csv file changed
          --sep SEP, -s SEP     CSV seperated punctuation
          --naming_rule NAMING_RULE, -n NAMING_RULE
                                specify your property style, [valid options]
                                `ucc`(UpperCamelCase), `lcc`(lowerCamelCase),
                                `upper`(ALL_UPERCASE_UNDERSCORE),
                                `lower`(all_lowercase_underscore) [default setting]
                                Go: `ucc`, Python: `lower`, Typescript: `lcc`,
                                javascript: `lcc`
        ```
Platform: any
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Classifier: Topic :: Software Development :: Code Generators
Classifier: Typing :: Typed
Requires-Python: >=3.5
Description-Content-Type: text/markdown
