Перейти к навигации Перейти к поиску
Документация по модулю [ просмотреть ] [ изменить ] [ историю ] [ очистить ]
Этот модуль Lua используется примерно на 97 000 страницах, и изменения могут быть широко заметны. Протестируйте изменения на подстраницах модуля / sandbox или / testcases . Обсудите изменения на странице обсуждения, прежде чем внедрять их. Счетчик включений обновляется автоматически ( см. Документацию ). |
Этот модуль зависит от следующих других модулей: |
Этот модуль реализует:
{{Nihongo}}
{{Nihongo3}}
{{Nihongo foot}}
- [[-------------------------- <NIHONGO _ ERROR> --------------- -------------------------------------создает сообщение об ошибке для {{nihongo}}, {{nihongo3}} и nihongo foot}}, когда эти шаблоны отсутствуют <japanese>или <romaji> входы; называет проблемный шаблон, ссылается на страницу шаблона и добавляет статью в категорию: ошибки шаблона Nihongo]]локальная функция nihongo_error ( шаблон )local msg = { '<span class = "error" style = "font-size: 100%"> error: {{' };table.insert ( сообщение , шаблон );table.insert ( msg , '}}: требуется текст на японском языке или ромадзи ([[Template:' );table.insert ( сообщение , шаблон );table.insert ( msg , '| помощь]]) </span>' );если 0 == mw . название . getCurrentTitle (). пространство имен тогдаtable.insert ( msg , '[[Категория: ошибки шаблона Nihongo]]' );конецвернуть table.concat ( msg );конец- [[-------------------------- <NIHONGO _ RENDERER> --------------- -------------------------------общая функция поддержки для nihingo (), nihongo3 () и nihongo_foot (). Вычисляет индекс форматирования {}из установленных / неустановленных параметров:args [1] (английский) имеет значение 8 (установлено) или 0 (не установлено)args [2] (японский) имеет значение 4args [3] (ромадзи) имеет значение 2args [4] (extra) имеет значение 1index, сумма этих значений, получает соответствующую строку формата из таблицы форматирования {} со связанными значениямииз таблицы форматирования [index] [2]]]локальная функция nihongo_renderer ( аргументы , форматирование , extra2 )локальный выход ;локальный индекс = 0 ; - индексировать в форматирование {}локальный param_weight = { 8 , 4 , 2 , 1 }; - веса двоичных параметров: [1] = английский (8), [2] = японский (4), [3] = ромадзи (2), [4] = дополнительный (1)для i = 1 , 5 do - перебирать args [1] - args [4]index = index + ( args [ i ] и param_weight [ i ] или 0 ); - вычислить индекс форматирования {}конецoutput = ( 0 ~ = index ) и string.format ( форматирование [ индекс ] [ 1 ] и форматирование [ индекс ] [ 1 ], форматирование [ индекс ] [ 2 ] [ 1 ], форматирование [ индекс ] [ 2 ] [ 2 ] , форматирование [ индекс ] [ 2 ] [ 3 ], форматирование [ индекс ] [ 2 ] [4 ]) или ноль ;если extra2, то - всегда просто присоединяется к концу (если есть конец), поэтому не является частью форматирования {}output = output and ( output .. '' .. extra2 ) или '<5p4n>' .. extra2 ; - <5p4n> и </5p4n>: заполнители для интервалов стиля font-weight; похожи на стрип-маркеры, подлежат заменеконец - (нихонго и нихонго3) или удален (нихонго стопа)вернуть вывод и ( вывод .. '</5p4n>' ) или '' ; - там, где есть вывод, добавить секретный тег закрытьконец- [= [------------------------- <НИХОНГО> ----------------- -----------------------------------------------Эксперимент по реализации {{nihongo}} с использованием Module: Lang для языковой разметки и транслитерации.{{Nihongo | <English> | <japanese> | <romaji> | <extra> | <extra2> | lead = yes}}<English>, <japanese> и <romaji> - позиционные параметры.<Английский>: отображается так, как представлено; Предполагается, что это английский перевод <kanji / kana><japanese>: текст на японском языке с использованием японского шрифта; ТОДО: требуется?<romaji>: романизация (транслитерация) Хепберн; TODO: в модуле: текст всплывающей подсказки об изменении языка / данных на «романизацию Хепберн»?<extra> и <extra2> позиционные или именованные: | extra = и | extra2 =; смешивание может быть проблематичным<extra> отображается так, как представлено перед ним <запятая> <пробел><extra2> отображается так, как представлено перед ним <space>| lead =: принимает одно значение «да»; отображает имя языка так же, как {{lang-ja}}, но также добавляет [[Хепберн романизация | Хепберн]]: <пробел> перед латинизацией; ЗАДАЧА: в модуле: Lang отключить всплывающую подсказку для перевода, когда | lead = yesзнак равнолокальная функция нихонго ( фрейм )local lang_module = require ( 'Module: Lang' .. ( frame : getTitle (): match ( '/ sandbox' ) or '' )); - если этот модуль является песочницей, используйте Module: lang / sandbox; Модуль: Lang elselocal args = require ( 'Модуль: аргументы' ). getArgs ( кадр );местный английский , японский , ромадзи , extra , extra2 = args [ 1 ], args [ 2 ], args [ 3 ], args . extra или args [ 4 ], args . extra2 или args [ 5 ]; - значащие именаargs [ 4 ] = extra или args [ 4 ]; - убедитесь, что extra является "позиционным" для использования nihongo_renderer ()local lead = 'yes' == args . свинец ; - сделать логическимесли нет ( японский или ромадзи ), то - нет, вернуть сообщение об ошибкеreturn nihongo_error ( 'нихонго' );конецесли японский, тояпонский = ведущий и lang_module . _lang_xx_inherit ({[ 'code' ] = 'ja' , японский , [ 'template' ] = 'nihongo' }) или lang_module . _lang ({ 'ja' , японский , [ 'template' ] = 'nihongo' }); - добавить скрипт ja с языковым префиксом / без языкового префиксаконецесли ромадзи тогдаromaji = ( ведущий и английский и '[[романизация Хепберн | Хепберн]]:' или '' ) .. lang_module . _transl ({ 'JA' , 'Хепберн' , ромадзи }) или ноль ;конецlocal formatting = { - <5p4n> и </5p4n>: заполнители для интервалов стиля шрифта; сродни полосовым маркерам, заменяются перед возвратом функции{ '<5p4n> (% s)' , { extra }}, - 1 - (дополнительно){ '% s <5p4n>' , { romaji }}, - 2 - romaji{ '% s <5p4n> (% s)' , { romaji , extra }}, - 3 - romaji (extra){ '<5p4n> (% s)' , { japanese }}, - 4 - японский{ '<5p4n> (% s,% s)' , { японский , дополнительный }}, - 5 - (японский, дополнительный){ '% s <5p4n> (% s)' , { ромадзи , японский }}, - 6 - ромадзи (японский){ '% s <5p4n> (% s,% s)' , { ромадзи , японский , дополнительный }}, - 7 - ромадзи (японский, дополнительный){ '% s <5p4n>' , { english }}, - 8 - английский{ '% s <5p4n> (% s)' , { английский , дополнительный }}, - 9 - английский (дополнительный){ '% s <5p4n> (% s)' , { английский , ромадзи }}, - 10 - английский (ромадзи){ '% s <5p4n> (% s,% s)' , { английский , ромадзи , дополнительный }}, - 11 - английский (ромадзи, дополнительный){ '% s <5p4n> (% s)' , { английский , японский }}, - 12 - английский (японский){ '% s <5p4n> (% s,% s)' , { английский , японский , дополнительный }}, - 13 - английский (японский, дополнительный){ '% s <5p4n> (% s,% s)' , { английский , японский , ромадзи }}, - 14 - английский (японский, ромадзи){ '% s <5p4n> (% s,% s,% s)' , { английский , японский , ромадзи , экстра }}, - 15 - английский (японский, ромадзи, экстра)}local ret_string = nihongo_renderer ( аргументы , форматирование , extra2 )ret_string = ret_string : gsub ( '<5p4n>' , '<span style = "font-weight: normal">' ): gsub ( '</5p4n>' , '</span>' ); - заменить «секретные» теги на правильные тегивернуть ret_string ; - потому что gsub возвращает количество произведенных замен как второе возвращаемое значениеконец- [= [------------------------- <NIHONGO 3> ---------------- ----------------------------------------------Эксперимент, чтобы увидеть, как реализовать {{nihongo3}} с помощью Module: Lang для языковой разметки и транслитерации.Подобно {{nihongo}}, но меняет порядок рендеринга и не поддерживает | lead ={{Nihongo3 | <английский> | <японский> | <romaji> | <extra> | <extra2>}}<English>, <japanese> и <romaji> - позиционные параметры.<Английский>: отображается так, как представлено; Предполагается, что это английский перевод <kanji / kana><japanese>: текст на японском языке с использованием японского шрифта; ТОДО: требуется?<romaji>: романизация (транслитерация) Хепберн; TODO: в модуле: текст всплывающей подсказки об изменении языка / данных на «романизацию Хепберн»?<extra> и <extra2> позиционные или именованные: | extra = и | extra2 =; смешивание может быть проблематичным<extra> отображается так, как представлено перед ним <запятая> <пробел><extra2> отображается так, как представлено перед ним <space>знак равнолокальная функция nihongo3 ( фрейм )local lang_module = require ( 'Module: Lang' .. ( frame : getTitle (): match ( '/ sandbox' ) or '' )); - если этот модуль является песочницей, используйте Module: lang / sandbox; Модуль: Lang elselocal args = require ( 'Модуль: аргументы' ). getArgs ( кадр );местный английский , японский , ромадзи , extra , extra2 = args [ 1 ], args [ 2 ], args [ 3 ], args . extra или args [ 4 ], args . extra2 или args [ 5 ]; - значащие именаargs [ 4 ] = extra или args [ 4 ]; - убедитесь, что extra является "позиционным" для использования nihongo_renderer ()если нет ( японский или ромадзи ), то - нет, вернуть сообщение об ошибкевернуть nihongo_error ( 'nihongo3' );конецjapanese = japanese и lang_module . _lang ({ 'ja' , яп. }) или ноль ;ромадзи = ромадзи и lang_module . _transl ({ 'JA' , 'Хепберн' , ромадзи }) или ноль ;local formatting = { - <5p4n> и </5p4n>: заполнители для интервалов стиля шрифта; сродни полосовым маркерам, заменяются перед возвратом функции{ '<5p4n> (% s)' , { extra }}, - 1 - (дополнительно){ '% s <5p4n>' , { romaji }}, - 2 - romaji{ '% s <5p4n> (% s)' , { romaji , extra }}, - 3 - romaji (extra){ '<5p4n> (% s)' , { japanese }}, - 4 - японский{ '<5p4n> (% s,% s)' , { японский , дополнительный }}, - 5 - (японский, дополнительный){ '% s <5p4n> (% s)' , { ромадзи , японский }}, - 6 - ромадзи (японский){ '% s <5p4n> (% s,% s)' , { ромадзи , японский , дополнительный }}, - 7 - ромадзи (японский, дополнительный){ '% s <5p4n>' , { english }}, - 8 - английский{ '% s <5p4n> (% s)' , { английский , дополнительный }}, - 9 - английский (дополнительный){ '% s <5p4n> (% s)' , { romaji , english }}, - 10 - romaji (английский){ '% s <5p4n> (% s,% s)' , { ромадзи , английский , дополнительный }}, - 11 - ромадзи (английский, дополнительный){ '% s <5p4n> (% s)' , { английский , японский }}, - 12 - английский (японский){ '% s <5p4n> (% s,% s)' , { английский , японский , дополнительный }}, - 13 - английский (японский, дополнительный){ '% s <5p4n> (% s,% s)' , { ромадзи , японский , английский }}, - 14 - ромадзи (японский, английский){ '% s <5p4n> (% s,% s,% s)' , { ромадзи , японский , английский , дополнительный }}, - 15 - ромадзи (японский, английский, дополнительный)}local ret_string = nihongo_renderer ( аргументы , форматирование , extra2 )ret_string = ret_string : gsub ( '<5p4n>' , '<span style = "font-weight: normal">' ): gsub ( '</5p4n>' , '</span>' ); - заменить «секретные» теги на правильные тегивернуть ret_string ; - потому что gsub возвращает количество произведенных замен как второе возвращаемое значениеконец- [= [------------------------- <NIHONGO _ FOOT> --------------- ---------------------------------------Эксперимент, чтобы увидеть, как реализовать {{nihongo_foot}} с помощью Module: Lang для разметки языка и транслитерации{{Нихонго стопа | <английский> | <японский> | <romaji> | <extra> | <extra2> | <post> | lead = yes | group}}<English>, <japanese> и <romaji> - позиционные параметры.<Английский>: отображается так, как представлено; Предполагается, что это английский перевод <kanji / kana><japanese>: текст на японском языке с использованием японского шрифта; ТОДО: требуется?<romaji>: романизация (транслитерация) Хепберн; TODO: в модуле: текст всплывающей подсказки об изменении языка / данных на «романизацию Хепберн»?<extra> и <extra2> позиционные или именованные: | extra = и | extra2 =; смешивание может быть проблематичным<extra> отображается так, как представлено перед ним <запятая> <пробел><extra2> отображается так, как представлено перед ним <space><post> позиционный или именованный: | post = - это символ постскриптума, предшествующий тегу <ref> .. </ref> (после <English>)| lead =: принимает одно значение «да»; отображает имя языка так же, как {{lang-ja}}, но также добавляет [[Хепберн романизация | Хепберн]]: <пробел> перед латинизацией;ЗАДАЧА: в модуле: Lang отключить всплывающую подсказку для перевода, когда | lead = yesв живом шаблоне | lead = также добавляет ссылку Справка: Установка наборов символов японского языка; это не поддерживается в этом коде (nihongo и nihongo3 не имеют такой поддержки)| group =: атрибут группы в <ref group = "..."> и в {{reflist}}знак равнолокальная функция nihongo_foot ( кадр )local lang_module = require ( 'Module: Lang' .. ( frame : getTitle (): match ( '/ sandbox' ) or '' )); - если этот модуль является песочницей, используйте Module: lang / sandbox; Модуль: Lang elselocal args = require ( 'Модуль: аргументы' ). getArgs ( кадр );местный английский , японский , ромадзи , extra , extra2 = args [ 1 ], args [ 2 ], args [ 3 ], args . extra или args [ 4 ], args . extra2 или args [ 5 ]; - значащие именаargs [ 4 ] = extra или args [ 4 ]; - убедитесь, что extra является "позиционным" для использования nihongo_renderer ()local post = args [ 6 ] или args . сообщение ;локальная группа = аргументы . группа ;локальное ref_name = args . ref_namelocal lead = 'yes' == args . свинец ; - сделать логическимесли нет ( японский или ромадзи ), то - нет, вернуть сообщение об ошибкеreturn nihongo_error ( 'нихонго стопа' );конецесли японский, тояпонский = ведущий и lang_module . _lang_xx_inherit ({[ 'code' ] = 'ja' , японский }) или lang_module . _lang ({ 'джа' , яп. }); - добавить скрипт ja с языковым префиксом / без языкового префиксаконецесли ромадзи тогдаromaji = ( свинец и '[[романизация Хепберн | Хепберн]]:' или '' ) .. lang_module . _transl ({ 'JA' , 'Хепберн' , ромадзи }) или ноль ;конецлокальное форматирование = {{ '% s' , { extra }}, - 1 - дополнительно{ '% s' , { romaji }}, - 2 - romaji{ '% s,% s' , { romaji , extra }}, - 3 - romaji, extra{ '% s' , { japanese }}, - 4 - японский{ '% s,% s' , { japanese , extra }}, - 5 - японский, extra{ '% s,% s' , { japanese , romaji }}, - 6 - японские ромадзи{ '% s,% s,% s' , { japanese , romaji , extra }}, - 7 - японские romaji, extra- отсюда английский язык используется в отображении, но не отображается nihongo_renderer, поэтому не включен в таблицу{ '' , { '' }}, - 8 - английский{ '% s' , { extra }}, - 9 - дополнительно{ '% s' , { romaji }}, - 10 - romaji{ '% s,% s' , { romaji , extra }}, - 11 - romaji, extra{ '% s' , { japanese }}, - 12 - японский{ '% s,% s' , { japanese , extra }}, - 13 - японский, extra{ '% s,% s' , { japanese , romaji }}, - 14 - японские ромадзи{ '% s,% s,% s' , { japanese , romaji , extra }}, - 15 - японские romaji, extra}если английский и отправить, то - перепишите английский, чтобы включить | post =english = english .. post ; - если в английском есть значение, добавьте сообщение, иначе просто отправьте сообщениеelseif пост тогдаenglish = post ; - английский не установлен, используйте сообщениеиначе, если не английский, то - ни то, ни другое не установленоenglish = '' ; - сделать english пустой строкой для конкатенацииконецесли японский или ромадзи или extra или extra2, тогда - тег ref не установлен, если ни один из них не установлен (он будет пустым)локальный контент = nihongo_renderer ( аргументы , форматирование , extra2 );content = content : gsub ( '<5p4n>' , '' ): gsub ( '</5p4n> $' , '' , 1 ); - убрать секретные теги <5p4n> и </5p4n>, добавленные nihongo_renderer (); промежутки, не используемые в этом шаблоневернуть английский .. frame : extensionTag ({ name = 'ref' , args = { group = group , name = ref_name }, content = content }); - английский с прикрепленным ссылочным тегомещевернуть английский ; - внутри тега ref ничего не должно быть, поэтому просто верните английскийконецконец- [[-------------------------- <ЭКСПОРТИРУЕМЫЕ ФУНКЦИИ> ----------------- -------------------------]]return {нихонго = нихонго ,nihongo3 = nihongo3 ,nihongo_foot = nihongo_foot ,}