Difference between revisions of "Module:Backpack item/format"

From Team Fortress Wiki
Jump to: navigation, search
m (Darkid moved page Module:Backpack item formats to Module:Backpack item/format without leaving a redirect: Subpages allow for a natural 'back' arrow)
m (pffft)
Line 3: Line 3:
 
When the template is evaluated, the english text here will be replaced with language-appropriate strings.
 
When the template is evaluated, the english text here will be replaced with language-appropriate strings.
 
Please note the missing spaces are intentional, as some languages concatenate words together.
 
Please note the missing spaces are intentional, as some languages concatenate words together.
The raw strings for these words live in Template:Dictionary/common_strings, in the Module:Backpack item section.
+
The raw strings for these words live in Template:Dictionary/common_strings#Module:Backpack_item
 
Note that extra spaces, empty parenthesis, and extra dashes will be cleaned up automatically.
 
Note that extra spaces, empty parenthesis, and extra dashes will be cleaned up automatically.
 
--]]
 
--]]
Line 69: Line 69:
 
}
 
}
  
-- Note that order must be
 
 
function format_string(order, args)
 
function format_string(order, args)
   assert(type(order) == 'table', 'You must call Lang() on the format before passing it to this function')
+
   assert(type(order) == 'string', 'You must call Lang() on the format before passing it to this function')
  
 
   -- Step 1: Split out prefix/suffix
 
   -- Step 1: Split out prefix/suffix
Line 109: Line 108:
 
   output_string = string.gsub(output_string, '^ ', '') -- Extra space at start
 
   output_string = string.gsub(output_string, '^ ', '') -- Extra space at start
 
   output_string = string.gsub(output_string, ' $', '') -- Extra space at end
 
   output_string = string.gsub(output_string, ' $', '') -- Extra space at end
 +
 +
  -- TODO: Replace () in chinese (maybe just pass language in?)
  
 
   return output_string
 
   return output_string
 
end
 
end

Revision as of 02:42, 13 June 2019

Documentation for this module may be created at Module:Backpack item/format/doc

--[[
These are the order of parameters in different languages.
When the template is evaluated, the english text here will be replaced with language-appropriate strings.
Please note the missing spaces are intentional, as some languages concatenate words together.
The raw strings for these words live in Template:Dictionary/common_strings#Module:Backpack_item
Note that extra spaces, empty parenthesis, and extra dashes will be cleaned up automatically.
--]]

-- Missing translations: ar, cs
-- Self translated: none
local item_name_format = {
  ['da']      = 'quality filter festivized killstreak item_name',
  ['de']      = 'item_name - quality filter killstreak - festivized',
  ['en']      = 'quality filter festivized killstreak item_name',
  ['es']      = 'item_name quality filter festivized killstreak',
  ['fi']      = 'qualityfilter killstreak festivizeditem_name',
  ['fr']      = 'item_name festivized (quality filter killstreak)',
  ['hu']      = 'qualityfilter festivizedkillstreak item_name',
  ['it']      = 'item_name (festivized) (quality filter killstreak)',
  ['ja']      = 'quality filter killstreak festivized item_name',
  ['ko']      = 'quality filter festivized killstreak item_name',
  ['nl']      = 'qualityfilter festivizedkillstreakitem_name',
  ['no']      = 'quality filter festivized killstreak item_name',
  ['pl']      = 'item_name (quality filter festivized killstreak)',
  ['pt']      = 'item_name filter (festivized) (quality killstreak)',
  ['pt-br']   = 'item_name filter (festivized) (quality killstreak)',
  ['ro']      = 'qualityfilter festivizedkillstreakitem_name',
  ['ru']      = 'item_name killstreak festivized quality filter',
  ['sv']      = 'quality filter festivized killstreakitem_name',
  ['tr']      = 'qualityfitler festivizedkillstreak item_name',
  ['zh-hans'] = 'quality filter festivizedkillstreak item_name',
  ['zh-hant'] = 'qualityfilter festivizedkillstreakitem_name',
}

-- Missing translations: fi, fr (limited is missing), pl
-- Self translated: none
local item_desc_format_strange = {
  ['cs']      = 'limited strange_rank_name item_kind rankson',
  ['da']      = 'limited item_kind strange_rank_name rankson',
  ['de']      = 'limited item_kind strange_rank_name rankson',
  ['en']      = 'limited strange_rank_name item_kind rankson',
  ['es']      = 'item_kind strange_rank_name limited rankson',
  ['fr']      = 'item_kind strange_rank_name rankson',
  ['hu']      = 'limitedstrange_rank_name item_kind rankson',
  ['it']      = 'item_kind - limited strange_rank_name rankson',
  ['ja']      = 'limited strange_rank_name item_kind rankson',
  ['ko']      = 'limited strange_rank_name item_kind rankson',
  ['nl']      = 'limitedstrange_rank_name item_kind rankson',
  ['no']      = 'limiteditem_kind strange_rank_name rankson',
  ['pt']      = 'item_kind strange_rank_name limited rankson',
  ['pt-br']   = 'item_kind strange_rank_name limited rankson',
  ['ro']      = 'limitedstrange_rank_name item_kind rankson',
  ['ru']      = 'item_kind strange_rank_name limited rankson',
  ['sv']      = 'limitedstrange_rank_name item_kind rankson',
  ['tr']      = 'limitedstrange_rank_name item_kind rankson',
  ['zh-hans'] = 'limitedstrange_rank_name item_kind rankson',
  ['zh-hant'] = 'limitedstrange_rank_name item_kind rankson',
}

-- A list of strings which mean "don't show" rather than "use me"
local negatives = {
  ['none'] = true,
  ['no'] = true,
  ['0'] = true,
  ['false'] = true,
  ['hide'] = true,
  ['negative'] = true,
  [''] = true,
}

function format_string(order, args)
  assert(type(order) == 'string', 'You must call Lang() on the format before passing it to this function')

  -- Step 1: Split out prefix/suffix
  local idx = string.find(order, 'item_name')
  local prefix = string.sub(order, 0, idx - 1)
  local suffix = string.sub(order, idx + 9)

  -- Step 2: Replace parameters with their actual values
  for arg_name, arg_text in pairs(args) do
    prefix = string.gsub(prefix, arg_name, arg_text)
    suffix = string.gsub(prefix, arg_name, arg_text)
  end

  -- Step 3: Replace prefix/suffix as needed
  if negatives[args['prefix']] then
    prefix = ''
  elseif args['prefix'] ~= nil then
    prefix = args['prefix'] .. ' '
  end
  if negatives[args['suffix']] then
    suffix = ''
  elseif args['suffix'] ~= nil then
    suffix = ' ' .. args['suffix']
  end

  -- Step 4: Recombine strings and clean up extra characters
  local output_string = prefix .. item_name .. suffix
  output_string = string.gsub(output_string, '%( *', '(') -- Extra spaces in parenthesis
  output_string = string.gsub(output_string, ' *%)', ')') -- Extra spaces in parenthesis
  output_string = string.gsub(output_string, '%(%)', '') -- Empty parentheticals

  output_string = string.gsub(output_string, '- *-', '-') -- Double dashes
  output_string = string.gsub(output_string, '- *$', '') -- Trailing dashes
  output_string = string.gsub(output_string, '^ *-', '') -- Leading dashes

  output_string = string.gsub(output_string, '  +', ' ') -- Double spaces
  output_string = string.gsub(output_string, '^ ', '') -- Extra space at start
  output_string = string.gsub(output_string, ' $', '') -- Extra space at end

  -- TODO: Replace () in chinese (maybe just pass language in?)

  return output_string
end