サメーさんのShopperアドオンの中身を見ていたら
function validate_item(npc_item)こんなコードがあった。res.itemsはres\items.luaの中身が入っている。でも、その中にはnameというエントリは含まれていない。アイテムの名前はenやjaで登録されている。
for i,v in pairs(res.items) do
if v.name:lower() == npc_item then
return v.id
end
end
end
v.nameとはいったい何だろうか。
addons\lib\resources.luaには以下のコードがある。
local language_string = _addon and _addon.language and _addon.language:lower() or windower.ffxi.get_info().language:lower()
local redict = {
name = language_string,
name_log = language_string_log,
name_short = language_string_short,
english = 'en',
japanese = 'ja',
english_log = 'enl',
japanese_log = 'ja',
english_short = 'ens',
japanese_short = 'jas',
}
-- The metatable for a single resource item (an entry in a sub table of the root resource table)
local resource_entry_mt = {__index = function()
return function(t, k)
return redict[k] and t[redict[k]] or table[k]
end
end()}
このコードから予想できるのは、windowerの言語設定がjapaneseである場合、nameはjaのエイリアスとして機能するということ。
つまり、
item['name'] = item[redict['name']] = item['japanese'] = item[redict['japanese']] = item['ja']
そして、Windowerのwikiにもそう書かれていた。
The general structure of the resources can be gleaned by checking out the respective Lua file in the resources directory. However, there are some deviations. For example, the Lua files use the ISO 639-1 language code for English (en), Japanese (ja), German (de), French (fr), however, in the parsed resources they will appear under their full english names (english, japanese, german and french). Also, a new field name will be added, which is an alias to whatever the addon's language is, or, if none is provided for the addon, what the user's POL language is.
0 件のコメント:
コメントを投稿