wuxue107/nop-i18n

There is no license information available for the latest version (2.0.1) of this package.

Maintainers

Details

gitee.com/wuxue107/nop-i18n.git

Installs: 7

Dependents: 0

Suggesters: 0

Security: 0

Type:composer-plugin

2.0.1 2024-04-26 05:18 UTC

This package is not auto-updated.

Last update: 2024-04-26 05:19:41 UTC


README

  • 可以为项目提供国际化翻译支持

功能:

  1. 抽取源代码中的i18n标记,加入i18n-messages文件中
  2. 补充缺失并根据基准语言翻译i18n-messages文件中的值
  3. 导出i18n-messages文件到Excel或Json(人工校验)
  4. 导入Excel或Json到i18n-messages文件(人工校验后,确认后导入)

安装

    composer require --dev wuxue107/nop-i18n
    ## 安装过后,执行 composer 观察是否已经显示子命令 nop-i18n,
    ## 如果有则表示安装成功,安装后,会在当前目录下,生成一个i18n-config.php配置示例文件
    ## 具体配置文件,见《配置》章节

配置

  • 参考 i18n-config.sample.php

使用

  • 使用说明
    
    

nop-i18n

公共选项:
   --name[=NAME]              指定操作的项目, 根据项目名称 (可以有多个值)                                       
   --group[=GROUP]            指定操作的项目, 根据项目分组名称 (可以有多个值)                   
   

nop-i18n:export 导出 i18n messages 到文件 (xlsx/json)

Options:                                                                                                                                               
  --export[=EXPORT]     指定导出的文件格式: excel/json/file-path.[json|xlsx] (可以有多个值)   

Example: 
    # 导出组名app的所有项目i18n-messages到excel和json文件
    1. composer nop-i18n:export --group=app --export=excel --export=json
    # 导出名称为app-api的项目i18n-messages 到/exports/{app}-{group}-{datetimeMark}.json的JSON格式文件
    2. composer nop-i18n:export --name=app-api --name=api-web --export=./exports/{app}-{group}-{datetimeMark}.json

nop-i18n:import 提供导入外部文件(xlsx/json) 到 i18n messages

Options:
  --import[=IMPORT_FILE_PATH] 指定要导入文件. 格式: xlsx/json
  --overwrite      覆盖, 如果key存在于i18n message文件中,并不存在与导入的文件中
                   那么导入后,这个key将被删除 
  --backup         备份 i18n message 文件 
  --key-sort       在保存i18n message文件之前,将根据键进行排序
  
Example: 
    # 导入经人工校验的excel文件
    1. composer nop-i18n:import --name=app-api --import=/a/b/app-api-202401010000.xlsx

nop-i18n:extract 提供从源码中提取i18n messages的功能

Options:
  --overwrite      覆盖, 如果key存在于i18n message文件中,并不存在与导入的文件中
                   那么导入后,这个key将被删除 
  --backup         备份 i18n message 文件 
  --key-sort       在保存i18n message文件之前,将根据键进行排序
  --mark-unused    标记在源码中未使用到的i18n message, 在翻译结果前加入 "## "

nop-i18n:translate 并对所有未翻译的i18n key进行翻译

                   如果 i18n message 翻译结果空, 将根据基础语言翻译为目标语言
Options:
  --backup         备份 i18n message 文件 
  --key-sort       在保存i18n message文件之前,将根据键进行排序
  --only-extract   仅翻译在源码中存在的i18n message
  

nop-i18n:update 抽取源码中的i18n messages 并对所有未翻译的i18n message进行翻译

Options:
  --overwrite      覆盖, 如果key存在于i18n message文件中,并不存在与导入的文件中
                   那么导入后,这个key将被删除 
  --backup         备份 i18n message 文件 
  --key-sort       在保存i18n message文件之前,将根据键进行排序
  --mark-unused    标记在源码中未使用到的i18n message, 在翻译结果前加入 "## "
  --only-extract   仅翻译在源码中存在的i18n message
Example: 
    # 抽取源码中新加入的i18n-key,并根据基准语言翻译为其他目标语言,保存为i18n messages files.
    1. composer nop-i18n:update --name=app-api

# 语言代码参考

[ {"code":"ab", "name_zh":"阿布哈兹语","name_en":"Abkhazian"}, {"code":"sq", "name_zh":"阿尔巴尼亚语","name_en":"Albanian"}, {"code":"ak", "name_zh":"阿肯语","name_en":"Akan"}, {"code":"ar", "name_zh":"阿拉伯语","name_en":"Arabic"}, {"code":"an", "name_zh":"阿拉贡语","name_en":"Aragonese"}, {"code":"am", "name_zh":"阿姆哈拉语","name_en":"Amharic"}, {"code":"as", "name_zh":"阿萨姆语","name_en":"Assamese"}, {"code":"az", "name_zh":"阿塞拜疆语","name_en":"Azerbaijani"}, {"code":"ee", "name_zh":"埃维语","name_en":"Ewe"}, {"code":"ay", "name_zh":"艾马拉语","name_en":"Aymara"}, {"code":"ga", "name_zh":"爱尔兰语","name_en":"Irish"}, {"code":"et", "name_zh":"爱沙尼亚语","name_en":"Estonian"}, {"code":"oj", "name_zh":"奥杰布瓦语","name_en":"Ojibwa"}, {"code":"oc", "name_zh":"奥克语","name_en":"Occitan"}, {"code":"or", "name_zh":"奥里亚语","name_en":"Oriya"}, {"code":"om", "name_zh":"奥罗莫语","name_en":"Oromo"}, {"code":"os", "name_zh":"奥塞梯语","name_en":"Ossetian"}, {"code":"ba", "name_zh":"巴什基尔语","name_en":"Bashkir"}, {"code":"eu", "name_zh":"巴斯克语","name_en":"Basque"}, {"code":"be", "name_zh":"白俄罗斯语","name_en":"Belarusian"}, {"code":"bm", "name_zh":"班巴拉语","name_en":"Bambara"}, {"code":"bg", "name_zh":"保加利亚语","name_en":"Bulgarian"}, {"code":"se", "name_zh":"北萨米语","name_en":"Northern Sami"}, {"code":"bi", "name_zh":"比斯拉马语","name_en":"Bislama"}, {"code":"is", "name_zh":"冰岛语","name_en":"Icelandic"}, {"code":"pl", "name_zh":"波兰语","name_en":"Polish"}, {"code":"bs", "name_zh":"波斯尼亚语","name_en":"Bosnian"}, {"code":"fa", "name_zh":"波斯语","name_en":"Persian"}, {"code":"br", "name_zh":"布列塔尼语","name_en":"Breton"}, {"code":"ch", "name_zh":"查莫罗语","name_en":"Chamorro"}, {"code":"cv", "name_zh":"楚瓦什语","name_en":"Chuvash"}, {"code":"ts", "name_zh":"聪加语","name_en":"Tsonga"}, {"code":"tt", "name_zh":"鞑靼语","name_en":"Tatar"}, {"code":"da", "name_zh":"丹麦语","name_en":"Danish"}, {"code":"de", "name_zh":"德语","name_en":"German"}, {"code":"dv", "name_zh":"迪维西语","name_en":"Dhivehi"}, {"code":"ru", "name_zh":"俄语","name_en":"Russian"}, {"code":"fo", "name_zh":"法罗语","name_en":"Faroese"}, {"code":"fr", "name_zh":"法语","name_en":"French"}, {"code":"sa", "name_zh":"梵语","name_en":"Sanskrit"}, {"code":"fj", "name_zh":"斐济语","name_en":"Fijian"}, {"code":"fi", "name_zh":"芬兰语","name_en":"Finnish"}, {"code":"kg", "name_zh":"刚果语","name_en":"Kongo"}, {"code":"km", "name_zh":"高棉语","name_en":"Khmer"}, {"code":"kl", "name_zh":"格陵兰语","name_en":"Kalaallisut"}, {"code":"ka", "name_zh":"格鲁吉亚语","name_en":"Georgian"}, {"code":"gu", "name_zh":"古吉拉特语","name_en":"Gujarati"}, {"code":"gn", "name_zh":"瓜拉尼语","name_en":"Guarani"}, {"code":"kk", "name_zh":"哈萨克语","name_en":"Kazakh"}, {"code":"ht", "name_zh":"海地克里奥尔语","name_en":"Haitian"}, {"code":"ko", "name_zh":"韩语","name_en":"Korean"}, {"code":"ha", "name_zh":"豪萨语","name_en":"Hausa"}, {"code":"nl", "name_zh":"荷兰语","name_en":"Dutch"}, {"code":"rn", "name_zh":"基隆迪语","name_en":"Rundi"}, {"code":"ky", "name_zh":"吉尔吉斯斯坦语","name_en":"Kirghiz"}, {"code":"gl", "name_zh":"加利西亚语","name_en":"Galician"}, {"code":"ca", "name_zh":"加泰罗尼亚语","name_en":"Catalan"}, {"code":"cs", "name_zh":"捷克语","name_en":"Czech"}, {"code":"kn", "name_zh":"卡纳达语","name_en":"Kannada"}, {"code":"kr", "name_zh":"卡努里语","name_en":"Kanuri"}, {"code":"kw", "name_zh":"康沃尔语","name_en":"Cornish"}, {"code":"xh", "name_zh":"科萨语","name_en":"Xhosa"}, {"code":"co", "name_zh":"科西嘉语","name_en":"Corsican"}, {"code":"qu", "name_zh":"克丘亚语","name_en":"Quechua"}, {"code":"ks", "name_zh":"克什米尔语","name_en":"Kashmiri"}, {"code":"ku", "name_zh":"库尔德语","name_en":"Kurdish"}, {"code":"la", "name_zh":"拉丁语","name_en":"Latin"}, {"code":"lv", "name_zh":"拉脱维亚语","name_en":"Latvian"}, {"code":"lo", "name_zh":"老挝语","name_en":"Lao"}, {"code":"lt", "name_zh":"立陶宛语","name_en":"Lithuanian"}, {"code":"li", "name_zh":"林堡语","name_en":"Limburgish"}, {"code":"ln", "name_zh":"林加拉语","name_en":"Lingala"}, {"code":"lg", "name_zh":"卢干达语","name_en":"Ganda"}, {"code":"lb", "name_zh":"卢森堡语","name_en":"Letzeburgesch"}, {"code":"rw", "name_zh":"卢旺达语","name_en":"Kinyarwanda"}, {"code":"ro", "name_zh":"罗马尼亚语","name_en":"Romanian"}, {"code":"rm", "name_zh":"罗曼什语","name_en":"Romansh"}, {"code":"mg", "name_zh":"马达加斯加语","name_en":"Malagasy"}, {"code":"gv", "name_zh":"马恩语","name_en":"Manx"}, {"code":"mt", "name_zh":"马耳他语","name_en":"Maltese"}, {"code":"mr", "name_zh":"马拉地语","name_en":"Marathi"}, {"code":"ml", "name_zh":"马拉雅拉姆语","name_en":"Malayalam"}, {"code":"ms", "name_zh":"马来语","name_en":"Malay"}, {"code":"mk", "name_zh":"马其顿语","name_en":"Macedonian"}, {"code":"mh", "name_zh":"马绍尔语","name_en":"Marshallese"}, {"code":"mi", "name_zh":"毛利语","name_en":"Maori"}, {"code":"mn", "name_zh":"蒙古语","name_en":"Mongolian"}, {"code":"bn", "name_zh":"孟加拉语","name_en":"Bengali"}, {"code":"my", "name_zh":"缅甸语","name_en":"Burmese"}, {"code":"nv", "name_zh":"纳瓦霍语","name_en":"Navajo"}, {"code":"af", "name_zh":"南非语","name_en":"Afrikaans"}, {"code":"ne", "name_zh":"尼泊尔语","name_en":"Nepali"}, {"code":"no", "name_zh":"挪威语","name_en":"Norwegian"}, {"code":"pa", "name_zh":"旁遮普语","name_en":"Panjabi"}, {"code":"pt", "name_zh":"葡萄牙语","name_en":"Portuguese"}, {"code":"ps", "name_zh":"普什图语","name_en":"Pushto"}, {"code":"ny", "name_zh":"齐切瓦语","name_en":"Nyanja"}, {"code":"tw", "name_zh":"契维语","name_en":"Twi"}, {"code":"ja", "name_zh":"日语","name_en":"Japanese"}, {"code":"sv", "name_zh":"瑞典语","name_en":"Swedish"}, {"code":"sm", "name_zh":"萨摩亚语","name_en":"Samoan"}, {"code":"sg", "name_zh":"桑戈语","name_en":"Sango"}, {"code":"si", "name_zh":"僧伽罗语","name_en":"Sinhala"}, {"code":"eo", "name_zh":"世界语","name_en":"Esperanto"}, {"code":"sl", "name_zh":"斯洛文尼亚语","name_en":"Slovenian"}, {"code":"sw", "name_zh":"斯瓦希里语","name_en":"Swahili"}, {"code":"so", "name_zh":"索马里语","name_en":"Somali"}, {"code":"sk", "name_zh":"斯洛伐克语","name_en":"Slovak"}, {"code":"tl", "name_zh":"他加禄语","name_en":"Tagalog"}, {"code":"tg", "name_zh":"塔吉克语","name_en":"Tajik"}, {"code":"ty", "name_zh":"塔希提语","name_en":"Tahitian"}, {"code":"te", "name_zh":"泰卢固语","name_en":"Telugu"}, {"code":"ta", "name_zh":"泰米尔语","name_en":"Tamil"}, {"code":"th", "name_zh":"泰语","name_en":"Thai"}, {"code":"to", "name_zh":"汤加语(汤加群岛)","name_en":"Tonga (Tonga Islands)"}, {"code":"ti", "name_zh":"提格雷尼亚语","name_en":"Tigrinya"}, {"code":"tr", "name_zh":"土耳其语","name_en":"Turkish"}, {"code":"tk", "name_zh":"土库曼语","name_en":"Turkmen"}, {"code":"wa", "name_zh":"瓦隆语","name_en":"Walloon"}, {"code":"cy", "name_zh":"威尔士语","name_en":"Welsh"}, {"code":"ve", "name_zh":"文达语","name_en":"Venda"}, {"code":"vo", "name_zh":"沃拉普克语","name_en":"Volapük"}, {"code":"wo", "name_zh":"沃洛夫语","name_en":"Wolof"}, {"code":"ur", "name_zh":"乌尔都语","name_en":"Urdu"}, {"code":"uz", "name_zh":"乌孜别克语","name_en":"Uzbek"}, {"code":"es", "name_zh":"西班牙语","name_en":"Spanish"}, {"code":"ie", "name_zh":"西方国际语","name_en":"Interlingue"}, {"code":"fy", "name_zh":"西弗里斯兰语","name_en":"Western Frisian"}, {"code":"he", "name_zh":"希伯来语","name_en":"Hebrew"}, {"code":"el", "name_zh":"现代希腊语","name_en":"Modern Greek"}, {"code":"sd", "name_zh":"信德语","name_en":"Sindhi"}, {"code":"hu", "name_zh":"匈牙利语","name_en":"Hungarian"}, {"code":"sn", "name_zh":"修纳语","name_en":"Shona"}, {"code":"su", "name_zh":"巽他语","name_en":"Sundanese"}, {"code":"hy", "name_zh":"亚美尼亚语","name_en":"Armenian"}, {"code":"ig", "name_zh":"伊博语","name_en":"Igbo"}, {"code":"io", "name_zh":"伊多语","name_en":"Ido"}, {"code":"iu", "name_zh":"伊努克提图特语","name_en":"Inuktitut"}, {"code":"it", "name_zh":"意大利语","name_en":"Italian"}, {"code":"yi", "name_zh":"意第绪语","name_en":"Yiddish"}, {"code":"ia", "name_zh":"因特语","name_en":"Interlingua"}, {"code":"hi", "name_zh":"印地语","name_en":"Hindi"}, {"code":"id", "name_zh":"印度尼西亚语","name_en":"Indonesia"}, {"code":"en", "name_zh":"英语","name_en":"English"}, {"code":"yo", "name_zh":"约鲁巴语","name_en":"Yoruba"}, {"code":"vi", "name_zh":"越南语","name_en":"Vietnamese"}, {"code":"jv", "name_zh":"爪哇语","name_en":"Javanese"}, {"code":"zh", "name_zh":"中文","name_en":"Chinese"}, {"code":"zh-tw", "name_zh":"中文繁体","name_en":"Traditional Chinese"}, {"code":"zu", "name_zh":"祖鲁语","name_en":"Zulu"} ]