[KAYNAK KOD] Dil sistemi

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı enesbayrktar

  • Yeni Üye
  • *
    • İleti: 16
    • Github
: 16 Temmuz 2020, 11:25:37
Öncelikle iyi forumlar, bu konuda sizlere dün yazmış olduğum Laravel 7.x dil fonksiyonundan lua'ya uyarlama yaptığım kodu paylaşacağım, kısaca artıları ve zararları;

Bir script içine atıp export vererek kullanmanıza olanak sağlar, direkt olarak tabloyu düzenlemektense modüler bir yapı izler, dinamik değişkenlik göstererir ve kendini yineler. Gereksiz iş yükünden kurtulursunuz her Lua'nın farklı dillerdeki karşılıklarını girebilirsiniz.

Kod
local defaultLang = false
local keycodes = {}

function __(...)
  local args = { ... }

  if string.find(args[1], 'lang.') and #args == 1 then
    defaultLang = ( tonumber(args[1]:len()) < 8 )
      and args[1]
      or false

      if defaultLang then
        return {
          defaultLang,
          true
        }
      end
  end

  args.key = ( type(args[1]) == 'string' and 7 > string.len(args[1]) )
    and args[1]
    or false

    if #args == 1 and args.key then
      return keycodes[((defaultLang or '') .. '.' or '')..args.key]
      or {
        outputDebugString('Undefined lang key', 3, 255, 255, 255),
        false
      }
    end
 
  args.value = ( type(args[1]) == 'string' and #args > 1 )
    and args[2]
    or false
    if args.value and args.key then
      keycodes = keycodes or {}
      keycodes[((defaultLang or '') .. '.' or '')..args.key] = keycodes[((defaultLang or '') .. '.' or '')..args.key] or args.value

      return keycodes[((defaultLang or '') .. '.' or '')..args.key]
      or {
        outputDebugString('Undefined lang key with value function', 3, 255, 255, 255),
        false
      }
    end
end

Test kiti
Kod
__('lang.tr')
__('abc', 'abcde') -- lang.tr.abc tanımlaması
print(__('abc')) -- seçilen default dil tr olduğundan ötürü lang.tr.abc getiriliyor

__('lang.en') -- seçilen dili lang.en olarak ayarladık (kısaca en)
__('asd', '123') -- lang.en.asd tanımlaması
__('abc', '1234') -- lang.en.abc tanımlaması
print(__('abc')) -- seçilen default dil en olduğu için lang.en.abc getiriliyor
 


MTASATURK

[KAYNAK KOD] Dil sistemi
« : 16 Temmuz 2020, 11:25:37 »

Çevrimdışı Leaver

  • laravel <3
  • Uzman Üye
  • *
    • İleti: 511
    • Esppa Software
Yanıtla #1 : 16 Temmuz 2020, 12:48:11
eline sağlık Enes abi yararlı