Lua   发布时间:2022-04-12  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了网络应用程序 – Lua – 如何进行国际化?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_607_0@
我构建了一个Lua Web应用程序,很明显我需要为我的海外客户开始国际化(“i18n”).

在Lua,我的应用程序国际化的最佳方式是什么?

我意识到这是一项重大任务,特别是因为我的一些显示器是在HTML模板中硬编码的,而一些数据字段在我目前以美国 – 英语为导向的数据库中.

任何指导将不胜感激.

解决方法

编辑:添加了metatable的东西

当然.

在一个文件中,您可以使用以下方法定义i18n变量:

local i18n = { locales = {} }

local currentLocale = 'en' -- the default language

function i18n.setLocale(newLocalE)
  currentLocale = newLocale
  assert(i18n.locales[currentLocale],("The locale %q was unknown"):format(newLocalE))
end

local function translate(id)
  local result = i18n.locales[currentLocale][id]
  assert(result,("The id %q was not found in the current locale (%q)"):format(id,currentLocalE)
  return result
end

i18n.translate = translate

setmetatable(i18n,{__call = function(_,...) return translate(id) enD})

return i18n

在同一个文件或其他文件中,您可以在i18n.locales中包含所需的语言环境.

local i18n = require 'i18n' -- remove this line if on the same file as before

i18n.locales.en = {
  HelloWorld = "Hello world",loginWarning = "You need to be logged in to do that"
}

i18n.locales.es = {
  HelloWorld = "Hola mundo",loginWarning = "Debes haber iniciado una sesión para hacer eso"
}
...

用法:

local i18n = require 'i18n'
require 'locales' -- if using a separate file for the locales,require it too

print( i18n.translate('HelloWorld') ) -- Hello world
i18n.setLocale('es')
-- using i18n() instead of i18n.translate()
print( i18n('HelloWorld') ) -- Hola mundo

大佬总结

以上是大佬教程为你收集整理的网络应用程序 – Lua – 如何进行国际化?全部内容,希望文章能够帮你解决网络应用程序 – Lua – 如何进行国际化?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。