精华内容
下载资源
问答
  • linux如何安装lua

    2017-01-11 15:57:00
    wget-chttp://www.lua.org/ftp/lua-5.3.0.tar.gz tarzxvflua-5.3.0.tar.gz 2、下载libreadline相关支持sudo apt-get install libreadline5sudo apt-get install libreadline-gplv2-dev3、编译以及安装cd lua-5.3...

    1.下载lua包并解压

    wget -c http://www.lua.org/ftp/lua-5.3.0.tar.gz
     tar zxvf lua-5.3.0.tar.gz

    2、下载libreadline相关支持
    sudo apt-get install libreadline5
    sudo apt-get install libreadline-gplv2-dev

    3、编译以及安装
    cd lua-5.3.0
    make linux
    sudo make install

    4、测试
    $ lua
    Lua 5.1.2 Copyright (C) 1994-2007 Lua.org, PUC-Rio
    >print("Hello World!")
    按下Ctrl+D退出。

    转载于:https://www.cnblogs.com/YiXiaoZhou/p/6274033.html

    展开全文
  • 如何lua移植到arm平台的linux内核

    千次阅读 2014-11-12 20:23:48
    将脚本移植到内核是一件很酷的事情,lua已经被移植到NetBSD的内核中,也有一个叫lunatik的项目把lua移植到了linux内核,只可惜只支持x86,不支持arm,在网上搜索了下,没有找到现成的,于是自己研究了下,现将它分享...

           将脚本移植到内核是一件很酷的事情,lua已经被移植到NetBSD的内核中,也有一个叫lunatik的项目把lua移植到了linux内核,只可惜只支持x86,不支持arm,在网上搜索了下,没有找到现成的,于是自己研究了下,现将它分享出来。

          移植到arm平台,主要是要重新实现setjmp和longjmp两个函数,网上相关的资料很少,最后终于找到一个klibc的项目,里面有setmp和longjmp的arm平台的实现,于是直接拿来用了,不用说,当看到脚本在内核中执行并打印出"hello,world"的时候,还是很exciting的。这里讲下使用的方法,具体的代码可以去下面的位置下载:

    https://github.com/negtise/luak-arm


    1、先下载代码,下载下来后把里面的lunatik目录放到lib目录下。


    2、配置内核:

    2.1修改lib/Kconfig,添加以下的配置

    config LUNATIK
    tristate "Enable Lunatik Lua Engine"
    default y
    help
     Enables the Lunatik Lua engine which allows execution of Lua code


    2.2配置lua,生成ko文件

    执行:

    make ARCH=arm menuconfig

    然后:

    config Lunatik to compile as Module
      Library routines  ---> 
         <M> Enable Lunatik Lua Engine 


    3、编译:

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules SUBDIRS=lib/lunatik

    会生成一个luak.ko


    4、调试:

    执行以下命令:

    cat /proc/kmsg &

    echo 9 > /proc/sys/kernel/printk

    insmod luak.ko

    echo "print('hello,world')" > /sys/class/lunak/eval


    如果一却OK,将会输出:

    hello,world

    这可是从内核里执行的。


    5.如何扩展功能?

    可以查看bindings目录中的代码。




    展开全文
  • Lua中使用gettext实现多语言支持 Using gettext in lua 2016-06-07更新:加入gettext包含的工具简介。 GNU gettext 是一套优秀的国际化工具。在 linux 中被大量采用。wordpress 也使用 gettext 实现...

    在Lua中使用gettext实现多语言支持

    Using gettext in lua

    2016-06-07更新:加入gettext包含的工具简介。


    GNU gettext 是一套优秀的国际化工具。在 linux 中被大量采用。wordpress 也使用 gettext 实现多语言支持。

    本文介绍如何在 quick-cocos2d-x 中使用 gettext 做多语言支持。同时介绍多语言翻译工具 poedit对 Lua 语言的支持。

    gettext 简介

    gettext 是一套工具集的名称。这套工具集包含 xgettext/msginit/msgfmt 等一套建立模版(POT)、创建PO文件和编译MO文件的工具。

    gettext 包含的工具如下:

    • xgettext 从源码中生成POT模版或直接生成PO文件;
    • msginit 基于POT文件生成待翻译的PO文件;
    • msgfmt 将PO文件编译成二进制的MO文件;
    • msgunfmt 顾名思义,将MO文件反编译成PO文件;
    • msgmerge 将POT模版文件与PO文件合并。用于在源码更新之后将新的待翻译内容更新到已经翻译的PO文件中;
    • msgcat 将多个PO文件合并在一起。

    使用 gettext 需要涉及这样几个概念:

    • 源码
      程序的源代码,本文中是 lua 文件;
    • POT 文件
      从源码中扫描得到的翻译模版文件,原始语言取决于源码字符串中使用的自然语言,建议使用英文。纯文本格式;
    • PO 文件
      根据 POT 文件建立的各种语言版本的待翻译文件,其中包含原始语言和被翻译的目标语言。纯文本格式;
    • MO 文件
      供最终软件实际使用的文件,使用 PO 编译而成。二进制格式。

    一般的工作流程是这样的:

    1. 在源码中使用约定的语法来书写字符串,C语言默认是 gettext("my text")。在本文中,将使用 _("my text") ;
    2. 使用 xgettext 从源码中扫描出需要翻译的文本,建立 POT 文件;
    3. 使用 msginit 命令根据 POT 文件建立 PO 文件。或者直接在上一步也可以直接建立 PO 文件;
    4. 进行人工翻译(当然也可以进行机器翻译),翻译的结果保存在 PO 文件中;
    5. 使用 msgfmt 命令将 PO 文件编译成 MO 文件;
    6. 在程序中实现调用命令,本文中是 _ 函数,这个函数将读取并解析 MO 文件,根据调用的原始语言文本返回翻译之后的文本。

    Poedit 简介

    gettext 提供的工具集都是基于命令行的,有些程序员并不习惯命令行。它也没有提供用于翻译工作者的对照翻译工具。

    而 Poedit 则提供了一切。

    Poedit 可以从源码中提取文本生成 PO 文件,也提供了一个GUI界面用于对照翻译。它还可以直接生成最终的 MO 文件。

    当然,在GUI之后,它依然是使用 gettext 来处理的,但这些具体的细节被隐藏了。

    使用 Poedit 生成和翻译 PO 文件

    软件设置

    1.开启 Poedit,执行 File – Preferences 命令,填入自己的个人信息。

    Preferences

    2.切换到 Editor tab,选中 Automatically compile .mo file on save 和 Show summary after catalog update 两项。

    Editor

    3.切换到 Parsers tab,这里提供了几种源码解析器,但默认没有Lua。我们下面将加入Lua源码解析。

    Parses

    4.点击 New 新建一个源码解析器,进行如下图的设置。

    Parse setup

    这些设置基本上与 C/C++ 的设置一致,只是修改了扩展名支持以及 Parser command 栏位。在 xgettext 命令的参数中,-C 就是 –language=C 的简写。

    接下来将新建一个项目进行设置。

    项目设置

    1.执行 File – New catelog… 命令,在 Translation properties tab 中加入自己的信息。这里的 Language 选项只是个显示选项而已,并不能决定你使用的是何种语言,也不和刚才的软件设置中的 Parsers 相关。

    Translation properties

    2.设定源代码路径,这个非常重要。

    我采用 quick 默认的目录风格,所有的源码放在 scripts 中。同时我建立了一个新的 i18n 目录,这个目录与 scripts 目录同级。生成的 PO 文件将保存在这个目录中。

    那么对于当前正在编辑的 PO 文件来说, Base path 就应该设置成 ..\scripts , 下面的 Paths 就应该加入 . 这个路径。注意在 Windows 下, Base path 的路径分隔符必须采用 Windows 的格式(反斜杠 \ ),而不应该使用 / 。

    Sources paths

    3.设定源代码关键词

    前面我们已经确定了自己的关键词,那就是 _ 。当然我们也可以使用 C 语言的默认关键词gettext ,但那样未免长了一点。

    Sources paths

    4.设定完毕后,将项目保存为 i18n/zh_CN.po ,请注意我上面强调过的第2步。

    解析源码

    一切设定成功之后,直接按下主界面上的 Update 按钮即可解析源码。Poedit 会将源码中解析到的使用 _("my text") 格式的关键词,将其中的字符串提取处理显示在主界面中。

    我们可以在主界面中对关键词进行翻译。

    main scene

    如果源码有更新,再次单击 Update 按钮重新解析源码。这是如果解析到新的字符串,或者有字符串不再使用,Poedit都会进行提示。

    New string
    Obsolete string

    需要注意的一点是,在 Lua 的注释中不要包含半角的单引号。

    这是由于 Lua 的注释使用 — 符号,而 C 语言使用 // ,所以 gettext 会认为 Lua 中的注释是代码的一部分而不会忽略解析。在一般情况没有什么问题,但如果在注释中包含了半角的单引号(这是在 C 语言中代表字面值),gettext 就会认为语法错误因此产生解析错误。

    生成 MO 文件

    在软件设置中,我们设置了在保存项目的时候自动生成 MO 文件,所以这点不用操心了。生成的 MO 文件与 PO 文件在相同的目录。

    在 Lua 中解析 MO 文件

    MO 是个二进制格式的文件,我们的程序在读取它的时候,需要分析 它的结构 ,将它解析成 原始文本 - 翻译文本 的键值对形式,供我们使用。

    许多语言中已经包含了 MO 文件的解析库,但是 Lua 没有。所以我们需要自己写一个。

    不过 J.J?rgen von Bargen 已经完成了这件事,我将他的代码进行了简单封装,将其放在我的 lua 库中了,名称是 utils.Gettext

    由于要支持跨平台的原因,读取 MO 文件采用的是 CCFileUtils ,如果要在其他环境中使用,可以改用 io 库。我在 Gettext._getFileData 中保留了使用 io 库的代码,只是将其注释了。

    综合范例

    使用这种方法,MO 文件会被解析成功一个 table 返回:

    local mo_data=assert(require("utils.Gettext").loadMOFromFile("res/zh_CN.mo"))
    print(mo_data["Hello World!"])
    -- 你好,世界
    print(mo_data["Foobar"])
    -- nil
    

    更通用的方法是这样:

    _ = assert(require("utils.Gettext").gettextFromFile("res/zh_CN.mo"))
    print(_("Hello World!"))
    

    在我的游戏中,则是这样使用的:

    LANG = "res/zh_CN.mo"
    function _(__text)
        return __text
    end
    if CCFileUtils:sharedFileUtils():isFileExist(LANG) then
        _ = assert(require("utils.Gettext").gettextFromFile(LANG))
    end
    
    本文转载连接:http://zengrong.net/post/1986.htm
    展开全文
  • C#下Lua编程支持 xLua为Unity,.Net,Mono等C#环境增加了Lua脚本编程的能力,可以使用xLua,这些Lua代码可以方便的和C#相互调用。 xLua的突破 xLua在功能,性能,易用性都有过多的突破,这几方面分别具有代表性的...
  • LUA中使用GETTEXT实现多语言支持

    千次阅读 2014-07-18 11:16:34
    Lua中使用gettext实现多语言支持 GNU gettext 是一套优秀的...本文介绍如何在 quick-cocos2d-x 中使用 gettext 做多语言支持。同时介绍多语言翻译工具 poedit 对 Lua 语言的支持。 gettext 简介 gettex

    在Lua中使用gettext实现多语言支持

    GNU gettext 是一套优秀的国际化工具。在 linux 中被大量采用。wordpress 也使用 gettext 实现多语言支持。

    本文介绍如何在 quick-cocos2d-x 中使用 gettext 做多语言支持。同时介绍多语言翻译工具 poedit 对 Lua 语言的支持。

    gettext 简介

    gettext 是一套工具集的名称。这套工具集包含 xgettext/msginit/msgfmt 等一套建立模版(POT)、创建PO文件和编译MO文件的工具。

    gettext 包含的工具如下:

    • xgettext 从源码中生成POT模版或直接生成PO文件;
    • msginit 基于POT文件生成待翻译的PO文件;
    • msgfmt 将PO文件编译成二进制的MO文件;
    • msgunfmt 顾名思义,将MO文件反编译成PO文件;
    • msgmerge 将POT模版文件与PO文件合并。用于在源码更新之后将新的待翻译内容更新到已经翻译的PO文件中;
    • msgcat 将多个PO文件合并在一起。

    使用 gettext 需要涉及这样几个概念:

    • 源码
      程序的源代码,本文中是 lua 文件;
    • POT 文件
      从源码中扫描得到的翻译模版文件,原始语言取决于源码字符串中使用的自然语言,建议使用英文。纯文本格式;
    • PO 文件
      根据 POT 文件建立的各种语言版本的待翻译文件,其中包含原始语言和被翻译的目标语言。纯文本格式;
    • MO 文件
      供最终软件实际使用的文件,使用 PO 编译而成。二进制格式。

    一般的工作流程是这样的:

    1. 在源码中使用约定的语法来书写字符串,C语言默认是gettext("my text")。在本文中,将使用 _("my text") ;
    2. 使用 xgettext 从源码中扫描出需要翻译的文本,建立 POT 文件;
    3. 使用 msginit 命令根据 POT 文件建立 PO 文件。或者直接在上一步也可以直接建立 PO 文件;
    4. 进行人工翻译(当然也可以进行机器翻译),翻译的结果保存在 PO 文件中;
    5. 使用 msgfmt 命令将 PO 文件编译成 MO 文件;
    6. 在程序中实现调用命令,本文中是 _ 函数,这个函数将读取并解析 MO 文件,根据调用的原始语言文本返回翻译之后的文本。

    Poedit 简介

    gettext 提供的工具集都是基于命令行的,有些程序员并不习惯命令行。它也没有提供用于翻译工作者的对照翻译工具。

    而 Poedit 则提供了一切。

    Poedit 可以从源码中提取文本生成 PO 文件,也提供了一个GUI界面用于对照翻译。它还可以直接生成最终的 MO 文件。

    当然,在GUI之后,它依然是使用 gettext 来处理的,但这些具体的细节被隐藏了。

    使用 Poedit 生成和翻译 PO 文件

    软件设置

    1.开启 Poedit,执行 File – Preferences 命令,填入自己的个人信息。

    Preferences

    2.切换到 Editor tab,选中 Automatically compile .mo file on save 和 Show summary after catalog update 两项。

    Editor

    3.切换到 Parsers tab,这里提供了几种源码解析器,但默认没有Lua。我们下面将加入Lua源码解析。

    Parses

    4.点击 New 新建一个源码解析器,进行如下图的设置。

    xgettext -C --force-po -o %o %C %K %F

    -k%k

    --from-code=%c

    Parse setup

    这些设置基本上与 C/C++ 的设置一致,只是修改了扩展名支持以及 Parser command 栏位。在 xgettext 命令的参数中,-C 就是 –language=C 的简写。

    接下来将新建一个项目进行设置。

    项目设置

    1.执行 File – New catelog… 命令,在 Translation properties tab 中加入自己的信息。这里的 Language 选项只是个显示选项而已,并不能决定你使用的是何种语言,也不和刚才的软件设置中的 Parsers 相关。

    Translation properties

    2.设定源代码路径,这个非常重要。

    我采用 quick 默认的目录风格,所有的源码放在 scripts 中。同时我建立了一个新的 i18n 目录,这个目录与 scripts 目录同级。生成的 PO 文件将保存在这个目录中。

    那么对于当前正在编辑的 PO 文件来说, Base path 就应该设置成..\scripts , 下面的 Paths 就应该加入 . 这个路径。注意在 Windows 下, Base path 的路径分隔符必须采用 Windows 的格式(反斜杠 \ ),而不应该使用 / 。

    Sources paths

    3.设定源代码关键词

    前面我们已经确定了自己的关键词,那就是 _ 。当然我们也可以使用 C 语言的默认关键词 gettext ,但那样未免长了一点。

    Sources paths

    4.设定完毕后,将项目保存为 i18n/zh_CN.po ,请注意我上面强调过的第2步。

    解析源码

    一切设定成功之后,直接按下主界面上的 Update 按钮即可解析源码。Poedit 会将源码中解析到的使用 _("my text") 格式的关键词,将其中的字符串提取处理显示在主界面中。

    我们可以在主界面中对关键词进行翻译。

    main scene

    如果源码有更新,再次单击 Update 按钮重新解析源码。这是如果解析到新的字符串,或者有字符串不再使用,Poedit都会进行提示。

    New string
    Obsolete string

    需要注意的一点是,在 Lua 的注释中不要包含半角的单引号。

    这是由于 Lua 的注释使用 — 符号,而 C 语言使用 // ,所以 gettext 会认为 Lua 中的注释是代码的一部分而不会忽略解析。在一般情况没有什么问题,但如果在注释中包含了半角的单引号(这是在 C 语言中代表字面值),gettext 就会认为语法错误因此产生解析错误。

    生成 MO 文件

    在软件设置中,我们设置了在保存项目的时候自动生成 MO 文件,所以这点不用操心了。生成的 MO 文件与 PO 文件在相同的目录。

    在 Lua 中解析 MO 文件

    MO 是个二进制格式的文件,我们的程序在读取它的时候,需要分析它的结构 ,将它解析成 原始文本 - 翻译文本 的键值对形式,供我们使用。

    许多语言中已经包含了 MO 文件的解析库,但是 Lua 没有。所以我们需要自己写一个。

    不过 J.J?rgen von Bargen 已经完成了这件事,我将他的代码进行了简单封装,将其放在我的 lua 库中了,名称是 utils.Gettext

    由于要支持跨平台的原因,读取 MO 文件采用的是 CCFileUtils ,如果要在其他环境中使用,可以改用 io 库。我在Gettext._getFileData 中保留了使用 io 库的代码,只是将其注释了。

    综合范例

    使用这种方法,MO 文件会被解析成功一个 table 返回:

    local mo_data=assert(require("utils.Gettext").loadMOFromFile("res/zh_CN.mo"))
    print(mo_data["Hello World!"])
    -- 你好,世界
    print(mo_data["Foobar"])
    -- nil
    

    更通用的方法是这样:

    _ = assert(require("utils.Gettext").gettextFromFile("res/zh_CN.mo"))
    print(_("Hello World!"))
    

    在我的游戏中,则是这样使用的:

    LANG = "res/zh_CN.mo"
    function _(__text)
        return __text
    end
    if CCFileUtils:sharedFileUtils():isFileExist(LANG) then
        _ = assert(require("utils.Gettext").gettextFromFile(LANG))
    end
    


    • 本站文章除注明转载外,均为本站原创或者翻译。
    • 本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商;
    • 本站部分原创和翻译文章提供markdown格式源码,欢迎使用文章源码进行转载;
    • 本文标题:在Lua中使用gettext实现多语言支持
    • 本文链接:http://zengrong.net/post/1986.htm

    展开全文
  • 支持Windows和Linux平台。支持高并发高性能。HTML网页中内嵌LUA脚本代码,类似于PHP。支持非阻塞的数据库操作,目前只支持MYSQL。支持异步的文件IO操作。支持非阻塞的SOCKET IO操作。 下
  • ZeroBrane Studio做为一个轻量级的Lua IDE,因为它支持跨平台(支持Windows、Mac和Linux)和支持真机调试(Andorid、IPhone和IPad),所以经常被用来调试Lua。目前,Cocos2d-x通过集成LuaSocket也支持应用ZeroBrane ...
  • ZeroBrane Studio做为一个轻量级的Lua IDE,因为它支持跨平台(支持Windows、Mac和Linux)和支持真机调试(Andorid、IPhone和IPad),所以经常被用来调试L
  • ZeroBrane Studio做为一个轻量级的Lua IDE,因为它支持跨平台(支持Windows、Mac和Linux)和支持真机调试(Andorid、IPhone和IPad),所以经常被用来调试Lua。目...
  • 支持Windows和Linux平台。支持高并发高性能。HTML网页中内嵌LUA脚本代码,类似于PHP。支持非阻塞的数据库操作,目前只支持MYSQL。支持异步的文件IO操作。支持非阻塞的SOCKET IO操作。 下面简要介
  • 支持数据结构,如字符串,哈希,列表,集合,具有范围查询的排序集,位图,超级日志和具有半径查询的地理空间索引。Redis具有内置复制,Lua脚本,LRU逐出,交易和不同级别的磁盘持久性,并通过Redis Sentinel提供...
  • Redis是支持Lua脚本的,但是我以为并不方便。 1. SCRIPT LOAD一个字符串拿到一个SHA,首先这个Lua script脚本就很难拿到。Linux一般用cat什么的。但是你作为PHP怎么拿到Lua的代码呢? 2. 记录一个SHA,而且SHA是...
  • 最简单的多线程lua模型

    千次阅读 2017-02-21 18:23:16
    1、lua语言不支持多线程,仅支持协程; 2、多线程可以由C语言创建,在每个线程中创建一个lua state;3、如何在C和lua之间互相调用是关键,本文只涉及到从C语言中调用lua。  基于以上几个前提,要在多线程中用lua...
  • 前文曾经讲过python中使用lua的方法,目前用的最多的还是lupa模块,但是通过pip安装的lupa存在一个问题,无法支持lua原生模块,因此本文介绍一下如何用lupa调用原生模块。 首先需要卸载掉原来的lupa pip ...
  • 如何Linux上安装SourceInsight?

    千次阅读 2010-10-14 14:54:00
    Linux上安装SouceInsight 3.0的方法: (1) 先安装wine:apt-get install wine (2) 用wine来执行SouceInsight3.exe以便通过wine来完成SouceInsight3的安装过程. (3) 为支持更多的语言,可以导入...
  • 介绍 xLua是腾讯在github上的一...支持android,ios,windows,linux,osx等平台。目前已经有许多成熟产品应用案例使用了xLua.本文主要介绍C#如何调用xLua脚本。 变量 -- example.lua.txt id=25 name='hello' isM...
  • Linux / Unix / Mac: ~/.config/mpv/scripts/mpv_thumbnail_script_server.lua和~/.config/mpv/scripts/mpv_thumbnail_script_client_osc.lua Windows: %APPDATA%\mpv\scripts\mpv_thumbnail_script_server.lua...
  • 它内置了JavaScript、TypeScript和Node.js的内置支持,并有丰富的扩展语言用于其他语言(如C++、C语言、java、python、php、go、lua)和运行时(如.NET和Unity)。 下载 https://code.visualstudio.com/ 主界面介绍 ...
  • 点击上方关注订阅黑码教主获取更多精彩内容Anaconda 是一个用于科学计算的 Python 发行版,支持 Linux, Mac, Windows, 包含了众多流行的科学计算、数据分析的 Python 包。主要特点:开源各个库之间的依赖性列出所需...
  • 支持多种编程语言,例如Lua,Javascript和Python 。 和永远的免费。 桌面 终端机/控制台 移动 树莓派 表中的内容 下载 二进制文件: : 源代码: : 支持骰子位点(字母顺序) 传统的 区块链-STEEM 去做 (更多...
  • lua,C#,JavaScript ... 功能列表: 轻巧的 光速 Ansi C99标准 轻松绑定所有语言 像API一样的Opengl 支持的渲染后端: Direct3D 12(开发中) 金属(开发中) 的OpenGL OpenGL ES Vulkan(开发中) ...
  • xmake从入门到精通9:交叉编译详解

    千次阅读 2019-12-08 21:00:31
    除了win, linux, macOS平台,以及android, ios等移动端平台的内建构建支持,xmake也支持对各种其他工具链的交叉编译支持,本文我们将会详细介绍下如何使用xmake进行交叉编译。 项目源码 官方文档 交叉编译工具链...
  • 除了win, linux, macOS平台,以及android, ios等移动端平台的内建构建支持,xmake也支持对各种其他工具链的交叉编译支持,本文我们将会详细介绍下如何使用xmake进行交叉编译。项目源码官方文档交叉编译工具链简介...
  • 除了win, linux, macOS平台,以及android, ios等移动端平台的内建构建支持,xmake也支持对各种其他工具链的交叉编译支持,本文我们将会详细介绍下如何使用xmake进行交叉编译。项目源码官方文档交叉编译工具链简介...
  • 2.支持Windows,Linux,MacOS三种操作系统; 3.支持六种编程方法; 4.七种编程语言((C/C++、Python、Java、Lua、Matlab、Octave、和 Urbi))。 本文将简单地介绍如何将MATLAB与V-REP进行通讯,分别实现...
  • Openresty下使用google protobuf

    千次阅读 2019-01-29 11:14:29
    业务要求,需要在nginx这边直接做pb编解码。我这里选用了...我这里讲的是在linux下的支持,windows下后期在更新文件,需要的可以持续关注。 进入https://github.com/cloudwu/p...

空空如也

空空如也

1 2 3
收藏数 43
精华内容 17
关键字:

linux如何支持lua

linux 订阅