Browse Source

Merge pull request #2390 from visuddhinanda/development

Development
visuddhinanda 4 days ago
parent
commit
95bd4d5059
56 changed files with 2567 additions and 737 deletions
  1. 199 0
      api-v13/resources/lang/en/grammar.php
  2. 134 0
      api-v13/resources/lang/en/library.php
  3. 3 3
      api-v13/resources/lang/my/auth.php
  4. 2 2
      api-v13/resources/lang/my/buttons.php
  5. 199 0
      api-v13/resources/lang/my/grammar.php
  6. 4 4
      api-v13/resources/lang/my/labels.php
  7. 134 0
      api-v13/resources/lang/my/library.php
  8. 2 2
      api-v13/resources/lang/my/pagination.php
  9. 5 5
      api-v13/resources/lang/my/passwords.php
  10. 99 99
      api-v13/resources/lang/my/validation.php
  11. 3 3
      api-v13/resources/lang/si/auth.php
  12. 2 2
      api-v13/resources/lang/si/buttons.php
  13. 199 0
      api-v13/resources/lang/si/grammar.php
  14. 4 4
      api-v13/resources/lang/si/labels.php
  15. 134 0
      api-v13/resources/lang/si/library.php
  16. 2 2
      api-v13/resources/lang/si/pagination.php
  17. 5 5
      api-v13/resources/lang/si/passwords.php
  18. 99 99
      api-v13/resources/lang/si/validation.php
  19. 3 3
      api-v13/resources/lang/th/auth.php
  20. 2 2
      api-v13/resources/lang/th/buttons.php
  21. 199 0
      api-v13/resources/lang/th/grammar.php
  22. 4 4
      api-v13/resources/lang/th/labels.php
  23. 134 0
      api-v13/resources/lang/th/library.php
  24. 2 2
      api-v13/resources/lang/th/pagination.php
  25. 5 5
      api-v13/resources/lang/th/passwords.php
  26. 99 99
      api-v13/resources/lang/th/validation.php
  27. 3 3
      api-v13/resources/lang/zh-Hans/auth.php
  28. 10 0
      api-v13/resources/lang/zh-Hans/language.php
  29. 134 0
      api-v13/resources/lang/zh-Hans/library.php
  30. 2 2
      api-v13/resources/lang/zh-Hans/pagination.php
  31. 5 5
      api-v13/resources/lang/zh-Hans/passwords.php
  32. 100 99
      api-v13/resources/lang/zh-Hans/validation.php
  33. 3 3
      api-v13/resources/lang/zh-Hant/auth.php
  34. 1 1
      api-v13/resources/lang/zh-Hant/buttons.php
  35. 199 0
      api-v13/resources/lang/zh-Hant/grammar.php
  36. 10 0
      api-v13/resources/lang/zh-Hant/language.php
  37. 134 0
      api-v13/resources/lang/zh-Hant/library.php
  38. 2 2
      api-v13/resources/lang/zh-Hant/pagination.php
  39. 5 5
      api-v13/resources/lang/zh-Hant/passwords.php
  40. 12 2
      api-v13/resources/lang/zh-Hant/site.php
  41. 99 99
      api-v13/resources/lang/zh-Hant/validation.php
  42. 9 9
      api-v13/resources/views/library/anthology/index.blade.php
  43. 24 24
      api-v13/resources/views/library/anthology/show.blade.php
  44. 29 29
      api-v13/resources/views/library/book/read.blade.php
  45. 1 1
      api-v13/resources/views/library/book/toc.blade.php
  46. 15 15
      api-v13/resources/views/library/download.blade.php
  47. 12 12
      api-v13/resources/views/library/index.blade.php
  48. 1 1
      api-v13/resources/views/library/layouts/app.blade.php
  49. 13 13
      api-v13/resources/views/library/search.blade.php
  50. 16 16
      api-v13/resources/views/library/tipitaka/category.blade.php
  51. 6 6
      api-v13/resources/views/library/tipitaka/index.blade.php
  52. 16 16
      api-v13/resources/views/library/tipitaka/show.blade.php
  53. 9 9
      api-v13/resources/views/library/wiki/home.blade.php
  54. 11 11
      api-v13/resources/views/library/wiki/index.blade.php
  55. 3 3
      api-v13/resources/views/library/wiki/layouts/app.blade.php
  56. 6 6
      api-v13/resources/views/library/wiki/show.blade.php

+ 199 - 0
api-v13/resources/lang/en/grammar.php

@@ -0,0 +1,199 @@
+<?php
+
+return [
+
+    /*
+    |--------------------------------------------------------------------------
+    | site Language Lines
+    |--------------------------------------------------------------------------
+    |
+    |
+    */
+
+    'n' => 'noun',
+    'n.short' => 'n',
+    'ti' => 'three genders',
+    'ti.short' => '3g',
+    'v' => 'verb',
+    'v.short' => 'v',
+    'v:ind' => 'indeclinable verb',
+    'v:ind.short' => 'v.ind',
+    'ind' => 'indeclinable',
+    'ind.short' => 'ind',
+    'm' => 'masculine',
+    'm.short' => 'm',
+    'nt' => 'neuter',
+    'nt.short' => 'nt',
+    'f' => 'feminine',
+    'f.short' => 'f',
+    'sg' => 'singular',
+    'sg.short' => 'sg',
+    'pl' => 'plural',
+    'pl.short' => 'pl',
+    'nom' => 'nominative',
+    'nom.short' => 'nom',
+    'acc' => 'accusative',
+    'acc.short' => 'acc',
+    'gen' => 'genitive',
+    'gen.short' => 'gen',
+    'dat' => 'dative',
+    'dat.short' => 'dat',
+    'inst' => 'instrumental',
+    'inst.short' => 'ins',
+    'voc' => 'vocative',
+    'voc.short' => 'voc',
+    'abl' => 'ablative',
+    'abl.short' => 'abl',
+    'loc' => 'locative',
+    'loc.short' => 'loc',
+    'base' => 'stem',
+    'base.short' => 'stem',
+    'imp' => 'imperative',
+    'imp.short' => 'imp',
+    'cond' => 'conditional',
+    'cond.short' => 'cond',
+    'opt' => 'optative',
+    'opt.short' => 'opt',
+    'pres' => 'present',
+    'pres.short' => 'pres',
+    'aor' => 'aorist',
+    'aor.short' => 'aor',
+    'pf' => 'perfect',
+    'pf.short' => 'pf',
+    'fut' => 'future',
+    'fut.short' => 'fut',
+    'act' => 'active',
+    'act.short' => 'act',
+    'refl' => 'reflexive',
+    'refl.short' => 'refl',
+    '1p' => 'first person',
+    '1p.short' => '1p',
+    '2p' => 'second person',
+    '2p.short' => '2p',
+    '3p' => 'third person',
+    '3p.short' => '3p',
+    'prp' => 'present participle',
+    'prp.short' => 'prp',
+    'prpp' => 'passive present participle',
+    'prpp.short' => 'prpp',
+    'pp' => 'past participle',
+    'pp.short' => 'pp',
+    'ppa' => 'active past participle',
+    'ppa.short' => 'ppa',
+    'ppp' => 'passive past participle',
+    'ppp.short' => 'ppp',
+    'futp' => 'future participle',
+    'futp.short' => 'futp',
+    'fpa.short' => 'fpa',
+    'grd' => 'gerundive',
+    'grd.short' => 'grd',
+    'pass' => 'passive',
+    'pass.short' => 'pass',
+    'caus' => 'causative',
+    'caus.short' => 'caus',
+    'desid' => 'desiderative',
+    'desid.short' => 'desid',
+    'intens' => 'intensive',
+    'intens.short' => 'intens',
+    'denom' => 'denominative',
+    'denom.short' => 'denom',
+    'ger' => 'gerund',
+    'ger.short' => 'ger',
+    'abs' => 'absolutive',
+    'abs.short' => 'abs',
+    'inf' => 'infinitive',
+    'inf.short' => 'inf',
+    'adj' => 'adjective',
+    'adj.short' => 'adj',
+    'pron' => 'pronoun',
+    'pron.short' => 'pron',
+    'num' => 'numeral',
+    'num.short' => 'num',
+    'adv' => 'adverb',
+    'adv.short' => 'adv',
+    'conj' => 'conjunction',
+    'conj.short' => 'conj',
+    'prep' => 'preposition',
+    'prep.short' => 'prep',
+    'interj' => 'interjection',
+    'interj.short' => 'interj',
+    'pre' => 'prefix',
+    'pre.short' => 'pre',
+    'suf' => 'suffix',
+    'suf.short' => 'suf',
+    'end' => 'ending',
+    'end.short' => 'end',
+    'part' => 'component',
+    'part.short' => 'comp',
+    'un' => 'sandhi',
+    'un.short' => 'sandhi',
+    'none' => 'none',
+    'none.short' => '_',
+    'null' => 'null',
+    'null.short' => '_',
+    '?' => '?',
+    '?.short' => '?',
+    'ti:base' => 'three-gender stem',
+    'ti:base.short' => '3g.stem',
+    'n:base' => 'noun stem',
+    'n:base.short' => 'n.stem',
+    'v:base' => 'verb stem',
+    'v:base.short' => 'v.stem',
+    'adj:base' => 'adjective stem',
+    'adj:base.short' => 'adj.stem',
+    'fpp' => 'future passive participle',
+    'fpp.short' => 'fpp',
+    'cp.short' => 'comp',
+    'cp' => 'compound component',
+    'indconj.short' => 'conj',
+    'indconj' => 'indeclinable conjunction',
+    'pron:base.short' => 'pron.stem',
+    'pron:base' => 'pronoun stem',
+    'note.short' => 'note',
+    'note' => 'note',
+    'vind.short' => 'v.ind',
+    'vind' => 'indeclinable verb',
+    'vdn' => 'verbal noun',
+    'vdn.short' => 'v.n',
+    "relations.iad.label" => "adjunct modifier",
+    "relations.asv.label" => "agent → verb",
+    "relations.aov.label" => "object → verb",
+    "relations.daso-p.label" => "subject → copula",
+    "relations.daso-s.label" => "predicate → copula",
+    "relations.nio.label" => "described (subject) → qualifier (predicate)",
+    "relations.nid.label" => "named → naming",
+    "relations.dasd-p.label" => "<naming> subject → copula",
+    "relations.dasd-s.label" => "<naming> predicate → copula",
+    "relations.dao-p.label" => "passive double object - primary",
+    "relations.dao-s.label" => "passive double object - secondary",
+    "relations.iov.label" => "object → verb",
+    "relations.dio-p.label" => "double object <primary> → verb",
+    "relations.dio-s.label" => "double object <secondary> → verb",
+    "relations.dis-p.label" => "subject → copula (passive)",
+    "relations.dis-s.label" => "predicate → copula (passive)",
+    "relations.stc.label" => "spatiotemporal context → ongoing action",
+    "relations.adv.label" => "verb modifier → verb",
+    "relations.imp.label" => "manner → verb",
+    "relations.soe.label" => "accompaniment <with conjunction>",
+    "relations.soi.label" => "accompaniment <without conjunction>",
+    "relations.isv.label" => "<non-nominative> agent → verb",
+    "relations.cau.label" => "cause → effect / attribution",
+    "relations.iov-c.label" => "causative object → verb",
+    "relations.adj.label" => "noun modifier → modified",
+    "relations.rec.label" => "recipient → giving",
+    "relations.pur.label" => "purpose → verb",
+    "relations.det.label" => "departure point → departure",
+    "relations.coc.label" => "distinction / comparison",
+    "relations.pos.label" => "possessor → possessed",
+    "relations.coi.label" => "whole [set] → contained [subset] / collection → individual element",
+    "relations.lov.label" => "container → verb / container → contained",
+    "relations.mot.label" => "manifestation → having manifestation",
+    "relations.whp.label" => "whole → part",
+    "relations.def.label" => "defining characteristic",
+    "relations.ac.label" => "absolute clause",
+    "relations.avc.label" => "absolute voice clause",
+    "relations.qus.label" => "inside quote → quotation mark",
+    "relations.qum.label" => "quotation mark → outside quote",
+    "relations.enu.label" => "enumeration → dash",
+    "relations.enm.label" => "dash → enumerated",
+];

+ 134 - 0
api-v13/resources/lang/en/library.php

@@ -0,0 +1,134 @@
+<?php
+
+return [
+    // index.blade.php
+    'portal_title' => 'WikiPāli · Pali Library',
+    'portal_hero_title' => 'WikiPāli Pali Library',
+    'portal_hero_subtitle' => 'Explore the Tipiṭaka · Gateway to Wisdom',
+    'search_placeholder_home' => 'Search suttas, terms, collections…',
+    'section_tipitaka' => 'Tipiṭaka',
+    'enter_tipitaka' => 'Enter Tipiṭaka',
+    'more' => 'More',
+    'section_recent' => 'Recent Translations',
+    'updating_badge' => 'Updating',
+    'view_all' => 'View All',
+    'badge_new' => 'New',
+    'badge_updated' => 'Updated',
+
+    // search.blade.php
+    'search_results_title' => 'Search Results',
+    'search_title' => 'Search',
+    'search_placeholder' => 'Search entries, Pali, Sanskrit…',
+    'searching' => 'Search',
+    'results_found_prefix' => ', found',
+    'results_found_suffix' => 'results',
+    'page_prefix' => '(page',
+    'page_suffix' => ')',
+    'no_results' => ', no results found',
+    'try_other_keywords' => 'Please try other keywords',
+    'filter_by' => 'Filter by ',
+    'filter' => '',
+    'all' => 'All',
+    'did_you_mean' => 'Did you mean',
+    'browse_categories' => 'Browse Categories',
+
+    // download.blade.php
+    'download' => 'Download',
+    'offline_packets' => 'APP Offline Data Packets',
+    'packet_count_suffix' => 'packets',
+    'no_packets' => 'No Packets',
+    'no_packets_desc' => 'No offline data packets available.',
+    'col_name' => 'Packet Name',
+    'col_size' => 'File Size',
+    'col_min_version' => 'Min Version',
+    'created_at' => 'Created At',
+    'col_links' => 'Download Links',
+    'no_links' => 'No links',
+    'min_version_prefix' => 'Min version ',
+
+    // wiki blade files
+    'wiki_encyclopedia' => 'Buddhist Encyclopedia',
+    'wiki_subtitle' => 'Explore the Dharma · Gateway to Awakening',
+    'wiki_search_placeholder' => 'Search terms, scriptures, figures...',
+    'hot' => 'Hot: ',
+    'wiki_language_divider' => 'Read the Buddhist Encyclopedia in your language',
+    'articles' => 'articles',
+    'today_updates' => 'Updated today',
+    'contributors_suffix' => 'contributors',
+    'today_entry' => 'Today\'s Entry',
+    'read_full_entry' => 'Read full entry →',
+    'featured_entries' => 'Featured Entries',
+    'statistics' => 'Statistics',
+    'total_entries' => 'Total entries',
+    'this_month' => 'This month',
+    'contributors' => 'Contributors',
+    'quality_level' => 'Quality Level',
+    'other_versions' => 'Other Versions',
+    'toc' => 'Table of Contents',
+    'entry_info' => 'Entry Info',
+    'category' => 'Category',
+    'quality' => 'Quality',
+    'recent_updates' => 'Recent Updates',
+
+    // anthology
+    'site_name' => 'Pali Library',
+    'home' => 'Home',
+    'anthology' => 'Anthology',
+    'anthology_subtitle' => 'Commentaries · Meditation Guides · Dhamma Discussions',
+    'no_anthology' => 'No Anthologies',
+    'search_anthology' => 'Search anthologies…',
+    'author' => 'Author',
+    'anthology_count_suffix' => 'anthologies',
+    'last_updated' => 'Last Updated',
+    'chapter_count' => 'Chapters',
+    'chapters' => 'chapters',
+    'read_online' => 'Read Online',
+    'open_in_editor' => 'Open in Editor',
+    'about_anthology' => 'About This Anthology',
+    'anthology_info' => 'Anthology Info',
+    'language' => 'Language',
+    'created' => 'Created',
+    'updated' => 'Updated',
+    'related_anthology' => 'Related Anthologies',
+    'articles_suffix' => 'articles',
+
+    // tipitaka & reader
+    'tipitaka' => 'Tipiṭaka',
+    'categories' => 'Categories',
+    'search_tipitaka' => 'Search Tipiṭaka texts and translations',
+    'type' => 'Type',
+    'clear_filters' => 'Clear Filters',
+    'total_prefix' => 'Total',
+    'book_unit' => 'books',
+    'sort' => 'Sort',
+    'weekly_picks' => 'Weekly Picks',
+    'active_authors' => 'Active Authors',
+    'publisher' => 'Publisher',
+    'pali' => 'Pāli',
+    'book_info' => 'Book Info',
+    'editor' => 'Editor',
+    'settings' => 'Settings',
+    'versions' => 'Versions',
+    'logout' => 'Logout',
+    'select_version' => 'Select Version',
+    'no_content' => 'No content',
+    'prev_article' => 'Previous',
+    'next_article' => 'Next',
+    'tags' => 'Tags',
+    'reading_settings' => 'Reading Settings',
+    'show_original' => 'Show Original',
+    'toggle_original' => 'Toggle original text display',
+    'ui_language' => 'UI Language',
+    'auto' => 'Auto',
+    'lang_zh_hans' => 'Simplified Chinese',
+    'lang_en' => 'English',
+    'pali_script' => 'Pāli Script',
+    'script_roman' => 'Roman',
+    'script_myanmar' => 'Myanmar',
+    'script_thai' => 'Thai',
+    'commentary_version' => 'Commentary Version',
+    'none' => 'None',
+    'cancel' => 'Cancel',
+    'confirm' => 'OK',
+    'no_toc' => 'This book has no table of contents',
+];

+ 3 - 3
api-v13/resources/lang/my/auth.php

@@ -13,8 +13,8 @@ return [
     |
     */
 
-    'failed' => 'These credentials do not match our records.',
-    'password' => 'The provided password is incorrect.',
-    'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
+    'failed' => 'ဤအထောက်အထားများသည် ကျွန်ုပ်တို့၏မှတ်တမ်းနှင့် မကိုက်ညီပါ။',
+    'password' => 'ပေးထားသော စကားဝှက် မှားယွင်းနေပါသည်။',
+    'throttle' => 'အကြိမ်ရေ များစွာ ဝင်ရောက်ရန် ကြိုးစားထားပါသည်။ :seconds စက္ကန့်အကြာတွင် ထပ်မံကြိုးစားပါ။',
 
 ];

+ 2 - 2
api-v13/resources/lang/my/buttons.php

@@ -1,5 +1,5 @@
 <?php
 return [
-    'more' => 'More',
-    'online-read' =>  'Online Read',
+    'more' => 'ထပ်ကြည့်ရန်',
+    'online-read' =>  'အွန်လိုင်းဖတ်ရန်',
 ];

+ 199 - 0
api-v13/resources/lang/my/grammar.php

@@ -0,0 +1,199 @@
+<?php
+
+return [
+
+    /*
+    |--------------------------------------------------------------------------
+    | site Language Lines
+    |--------------------------------------------------------------------------
+    |
+    |
+    */
+
+    'n' => 'နာမ်',
+    'n.short' => 'နာ',
+    'ti' => 'သုံးလိင်',
+    'ti.short' => 'သုံး',
+    'v' => 'ကြိယာ',
+    'v.short' => 'ကြိ',
+    'v:ind' => 'ကြိယာမပြောင်း',
+    'v:ind.short' => 'ကြိမပ',
+    'ind' => 'မပြောင်း',
+    'ind.short' => 'မပ',
+    'm' => 'ပုလ္လိင်',
+    'm.short' => 'ပု',
+    'nt' => 'နပုံသက်',
+    'nt.short' => 'နပ',
+    'f' => 'ဣတ္ထိလိင်',
+    'f.short' => 'ဣ',
+    'sg' => 'ဧကဝုစ်',
+    'sg.short' => 'ဧ',
+    'pl' => 'ဗဟုဝုစ်',
+    'pl.short' => 'ဗ',
+    'nom' => 'ပဌမာဝိဘတ်',
+    'nom.short' => 'ပ',
+    'acc' => 'ဒုတိယာဝိဘတ်',
+    'acc.short' => 'ဒု',
+    'gen' => 'ဆဋ္ဌီဝိဘတ်',
+    'gen.short' => 'ဆ',
+    'dat' => 'စတုတ္တီဝိဘတ်',
+    'dat.short' => 'စ',
+    'inst' => 'တတိယာဝိဘတ်',
+    'inst.short' => 'တ',
+    'voc' => 'အာလပနဝိဘတ်',
+    'voc.short' => 'အာ',
+    'abl' => 'ပဉ္စမီဝိဘတ်',
+    'abl.short' => 'ပဉ်',
+    'loc' => 'သတ္တမီဝိဘတ်',
+    'loc.short' => 'သ',
+    'base' => 'ကြောင်းစ',
+    'base.short' => 'ကြ',
+    'imp' => 'ပဏ္ဍတ်',
+    'imp.short' => 'ပဏ်',
+    'cond' => 'သကြင်',
+    'cond.short' => 'သကြ',
+    'opt' => 'ဆန္ဒ',
+    'opt.short' => 'ဆ',
+    'pres' => 'ပစ္စုပ္ပန်',
+    'pres.short' => 'ပစ်',
+    'aor' => 'အတီတ',
+    'aor.short' => 'အ',
+    'pf' => 'ပရောက်ဆုံး',
+    'pf.short' => 'ပ',
+    'fut' => 'အနာဂတ်',
+    'fut.short' => 'အနာ',
+    'act' => 'ကတ္တုကာရက',
+    'act.short' => 'ကတ်',
+    'refl' => 'အတ္တနောပဒ',
+    'refl.short' => 'အတ်',
+    '1p' => 'ပထမပုဂ္ဂိုလ်',
+    '1p.short' => 'ပထ',
+    '2p' => 'မဇ္ဈိမပုဂ္ဂိုလ်',
+    '2p.short' => 'မဇ်',
+    '3p' => 'ဥတ္တမပုဂ္ဂိုလ်',
+    '3p.short' => 'ဥတ်',
+    'prp' => 'ပစ္စုပ္ပန်ကိတ်',
+    'prp.short' => 'ပကိ',
+    'prpp' => 'ကမ္မကိတ်ပစ္စုပ္ပန်',
+    'prpp.short' => 'ကပကိ',
+    'pp' => 'အတီတကိတ်',
+    'pp.short' => 'အကိ',
+    'ppa' => 'ကတ္တုအတီတကိတ်',
+    'ppa.short' => 'ကကိ',
+    'ppp' => 'ကမ္မအတီတကိတ်',
+    'ppp.short' => 'ကမ်ကိ',
+    'futp' => 'အနာဂတ်ကိတ်',
+    'futp.short' => 'အနကိ',
+    'fpa.short' => 'ကကိအနာ',
+    'grd' => 'ကိစ္စကိတ်',
+    'grd.short' => 'ကိစ်',
+    'pass' => 'ကမ္မကာရက',
+    'pass.short' => 'ကမ်',
+    'caus' => 'ပဏိဇ္ဇ',
+    'caus.short' => 'ပဏိ',
+    'desid' => 'ဆန္ဒကြိယာ',
+    'desid.short' => 'ဆကြိ',
+    'intens' => 'အာကမ္မ',
+    'intens.short' => 'အာက',
+    'denom' => 'နာမကြိယာ',
+    'denom.short' => 'နကြိ',
+    'ger' => 'ဆက်တိုက်',
+    'ger.short' => 'ဆတ်',
+    'abs' => 'ပြည့်စုံ',
+    'abs.short' => 'ပြည်',
+    'inf' => 'မသတ်',
+    'inf.short' => 'မသ',
+    'adj' => 'နာမဝိသေသန',
+    'adj.short' => 'နဝိ',
+    'pron' => 'သဗ္ဗနာမ်',
+    'pron.short' => 'သဗ်',
+    'num' => 'သင်္ချာ',
+    'num.short' => 'သ',
+    'adv' => 'ကြိယာဝိသေသန',
+    'adv.short' => 'ကဝိ',
+    'conj' => 'သမ္ဗန္ဓ',
+    'conj.short' => 'သမ်',
+    'prep' => 'ဥပသဂ်',
+    'prep.short' => 'ဥပ',
+    'interj' => 'အာမန္တ',
+    'interj.short' => 'အာမ',
+    'pre' => 'ရှေ့ဆက်',
+    'pre.short' => 'ရဆ',
+    'suf' => 'နောက်ဆက်',
+    'suf.short' => 'နဆ',
+    'end' => 'ဝိဘတ်',
+    'end.short' => 'ဝိ',
+    'part' => 'အစိတ်အပိုင်း',
+    'part.short' => 'အစိ',
+    'un' => 'သန္ဓိ',
+    'un.short' => 'သန်',
+    'none' => 'မရှိ',
+    'none.short' => '_',
+    'null' => 'ဗလာ',
+    'null.short' => '_',
+    '?' => '?',
+    '?.short' => '?',
+    'ti:base' => 'သုံးလိင်ကြောင်းစ',
+    'ti:base.short' => 'သုံးကြ',
+    'n:base' => 'နာမ်ကြောင်းစ',
+    'n:base.short' => 'နာကြ',
+    'v:base' => 'ကြိယာကြောင်းစ',
+    'v:base.short' => 'ကြိကြ',
+    'adj:base' => 'နာမဝိသေသနကြောင်းစ',
+    'adj:base.short' => 'နဝိကြ',
+    'fpp' => 'အနာဂတ်ကမ္မကိတ်',
+    'fpp.short' => 'အနကမ်',
+    'cp.short' => 'ပေါင်း',
+    'cp' => 'ပေါင်းစပ်စကားလုံး',
+    'indconj.short' => 'သမ်',
+    'indconj' => 'မပြောင်းသမ္ဗန္ဓ',
+    'pron:base.short' => 'သဗ်ကြ',
+    'pron:base' => 'သဗ္ဗနာမ်ကြောင်းစ',
+    'note.short' => 'မှတ်',
+    'note' => 'မှတ်ချက်',
+    'vind.short' => 'ကြိမပ',
+    'vind' => 'ကြိယာမပြောင်း',
+    'vdn' => 'ကြိယာဆင်းသက်နာမ်',
+    'vdn.short' => 'ကနာ',
+    "relations.iad.label" => "တူညီမျိုးပြင်ဆင်မှု",
+    "relations.asv.label" => "ကတ္တား ➡ ကြိယာ",
+    "relations.aov.label" => "ကံ ➡ ကြိယာ",
+    "relations.daso-p.label" => "ကတ္တား ➡ ကောပုလာ",
+    "relations.daso-s.label" => "ဖြည့်ကြောင်း ➡ ကောပုလာ",
+    "relations.nio.label" => "ဖော်ပြသောအရာ(ကတ္တား) ➡ ဖော်ပြချက်(ဖြည့်)",
+    "relations.nid.label" => "အမည်ပေးခြင်း ➡ အမည်",
+    "relations.dasd-p.label" => "<အမည်>ကတ္တား ➡ ကောပုလာ",
+    "relations.dasd-s.label" => "<အမည်>ဖြည့် ➡ ကောပုလာ",
+    "relations.dao-p.label" => "နှစ်ကံ-ကမ္မ(ပထမ)",
+    "relations.dao-s.label" => "နှစ်ကံ-ကမ္မ(ဒုတိယ)",
+    "relations.iov.label" => "ကံ ➡ ကြိယာ",
+    "relations.dio-p.label" => "နှစ်ကံ<ပထမ> ➡ ကြိယာ",
+    "relations.dio-s.label" => "နှစ်ကံ<ဒုတိယ> ➡ ကြိယာ",
+    "relations.dis-p.label" => "ကတ္တား ➡ ကောပုလာ(ကမ္မ)",
+    "relations.dis-s.label" => "ဖြည့် ➡ ကောပုလာ(ကမ္မ)",
+    "relations.stc.label" => "အချိန်/နေရာ ➡ ဆက်ရှိနေမှု",
+    "relations.adv.label" => "ကြိယာပြင်ဆင် ➡ ကြိယာ",
+    "relations.imp.label" => "နည်းလမ်း ➡ ကြိယာ",
+    "relations.soe.label" => "အတူပါမှု<သမ္ဗန္ဓနှင့်>",
+    "relations.soi.label" => "အတူပါမှု<သမ္ဗန္ဓမပါ>",
+    "relations.isv.label" => "<ပဌမာမဟုတ်သော>ကတ္တား ➡ ကြိယာ",
+    "relations.cau.label" => "အကြောင်း ➡ အကျိုး/မှီခို",
+    "relations.iov-c.label" => "ပဏိဇ္ဇကံ ➡ ကြိယာ",
+    "relations.adj.label" => "နာမ်ပြင်ဆင် ➡ ပြင်ဆင်ခြင်းခံ",
+    "relations.rec.label" => "လက်ခံသူ ➡ ပေးအပ်",
+    "relations.pur.label" => "ရည်ရွယ်ချက် ➡ ကြိယာ",
+    "relations.det.label" => "ထွက်ခွာရာ ➡ ထွက်ခွာ",
+    "relations.coc.label" => "နှိုင်းယှဉ်ခြင်း",
+    "relations.pos.label" => "ပိုင်ဆိုင်မှု ➡ ပိုင်ဆိုင်ခြင်းခံ",
+    "relations.coi.label" => "အစုအဖွဲ့[တစ်ခုလုံး] ➡ ပါဝင်သောအရာ[တစ်ခုချင်း]",
+    "relations.lov.label" => "ထည့်သွင်းသောအရာ ➡ ကြိယာ/ပါဝင်မှု ➡ ပါဝင်ခြင်းခံ",
+    "relations.mot.label" => "ဖော်ပြမှု ➡ ဖော်ပြမှုရှိ",
+    "relations.whp.label" => "တစ်ခုလုံး ➡ တစ်စိတ်တစ်ပိုင်း",
+    "relations.def.label" => "လက္ခဏာသတ်မှတ်ချက်",
+    "relations.ac.label" => "ပရိုကြောင်းပဒ",
+    "relations.avc.label" => "ဝိသေသနပ်ပဒ",
+    "relations.qus.label" => "ဆိုဒ်ဒုကိုးအတွင်း ➡ ကိုးကားချက်",
+    "relations.qum.label" => "ကိုးကားချက် ➡ ဆိုဒ်ဒုကိုးအပြင်",
+    "relations.enu.label" => "စာရင်းပြုစု ➡ ဒဿ",
+    "relations.enm.label" => "ဒဿ ➡ စာရင်းဝင်",
+];

+ 4 - 4
api-v13/resources/lang/my/labels.php

@@ -1,9 +1,9 @@
 <?php
 return [
-    'home' => 'Home',
-    'translation' => 'Translation',
-    'original' => 'Original',
-    'nissaya' => 'Nissaya',
+    'home' => 'ပင်မစာမျက်နှာ',
+    'translation' => 'ဘာသာပြန်',
+    'original' => 'မူရင်း',
+    'nissaya' => 'နိဿယ',
 
     'script_convertor' => 'ပါဠိစာလုံးပြောင်းစက်',
     'input_script' => 'ထည့်သွင်းစာ',

+ 134 - 0
api-v13/resources/lang/my/library.php

@@ -0,0 +1,134 @@
+<?php
+
+return [
+    // index.blade.php
+    'portal_title' => 'WikiPāli · ပါဠိစာကြည့်တိုက်',
+    'portal_hero_title' => 'WikiPāli ပါဠိစာကြည့်တိုက်',
+    'portal_hero_subtitle' => 'တိပိဋကကို လေ့လာပါ · ပညာသို့ ဝင်ပေါက်',
+    'search_placeholder_home' => 'သုတ္တာများ၊ အသုံးအနှုန်းများ၊ စုစည်းမှုများ ရှာဖွေပါ…',
+    'section_tipitaka' => 'တိပိဋက',
+    'enter_tipitaka' => 'တိပိဋကသို့ ဝင်ရောက်ပါ',
+    'more' => 'ပိုမိုကြည့်ရှုပါ',
+    'section_recent' => 'မကြာသေးမီ ဘာသာပြန်မှုများ',
+    'updating_badge' => 'အပ်ဒိတ်လုပ်နေသည်',
+    'view_all' => 'အားလုံးကြည့်ရှုပါ',
+    'badge_new' => 'အသစ်',
+    'badge_updated' => 'အပ်ဒိတ်လုပ်ပြီး',
+
+    // search.blade.php
+    'search_results_title' => 'ရှာဖွေရလဒ်များ',
+    'search_title' => 'ရှာဖွေပါ',
+    'search_placeholder' => 'ဝင်ခွင့်များ၊ ပါဠိ၊ သင်္သကြိတ် ရှာဖွေပါ…',
+    'searching' => 'ရှာဖွေပါ',
+    'results_found_prefix' => '၊ တွေ့ရှိသည်',
+    'results_found_suffix' => 'ရလဒ်များ',
+    'page_prefix' => '(စာမျက်နှာ',
+    'page_suffix' => ')',
+    'no_results' => '၊ ရလဒ်မတွေ့ပါ',
+    'try_other_keywords' => 'အခြားသော့ချက်စကားများ စမ်းကြည့်ပါ',
+    'filter_by' => 'စစ်ထုတ် ',
+    'filter' => '',
+    'all' => 'အားလုံး',
+    'did_you_mean' => 'ဆိုလိုသည်မှာ',
+    'browse_categories' => 'အမျိုးအစားများ ကြည့်ရှုပါ',
+
+    // download.blade.php
+    'download' => 'ဒေါင်းလုဒ်',
+    'offline_packets' => 'APP အော့ဖ်လိုင်း ဒေတာပက်ကတ်များ',
+    'packet_count_suffix' => 'ပက်ကတ်များ',
+    'no_packets' => 'ပက်ကတ်မရှိ',
+    'no_packets_desc' => 'အော့ဖ်လိုင်းဒေတာ ပက်ကတ်များ မရှိပါ။',
+    'col_name' => 'ပက်ကတ်အမည်',
+    'col_size' => 'ဖိုင်အရွယ်အစား',
+    'col_min_version' => 'အနိမ့်ဆုံးဗားရှင်း',
+    'created_at' => 'ဖန်တီးသည့်နေ့',
+    'col_links' => 'ဒေါင်းလုဒ်လင့်ခ်များ',
+    'no_links' => 'လင့်ခ်မရှိ',
+    'min_version_prefix' => 'အနိမ့်ဆုံးဗားရှင်း ',
+
+    // wiki blade files
+    'wiki_encyclopedia' => 'ဗုဒ္ဓဘာသာ စွယ်စုံကျမ်း',
+    'wiki_subtitle' => 'တရားတော်ကို လေ့လာပါ · နိဗ္ဗာန်သို့ ဝင်ပေါက်',
+    'wiki_search_placeholder' => 'အသုံးအနှုန်းများ၊ ကျမ်းစာများ၊ ပုဂ္ဂိုလ်များ ရှာဖွေပါ...',
+    'hot' => 'လူကြိုက်များ: ',
+    'wiki_language_divider' => 'သင့်ဘာသာစကားဖြင့် ဗုဒ္ဓဘာသာ စွယ်စုံကျမ်းကို ဖတ်ရှုပါ',
+    'articles' => 'ဆောင်းပါးများ',
+    'today_updates' => 'ယနေ့ အပ်ဒိတ်လုပ်ပြီး',
+    'contributors_suffix' => 'ပံ့ပိုးသူများ',
+    'today_entry' => 'ယနေ့ ဝင်ခွင့်',
+    'read_full_entry' => 'အပြည့်အစုံ ဖတ်ရှုပါ →',
+    'featured_entries' => 'ထူးချွန်သော ဝင်ခွင့်များ',
+    'statistics' => 'စာရင်းဇယားများ',
+    'total_entries' => 'စုစုပေါင်း ဝင်ခွင့်များ',
+    'this_month' => 'ဤလ',
+    'contributors' => 'ပံ့ပိုးသူများ',
+    'quality_level' => 'အရည်အသွေးအဆင့်',
+    'other_versions' => 'အခြားဗားရှင်းများ',
+    'toc' => 'မာတိကာ',
+    'entry_info' => 'ဝင်ခွင့်သတင်းအချက်အလက်',
+    'category' => 'အမျိုးအစား',
+    'quality' => 'အရည်အသွေး',
+    'recent_updates' => 'မကြာသေးမီ အပ်ဒိတ်များ',
+
+    // anthology
+    'site_name' => 'ပါဠိစာကြည့်တိုက်',
+    'home' => 'ပင်မစာမျက်နှာ',
+    'anthology' => 'လက်ရွေးစင်စာစုများ',
+    'anthology_subtitle' => 'အနက်ဖြာကျမ်းများ · တရားထိုင်လမ်းညွှန်များ · ဓမ္မဆွေးနွေးချက်များ',
+    'no_anthology' => 'လက်ရွေးစင်စာစုမရှိ',
+    'search_anthology' => 'လက်ရွေးစင်စာစုများ ရှာဖွေပါ…',
+    'author' => 'စာရေးဆရာ',
+    'anthology_count_suffix' => 'လက်ရွေးစင်စာစုများ',
+    'last_updated' => 'နောက်ဆုံးအပ်ဒိတ်',
+    'chapter_count' => 'အခန်းများ',
+    'chapters' => 'အခန်းများ',
+    'read_online' => 'အွန်လိုင်းဖတ်ရှုပါ',
+    'open_in_editor' => 'တည်းဖြတ်သူတွင် ဖွင့်ပါ',
+    'about_anthology' => 'ဤလက်ရွေးစင်စာစုအကြောင်း',
+    'anthology_info' => 'လက်ရွေးစင်စာစု သတင်းအချက်အလက်',
+    'language' => 'ဘာသာစကား',
+    'created' => 'ဖန်တီးသည်',
+    'updated' => 'အပ်ဒိတ်လုပ်သည်',
+    'related_anthology' => 'ဆက်စပ်သော လက်ရွေးစင်စာစုများ',
+    'articles_suffix' => 'ဆောင်းပါးများ',
+
+    // tipitaka & reader
+    'tipitaka' => 'တိပိဋက',
+    'categories' => 'အမျိုးအစားများ',
+    'search_tipitaka' => 'တိပိဋကစာသားများနှင့် ဘာသာပြန်မှုများ ရှာဖွေပါ',
+    'type' => 'အမျိုးအစား',
+    'clear_filters' => 'စစ်ထုတ်မှုများ ရှင်းလင်းပါ',
+    'total_prefix' => 'စုစုပေါင်း',
+    'book_unit' => 'စာအုပ်များ',
+    'sort' => 'စီစဉ်ပါ',
+    'weekly_picks' => 'အပတ်စဉ်ရွေးချယ်မှုများ',
+    'active_authors' => 'တက်ကြွသော စာရေးဆရာများ',
+    'publisher' => 'ထုတ်ဝေသူ',
+    'pali' => 'ပါဠိ',
+    'book_info' => 'စာအုပ်သတင်းအချက်အလက်',
+    'editor' => 'တည်းဖြတ်သူ',
+    'settings' => 'ဆက်တင်များ',
+    'versions' => 'ဗားရှင်းများ',
+    'logout' => 'ထွက်ရောက်ပါ',
+    'select_version' => 'ဗားရှင်းရွေးချယ်ပါ',
+    'no_content' => 'အကြောင်းအရာမရှိ',
+    'prev_article' => 'ယခင်',
+    'next_article' => 'နောက်',
+    'tags' => 'တက်ဂ်များ',
+    'reading_settings' => 'ဖတ်ရှုမှု ဆက်တင်များ',
+    'show_original' => 'မူရင်းပြသပါ',
+    'toggle_original' => 'မူရင်းစာသားပြသမှု ပြောင်းလဲပါ',
+    'ui_language' => 'အင်တာဖေ့စ် ဘာသာစကား',
+    'auto' => 'အလိုအလျောက်',
+    'lang_zh_hans' => 'တရုတ်ဘာသာ (ရိုးရှင်း)',
+    'lang_en' => 'အင်္ဂလိပ်',
+    'pali_script' => 'ပါဠိစာလုံး',
+    'script_roman' => 'ရောမ',
+    'script_myanmar' => 'မြန်မာ',
+    'script_thai' => 'ထိုင်း',
+    'commentary_version' => 'အနက်ဖြာဗားရှင်း',
+    'none' => 'မရှိ',
+    'cancel' => 'မလုပ်တော့',
+    'confirm' => 'အတည်ပြုပါ',
+    'no_toc' => 'ဤစာအုပ်တွင် မာတိကာမရှိပါ',
+];

+ 2 - 2
api-v13/resources/lang/my/pagination.php

@@ -13,7 +13,7 @@ return [
     |
     */
 
-    'previous' => '&laquo; Previous',
-    'next' => 'Next &raquo;',
+    'previous' => '&laquo; ယခင်',
+    'next' => 'နောက် &raquo;',
 
 ];

+ 5 - 5
api-v13/resources/lang/my/passwords.php

@@ -13,10 +13,10 @@ return [
     |
     */
 
-    'reset' => 'Your password has been reset!',
-    'sent' => 'We have emailed your password reset link!',
-    'throttled' => 'Please wait before retrying.',
-    'token' => 'This password reset token is invalid.',
-    'user' => "We can't find a user with that email address.",
+    'reset' => 'သင့်စကားဝှက်ကို ပြန်လည်သတ်မှတ်ပြီးပါပြီ။',
+    'sent' => 'စကားဝှက် ပြန်လည်သတ်မှတ်ရန် လင့်ခ်ကို အီးမေးလ်ပို့ပြီးပါပြီ။',
+    'throttled' => 'ထပ်မံမကြိုးစားမီ ခဏစောင့်ပါ။',
+    'token' => 'ဤစကားဝှက် ပြန်လည်သတ်မှတ်ရေး တိုကင်သည် မမှန်ကန်ပါ။',
+    'user' => 'ထိုအီးမေးလ်လိပ်စာဖြင့် အသုံးပြုသူကို ရှာမတွေ့ပါ။',
 
 ];

+ 99 - 99
api-v13/resources/lang/my/validation.php

@@ -13,121 +13,121 @@ return [
     |
     */
 
-    'accepted' => 'The :attribute must be accepted.',
-    'accepted_if' => 'The :attribute must be accepted when :other is :value.',
-    'active_url' => 'The :attribute is not a valid URL.',
-    'after' => 'The :attribute must be a date after :date.',
-    'after_or_equal' => 'The :attribute must be a date after or equal to :date.',
-    'alpha' => 'The :attribute must only contain letters.',
-    'alpha_dash' => 'The :attribute must only contain letters, numbers, dashes and underscores.',
-    'alpha_num' => 'The :attribute must only contain letters and numbers.',
-    'array' => 'The :attribute must be an array.',
-    'before' => 'The :attribute must be a date before :date.',
-    'before_or_equal' => 'The :attribute must be a date before or equal to :date.',
+    'accepted' => ':attribute ကို လက်ခံရပါမည်။',
+    'accepted_if' => ':other သည် :value ဖြစ်သောအခါ :attribute ကို လက်ခံရပါမည်။',
+    'active_url' => ':attribute သည် မမှန်ကန်သော URL ဖြစ်သည်။',
+    'after' => ':attribute သည် :date နောက်ပိုင်း ရက်စွဲဖြစ်ရပါမည်။',
+    'after_or_equal' => ':attribute သည် :date နှင့် ညီမျှသော သို့မဟုတ် နောက်ပိုင်း ရက်စွဲဖြစ်ရပါမည်။',
+    'alpha' => ':attribute တွင် စာလုံးများသာ ပါဝင်နိုင်သည်။',
+    'alpha_dash' => ':attribute တွင် စာလုံး၊ ဂဏန်း၊ တိုက်ပိုင်း နှင့် အောက်မျဉ်းများသာ ပါဝင်နိုင်သည်။',
+    'alpha_num' => ':attribute တွင် စာလုံး နှင့် ဂဏန်းများသာ ပါဝင်နိုင်သည်။',
+    'array' => ':attribute သည် array ဖြစ်ရပါမည်။',
+    'before' => ':attribute သည် :date မတိုင်မီ ရက်စွဲဖြစ်ရပါမည်။',
+    'before_or_equal' => ':attribute သည် :date နှင့် ညီမျှသော သို့မဟုတ် မတိုင်မီ ရက်စွဲဖြစ်ရပါမည်။',
     'between' => [
-        'numeric' => 'The :attribute must be between :min and :max.',
-        'file' => 'The :attribute must be between :min and :max kilobytes.',
-        'string' => 'The :attribute must be between :min and :max characters.',
-        'array' => 'The :attribute must have between :min and :max items.',
+        'numeric' => ':attribute သည် :min နှင့် :max အကြား ဖြစ်ရပါမည်။',
+        'file' => ':attribute သည် :min နှင့် :max ကီလိုဘိုက်အကြား ဖြစ်ရပါမည်။',
+        'string' => ':attribute သည် :min နှင့် :max လုံးကြားရှိ စာလုံးများ ဖြစ်ရပါမည်။',
+        'array' => ':attribute တွင် :min နှင့် :max ခုကြားရှိ အရာများ ပါဝင်ရပါမည်။',
     ],
-    'boolean' => 'The :attribute field must be true or false.',
-    'confirmed' => 'The :attribute confirmation does not match.',
-    'current_password' => 'The password is incorrect.',
-    'date' => 'The :attribute is not a valid date.',
-    'date_equals' => 'The :attribute must be a date equal to :date.',
-    'date_format' => 'The :attribute does not match the format :format.',
-    'declined' => 'The :attribute must be declined.',
-    'declined_if' => 'The :attribute must be declined when :other is :value.',
-    'different' => 'The :attribute and :other must be different.',
-    'digits' => 'The :attribute must be :digits digits.',
-    'digits_between' => 'The :attribute must be between :min and :max digits.',
-    'dimensions' => 'The :attribute has invalid image dimensions.',
-    'distinct' => 'The :attribute field has a duplicate value.',
-    'email' => 'The :attribute must be a valid email address.',
-    'ends_with' => 'The :attribute must end with one of the following: :values.',
-    'enum' => 'The selected :attribute is invalid.',
-    'exists' => 'The selected :attribute is exists.',
-    'file' => 'The :attribute must be a file.',
-    'filled' => 'The :attribute field must have a value.',
+    'boolean' => ':attribute ကွက်လပ်သည် true သို့မဟုတ် false ဖြစ်ရပါမည်။',
+    'confirmed' => ':attribute အတည်ပြုချက် မကိုက်ညီပါ။',
+    'current_password' => 'စကားဝှက် မှားယွင်းနေပါသည်။',
+    'date' => ':attribute သည် မမှန်ကန်သော ရက်စွဲဖြစ်သည်။',
+    'date_equals' => ':attribute သည် :date နှင့် ညီမျှသော ရက်စွဲဖြစ်ရပါမည်။',
+    'date_format' => ':attribute သည် :format ပုံစံနှင့် မကိုက်ညီပါ။',
+    'declined' => ':attribute ကို ငြင်းပယ်ရပါမည်။',
+    'declined_if' => ':other သည် :value ဖြစ်သောအခါ :attribute ကို ငြင်းပယ်ရပါမည်။',
+    'different' => ':attribute နှင့် :other သည် မတူညီရပါမည်။',
+    'digits' => ':attribute သည် :digits လုံးရှိ ဂဏန်းဖြစ်ရပါမည်။',
+    'digits_between' => ':attribute သည် :min နှင့် :max လုံးကြားရှိ ဂဏန်းဖြစ်ရပါမည်။',
+    'dimensions' => ':attribute တွင် မမှန်ကန်သော ပုံ၏ အရွယ်အစားများ ရှိနေသည်။',
+    'distinct' => ':attribute ကွက်လပ်တွင် ထပ်တူတန်ဖိုး ရှိနေသည်။',
+    'email' => ':attribute သည် မှန်ကန်သော အီးမေးလ်လိပ်စာ ဖြစ်ရပါမည်။',
+    'ends_with' => ':attribute သည် အောက်ပါတို့ထဲမှ တစ်ခုဖြင့် ဆုံးရပါမည်: :values။',
+    'enum' => 'ရွေးချယ်ထားသော :attribute မမှန်ကန်ပါ။',
+    'exists' => 'ရွေးချယ်ထားသော :attribute ရှိပြီးဖြစ်သည်။',
+    'file' => ':attribute သည် ဖိုင်ဖြစ်ရပါမည်။',
+    'filled' => ':attribute ကွက်လပ်တွင် တန်ဖိုး ရှိရပါမည်။',
     'gt' => [
-        'numeric' => 'The :attribute must be greater than :value.',
-        'file' => 'The :attribute must be greater than :value kilobytes.',
-        'string' => 'The :attribute must be greater than :value characters.',
-        'array' => 'The :attribute must have more than :value items.',
+        'numeric' => ':attribute သည် :value ထက် ကြီးရပါမည်။',
+        'file' => ':attribute သည် :value ကီလိုဘိုက်ထက် ကြီးရပါမည်။',
+        'string' => ':attribute သည် :value လုံးထက် ပိုများသော စာလုံးများ ရှိရပါမည်။',
+        'array' => ':attribute တွင် :value ခုထက် ပိုများသော အရာများ ရှိရပါမည်။',
     ],
     'gte' => [
-        'numeric' => 'The :attribute must be greater than or equal to :value.',
-        'file' => 'The :attribute must be greater than or equal to :value kilobytes.',
-        'string' => 'The :attribute must be greater than or equal to :value characters.',
-        'array' => 'The :attribute must have :value items or more.',
+        'numeric' => ':attribute သည် :value နှင့် ညီမျှသော သို့မဟုတ် ကြီးရပါမည်။',
+        'file' => ':attribute သည် :value ကီလိုဘိုက်နှင့် ညီမျှသော သို့မဟုတ် ကြီးရပါမည်။',
+        'string' => ':attribute သည် :value လုံးနှင့် ညီမျှသော သို့မဟုတ် ပိုများသော စာလုံးများ ရှိရပါမည်။',
+        'array' => ':attribute တွင် :value ခု သို့မဟုတ် ပိုများသော အရာများ ရှိရပါမည်။',
     ],
-    'image' => 'The :attribute must be an image.',
-    'in' => 'The selected :attribute is invalid.',
-    'in_array' => 'The :attribute field does not exist in :other.',
-    'integer' => 'The :attribute must be an integer.',
-    'ip' => 'The :attribute must be a valid IP address.',
-    'ipv4' => 'The :attribute must be a valid IPv4 address.',
-    'ipv6' => 'The :attribute must be a valid IPv6 address.',
-    'mac_address' => 'The :attribute must be a valid MAC address.',
-    'json' => 'The :attribute must be a valid JSON string.',
+    'image' => ':attribute သည် ပုံဖိုင်ဖြစ်ရပါမည်။',
+    'in' => 'ရွေးချယ်ထားသော :attribute မမှန်ကန်ပါ။',
+    'in_array' => ':attribute ကွက်လပ်သည် :other တွင် မရှိပါ။',
+    'integer' => ':attribute သည် ကိန်းပြည့်ဖြစ်ရပါမည်။',
+    'ip' => ':attribute သည် မှန်ကန်သော IP လိပ်စာဖြစ်ရပါမည်။',
+    'ipv4' => ':attribute သည် မှန်ကန်သော IPv4 လိပ်စာဖြစ်ရပါမည်။',
+    'ipv6' => ':attribute သည် မှန်ကန်သော IPv6 လိပ်စာဖြစ်ရပါမည်။',
+    'mac_address' => ':attribute သည် မှန်ကန်သော MAC လိပ်စာဖြစ်ရပါမည်။',
+    'json' => ':attribute သည် မှန်ကန်သော JSON string ဖြစ်ရပါမည်။',
     'lt' => [
-        'numeric' => 'The :attribute must be less than :value.',
-        'file' => 'The :attribute must be less than :value kilobytes.',
-        'string' => 'The :attribute must be less than :value characters.',
-        'array' => 'The :attribute must have less than :value items.',
+        'numeric' => ':attribute သည် :value ထက် သေးငယ်ရပါမည်။',
+        'file' => ':attribute သည် :value ကီလိုဘိုက်ထက် သေးငယ်ရပါမည်။',
+        'string' => ':attribute သည် :value လုံးထက် နည်းသော စာလုံးများ ရှိရပါမည်။',
+        'array' => ':attribute တွင် :value ခုထက် နည်းသော အရာများ ရှိရပါမည်။',
     ],
     'lte' => [
-        'numeric' => 'The :attribute must be less than or equal to :value.',
-        'file' => 'The :attribute must be less than or equal to :value kilobytes.',
-        'string' => 'The :attribute must be less than or equal to :value characters.',
-        'array' => 'The :attribute must not have more than :value items.',
+        'numeric' => ':attribute သည် :value နှင့် ညီမျှသော သို့မဟုတ် သေးငယ်ရပါမည်။',
+        'file' => ':attribute သည် :value ကီလိုဘိုက်နှင့် ညီမျှသော သို့မဟုတ် သေးငယ်ရပါမည်။',
+        'string' => ':attribute သည် :value လုံးနှင့် ညီမျှသော သို့မဟုတ် နည်းသော စာလုံးများ ရှိရပါမည်။',
+        'array' => ':attribute တွင် :value ခုထက် ပိုများသော အရာများ မပါဝင်ရပါ။',
     ],
     'max' => [
-        'numeric' => 'The :attribute must not be greater than :max.',
-        'file' => 'The :attribute must not be greater than :max kilobytes.',
-        'string' => 'The :attribute must not be greater than :max characters.',
-        'array' => 'The :attribute must not have more than :max items.',
+        'numeric' => ':attribute သည် :max ထက် မကြီးရပါ။',
+        'file' => ':attribute သည် :max ကီလိုဘိုက်ထက် မကြီးရပါ။',
+        'string' => ':attribute သည် :max လုံးထက် မပိုရပါ။',
+        'array' => ':attribute တွင် :max ခုထက် ပိုများသော အရာများ မပါဝင်ရပါ။',
     ],
-    'mimes' => 'The :attribute must be a file of type: :values.',
-    'mimetypes' => 'The :attribute must be a file of type: :values.',
+    'mimes' => ':attribute သည် ဤအမျိုးအစား ဖိုင်ဖြစ်ရပါမည်: :values။',
+    'mimetypes' => ':attribute သည် ဤအမျိုးအစား ဖိုင်ဖြစ်ရပါမည်: :values။',
     'min' => [
-        'numeric' => 'The :attribute must be at least :min.',
-        'file' => 'The :attribute must be at least :min kilobytes.',
-        'string' => 'The :attribute must be at least :min characters.',
-        'array' => 'The :attribute must have at least :min items.',
+        'numeric' => ':attribute သည် အနည်းဆုံး :min ဖြစ်ရပါမည်။',
+        'file' => ':attribute သည် အနည်းဆုံး :min ကီလိုဘိုက်ဖြစ်ရပါမည်။',
+        'string' => ':attribute သည် အနည်းဆုံး :min လုံးရှိသော စာလုံးများ ဖြစ်ရပါမည်။',
+        'array' => ':attribute တွင် အနည်းဆုံး :min ခုရှိသော အရာများ ပါဝင်ရပါမည်။',
     ],
-    'multiple_of' => 'The :attribute must be a multiple of :value.',
-    'not_in' => 'The selected :attribute is invalid.',
-    'not_regex' => 'The :attribute format is invalid.',
-    'numeric' => 'The :attribute must be a number.',
-    'password' => 'The password is incorrect.',
-    'present' => 'The :attribute field must be present.',
-    'prohibited' => 'The :attribute field is prohibited.',
-    'prohibited_if' => 'The :attribute field is prohibited when :other is :value.',
-    'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.',
-    'prohibits' => 'The :attribute field prohibits :other from being present.',
-    'regex' => 'The :attribute format is invalid.',
-    'required' => 'The :attribute field is required.',
-    'required_if' => 'The :attribute field is required when :other is :value.',
-    'required_unless' => 'The :attribute field is required unless :other is in :values.',
-    'required_with' => 'The :attribute field is required when :values is present.',
-    'required_with_all' => 'The :attribute field is required when :values are present.',
-    'required_without' => 'The :attribute field is required when :values is not present.',
-    'required_without_all' => 'The :attribute field is required when none of :values are present.',
-    'same' => 'The :attribute and :other must match.',
+    'multiple_of' => ':attribute သည် :value ၏ အဆတိုးဖြစ်ရပါမည်။',
+    'not_in' => 'ရွေးချယ်ထားသော :attribute မမှန်ကန်ပါ။',
+    'not_regex' => ':attribute ပုံစံ မမှန်ကန်ပါ။',
+    'numeric' => ':attribute သည် ဂဏန်းဖြစ်ရပါမည်။',
+    'password' => 'စကားဝှက် မှားယွင်းနေပါသည်။',
+    'present' => ':attribute ကွက်လပ် ရှိရပါမည်။',
+    'prohibited' => ':attribute ကွက်လပ် ခွင့်မပြုပါ။',
+    'prohibited_if' => ':other သည် :value ဖြစ်သောအခါ :attribute ကွက်လပ် ခွင့်မပြုပါ။',
+    'prohibited_unless' => ':other သည် :values တွင် မပါဝင်သမျှ :attribute ကွက်လပ် ခွင့်မပြုပါ။',
+    'prohibits' => ':attribute ကွက်လပ်သည် :other ၏ ပါဝင်မှုကို တားမြစ်သည်။',
+    'regex' => ':attribute ပုံစံ မမှန်ကန်ပါ။',
+    'required' => ':attribute ကွက်လပ် လိုအပ်သည်။',
+    'required_if' => ':other သည် :value ဖြစ်သောအခါ :attribute ကွက်လပ် လိုအပ်သည်။',
+    'required_unless' => ':other သည် :values တွင် မပါဝင်သမျှ :attribute ကွက်လပ် လိုအပ်သည်။',
+    'required_with' => ':values ရှိသောအခါ :attribute ကွက်လပ် လိုအပ်သည်။',
+    'required_with_all' => ':values များ ရှိသောအခါ :attribute ကွက်လပ် လိုအပ်သည်။',
+    'required_without' => ':values မရှိသောအခါ :attribute ကွက်လပ် လိုအပ်သည်။',
+    'required_without_all' => ':values များ မရှိသောအခါ :attribute ကွက်လပ် လိုအပ်သည်။',
+    'same' => ':attribute နှင့် :other တူညီရပါမည်။',
     'size' => [
-        'numeric' => 'The :attribute must be :size.',
-        'file' => 'The :attribute must be :size kilobytes.',
-        'string' => 'The :attribute must be :size characters.',
-        'array' => 'The :attribute must contain :size items.',
+        'numeric' => ':attribute သည် :size ဖြစ်ရပါမည်။',
+        'file' => ':attribute သည် :size ကီလိုဘိုက် ဖြစ်ရပါမည်။',
+        'string' => ':attribute သည် :size လုံးရှိသော စာလုံးများ ဖြစ်ရပါမည်။',
+        'array' => ':attribute တွင် :size ခုရှိသော အရာများ ပါဝင်ရပါမည်။',
     ],
-    'starts_with' => 'The :attribute must start with one of the following: :values.',
-    'string' => 'The :attribute must be a string.',
-    'timezone' => 'The :attribute must be a valid timezone.',
-    'unique' => 'The :attribute has already been taken.',
-    'uploaded' => 'The :attribute failed to upload.',
-    'url' => 'The :attribute must be a valid URL.',
-    'uuid' => 'The :attribute must be a valid UUID.',
+    'starts_with' => ':attribute သည် အောက်ပါတို့ထဲမှ တစ်ခုဖြင့် စတင်ရပါမည်: :values။',
+    'string' => ':attribute သည် စာသားဖြစ်ရပါမည်။',
+    'timezone' => ':attribute သည် မှန်ကန်သော အချိန်ဇုန်ဖြစ်ရပါမည်။',
+    'unique' => ':attribute ကို အသုံးပြုပြီးဖြစ်သည်။',
+    'uploaded' => ':attribute တင်သွင်းမှု မအောင်မြင်ပါ။',
+    'url' => ':attribute သည် မှန်ကန်သော URL ဖြစ်ရပါမည်။',
+    'uuid' => ':attribute သည် မှန်ကန်သော UUID ဖြစ်ရပါမည်။',
 
     /*
     |--------------------------------------------------------------------------

+ 3 - 3
api-v13/resources/lang/si/auth.php

@@ -13,8 +13,8 @@ return [
     |
     */
 
-    'failed' => 'These credentials do not match our records.',
-    'password' => 'The provided password is incorrect.',
-    'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
+    'failed' => 'මෙම අක්තපත්‍ර අපගේ වාර්තා සමඟ නොගැලපේ.',
+    'password' => 'ලබා දුන් මුරපදය වැරදිය.',
+    'throttle' => 'පිවිසීමට උත්සාහ කිරීම් ඉතා වැඩිය. කරුණාකර :seconds තත්පරයකින් නැවත උත්සාහ කරන්න.',
 
 ];

+ 2 - 2
api-v13/resources/lang/si/buttons.php

@@ -1,5 +1,5 @@
 <?php
 return [
-    'more' => 'More',
-    'online-read' =>  'Online Read',
+    'more' => 'තව',
+    'online-read' =>  'මාර්ගගතව කියවන්න',
 ];

+ 199 - 0
api-v13/resources/lang/si/grammar.php

@@ -0,0 +1,199 @@
+<?php
+
+return [
+
+    /*
+    |--------------------------------------------------------------------------
+    | site Language Lines
+    |--------------------------------------------------------------------------
+    |
+    |
+    */
+
+    'n' => 'නාම',
+    'n.short' => 'නා',
+    'ti' => 'ත්‍රිලිංග',
+    'ti.short' => 'ත්‍රි',
+    'v' => 'ක්‍රියා',
+    'v.short' => 'ක්‍රි',
+    'v:ind' => 'ක්‍රියා අව්‍යය',
+    'v:ind.short' => 'ක්‍රි.අ',
+    'ind' => 'අව්‍යය',
+    'ind.short' => 'අ',
+    'm' => 'පුල්ලිංග',
+    'm.short' => 'පු',
+    'nt' => 'නපුංසකලිංග',
+    'nt.short' => 'න',
+    'f' => 'ඉත්‍ථිලිංග',
+    'f.short' => 'ඉ',
+    'sg' => 'එකවචන',
+    'sg.short' => 'ඒ',
+    'pl' => 'බහුවචන',
+    'pl.short' => 'බ',
+    'nom' => 'පඨමා',
+    'nom.short' => 'ප',
+    'acc' => 'දුතියා',
+    'acc.short' => 'දු',
+    'gen' => 'ඡට්ඨී',
+    'gen.short' => 'ඡ',
+    'dat' => 'චතුත්‍ථී',
+    'dat.short' => 'ච',
+    'inst' => 'තතියා',
+    'inst.short' => 'ත',
+    'voc' => 'ආලපන',
+    'voc.short' => 'ආ',
+    'abl' => 'පඤ්චමී',
+    'abl.short' => 'පං',
+    'loc' => 'සත්‍තමී',
+    'loc.short' => 'ස',
+    'base' => 'ප්‍රාතිපදිකය',
+    'base.short' => 'ප්‍රා',
+    'imp' => 'ආඥාර්ථ',
+    'imp.short' => 'ආඥා',
+    'cond' => 'ශර්තාර්ථ',
+    'cond.short' => 'ශර්ත',
+    'opt' => 'කාමාර්ථ',
+    'opt.short' => 'කාම',
+    'pres' => 'වර්තමාන',
+    'pres.short' => 'වර්',
+    'aor' => 'අතීත',
+    'aor.short' => 'අ',
+    'pf' => 'පූර්ණ',
+    'pf.short' => 'පූ',
+    'fut' => 'අනාගත',
+    'fut.short' => 'අනා',
+    'act' => 'කත්තු',
+    'act.short' => 'කත්',
+    'refl' => 'අත්තනෝපද',
+    'refl.short' => 'අත්',
+    '1p' => 'ප්‍රථම පුරුෂ',
+    '1p.short' => '1',
+    '2p' => 'මධ්‍යම පුරුෂ',
+    '2p.short' => '2',
+    '3p' => 'උත්තම පුරුෂ',
+    '3p.short' => '3',
+    'prp' => 'වර්තමාන කෘදන්ත',
+    'prp.short' => 'ව.කෘ',
+    'prpp' => 'කර්ම වර්තමාන කෘදන්ත',
+    'prpp.short' => 'ක.ව.කෘ',
+    'pp' => 'අතීත කෘදන්ත',
+    'pp.short' => 'අ.කෘ',
+    'ppa' => 'කත්තු අතීත කෘදන්ත',
+    'ppa.short' => 'ක.අ.කෘ',
+    'ppp' => 'කර්ම අතීත කෘදන්ත',
+    'ppp.short' => 'ක.ක.කෘ',
+    'futp' => 'අනාගත කෘදන්ත',
+    'futp.short' => 'අ.කෘ',
+    'fpa.short' => 'ක.අ.කෘ',
+    'grd' => 'කිය යුතු',
+    'grd.short' => 'කිය',
+    'pass' => 'කර්ම',
+    'pass.short' => 'ක',
+    'caus' => 'හේතු',
+    'caus.short' => 'හේ',
+    'desid' => 'ඉච්ඡා',
+    'desid.short' => 'ඉ',
+    'intens' => 'තීව්‍ර',
+    'intens.short' => 'තී',
+    'denom' => 'නාම ක්‍රියා',
+    'denom.short' => 'නා.ක්‍රි',
+    'ger' => 'ක්‍රියා නාම',
+    'ger.short' => 'ක්‍රි.නා',
+    'abs' => 'සම්පූර්ණ',
+    'abs.short' => 'සම්',
+    'inf' => 'ක්‍රියා සාධාරණ',
+    'inf.short' => 'ක්‍රි.සා',
+    'adj' => 'විශේෂණ',
+    'adj.short' => 'වි',
+    'pron' => 'සර්වනාම',
+    'pron.short' => 'සර්',
+    'num' => 'සංඛ්‍යා',
+    'num.short' => 'සං',
+    'adv' => 'ක්‍රියා විශේෂණ',
+    'adv.short' => 'ක්‍රි.වි',
+    'conj' => 'සමුච්චය',
+    'conj.short' => 'ස',
+    'prep' => 'ගෙවිලි',
+    'prep.short' => 'ගෙ',
+    'interj' => 'ආශ්චර්ය',
+    'interj.short' => 'ආශ්',
+    'pre' => 'උපසර්ගය',
+    'pre.short' => 'උ',
+    'suf' => 'ප්‍රත්‍යය',
+    'suf.short' => 'ප්‍ර',
+    'end' => 'විභක්ති',
+    'end.short' => 'වි',
+    'part' => 'සංයෝගය',
+    'part.short' => 'සං',
+    'un' => 'සන්ධිය',
+    'un.short' => 'සන්',
+    'none' => 'නැත',
+    'none.short' => '_',
+    'null' => 'හිස්',
+    'null.short' => '_',
+    '?' => '?',
+    '?.short' => '?',
+    'ti:base' => 'ත්‍රිලිංග ප්‍රාතිපදිකය',
+    'ti:base.short' => 'ත්‍රි.ප්‍රා',
+    'n:base' => 'නාම ප්‍රාතිපදිකය',
+    'n:base.short' => 'නා.ප්‍රා',
+    'v:base' => 'ක්‍රියා ප්‍රාතිපදිකය',
+    'v:base.short' => 'ක්‍රි.ප්‍රා',
+    'adj:base' => 'විශේෂණ ප්‍රාතිපදිකය',
+    'adj:base.short' => 'වි.ප්‍රා',
+    'fpp' => 'අනාගත කර්ම කෘදන්ත',
+    'fpp.short' => 'අ.ක.කෘ',
+    'cp.short' => 'සං',
+    'cp' => 'සමාස අංගය',
+    'indconj.short' => 'ස',
+    'indconj' => 'සමුච්චය',
+    'pron:base.short' => 'සර්.ප්‍රා',
+    'pron:base' => 'සර්වනාම ප්‍රාතිපදිකය',
+    'note.short' => 'සටහ',
+    'note' => 'සටහන',
+    'vind.short' => 'ක්‍රි.අ',
+    'vind' => 'ක්‍රියා අව්‍යය',
+    'vdn' => 'ව්‍යුත්පන්න ක්‍රියා නාම',
+    'vdn.short' => 'ව්‍යු.ක්‍රි',
+    "relations.iad.label" => "සමාන ජාතීය විශේෂණය",
+    "relations.asv.label" => "කර්තෘ ➡ ක්‍රියාව",
+    "relations.aov.label" => "කර්මය ➡ ක්‍රියාව",
+    "relations.daso-p.label" => "කර්තෘ ➡ සම්බන්ධ ක්‍රියාව",
+    "relations.daso-s.label" => "විධේය ➡ සම්බන්ධ ක්‍රියාව",
+    "relations.nio.label" => "විෂය (කර්තෘ) ➡ ගුණ (විධේය)",
+    "relations.nid.label" => "නාමය ➡ නාමකරණය",
+    "relations.dasd-p.label" => "<නාමකරණ> කර්තෘ ➡ සම්බන්ධය",
+    "relations.dasd-s.label" => "<නාමකරණ> විධේය ➡ සම්බන්ධය",
+    "relations.dao-p.label" => "කර්ම ද්විකර්මක - ප්‍රාථමික",
+    "relations.dao-s.label" => "කර්ම ද්විකර්මක - ද්විතීයික",
+    "relations.iov.label" => "අනිත්‍ය කර්මය ➡ ක්‍රියාව",
+    "relations.dio-p.label" => "ද්විකර්මක <ප්‍රාථමික> ➡ ක්‍රියාව",
+    "relations.dio-s.label" => "ද්විකර්මක <ද්විතීයික> ➡ ක්‍රියාව",
+    "relations.dis-p.label" => "කර්තෘ ➡ සම්බන්ධය (කර්ම)",
+    "relations.dis-s.label" => "විධේය ➡ සම්බන්ධය (කර්ම)",
+    "relations.stc.label" => "කාල-අවකාශ අඛණ්ඩිත ➡ ක්‍රියාව",
+    "relations.adv.label" => "ක්‍රියා විශේෂණය ➡ ක්‍රියාව",
+    "relations.imp.label" => "ආකාරය ➡ ක්‍රියාව",
+    "relations.soe.label" => "<සමුච්චය සහිත> සාමූහික සම්බන්ධය",
+    "relations.soi.label" => "<සමුච්චය රහිත> සාමූහික සම්බන්ධය",
+    "relations.isv.label" => "<ප්‍රථමා නොවන> කර්තෘ ➡ ක්‍රියාව",
+    "relations.cau.label" => "හේතුව ➡ ප්‍රතිඵලය / ආරෝපණය",
+    "relations.iov-c.label" => "හේතු කර්මය ➡ ක්‍රියාව",
+    "relations.adj.label" => "විශේෂණය ➡ විශේෂ්‍යයය",
+    "relations.rec.label" => "ලාභී ➡ දීම",
+    "relations.pur.label" => "අරමුණ ➡ ක්‍රියාව",
+    "relations.det.label" => "ප්‍රාරම්භ ස්ථානය ➡ නිෂ්ක්‍රමණය",
+    "relations.coc.label" => "සංසන්දනය",
+    "relations.pos.label" => "හිමිකරු ➡ දේපළ",
+    "relations.coi.label" => "සමූහය ➡ සාමාජිකය",
+    "relations.lov.label" => "ධාරකය ➡ ක්‍රියාව / ධාරකය ➡ ධාරිතය",
+    "relations.mot.label" => "ප්‍රකාශනය ➡ ප්‍රකාශකය",
+    "relations.whp.label" => "සමස්තය ➡ අංශය",
+    "relations.def.label" => "ලක්ෂණ නිර්ණය",
+    "relations.ac.label" => "නිරපේක්ෂ උපවාක්‍යය",
+    "relations.avc.label" => "නිරපේක්ෂ ක්‍රියා ආකාර උපවාක්‍යය",
+    "relations.qus.label" => "උද්ධෘත ➡ උද්ධෘත ලකුණ",
+    "relations.qum.label" => "උද්ධෘත ලකුණ ➡ බාහිරය",
+    "relations.enu.label" => "ලැයිස්තු ➡ ඉර",
+    "relations.enm.label" => "ඉර ➡ ලැයිස්තු",
+];

+ 4 - 4
api-v13/resources/lang/si/labels.php

@@ -1,9 +1,9 @@
 <?php
 return [
-    'home' => 'Home',
-    'translation' => 'Translation',
-    'original' => 'Original',
-    'nissaya' => 'Nissaya',
+    'home' => 'මුල් පිටුව',
+    'translation' => 'පරිවර්තනය',
+    'original' => 'මූලික',
+    'nissaya' => 'නිස්සය',
 
     'script_convertor' => 'පාලි අක්ෂර පරිවර්තකය',
     'input_script' => 'ආදාන අක්ෂර',

+ 134 - 0
api-v13/resources/lang/si/library.php

@@ -0,0 +1,134 @@
+<?php
+
+return [
+    // index.blade.php
+    'portal_title' => 'WikiPāli · පාලි පුස්තකාලය',
+    'portal_hero_title' => 'WikiPāli පාලි පුස්තකාලය',
+    'portal_hero_subtitle' => 'තිපිටකය ගවේෂණය කරන්න · ප්‍රඥාවට දොරටුව',
+    'search_placeholder_home' => 'සූත්‍ර, පද, එකතු සොයන්න…',
+    'section_tipitaka' => 'තිපිටකය',
+    'enter_tipitaka' => 'තිපිටකයට ඇතුළු වන්න',
+    'more' => 'තවත්',
+    'section_recent' => 'මෑත පරිවර්තන',
+    'updating_badge' => 'යාවත්කාලීන වෙමින්',
+    'view_all' => 'සියල්ල බලන්න',
+    'badge_new' => 'නව',
+    'badge_updated' => 'යාවත්කාලීන',
+
+    // search.blade.php
+    'search_results_title' => 'සෙවුම් ප්‍රතිඵල',
+    'search_title' => 'සෙවීම',
+    'search_placeholder' => 'ඇතුළත්කිරීම්, පාලි, සංස්කෘත සොයන්න…',
+    'searching' => 'සොයන්න',
+    'results_found_prefix' => ', සොයාගත්',
+    'results_found_suffix' => 'ප්‍රතිඵල',
+    'page_prefix' => '(පිටුව',
+    'page_suffix' => ')',
+    'no_results' => ', ප්‍රතිඵල හමු නොවීය',
+    'try_other_keywords' => 'කරුණාකර වෙනත් යතුරු පද උත්සාහ කරන්න',
+    'filter_by' => 'පෙරීම: ',
+    'filter' => '',
+    'all' => 'සියල්ල',
+    'did_you_mean' => 'ඔබ අදහස් කළේ',
+    'browse_categories' => 'කාණ්ඩ බලන්න',
+
+    // download.blade.php
+    'download' => 'බාගන්න',
+    'offline_packets' => 'APP නොබැඳි දත්ත පැකේජ',
+    'packet_count_suffix' => 'පැකේජ',
+    'no_packets' => 'පැකේජ නොමැත',
+    'no_packets_desc' => 'නොබැඳි දත්ත පැකේජ නොමැත.',
+    'col_name' => 'පැකේජ නාමය',
+    'col_size' => 'ගොනු ප්‍රමාණය',
+    'col_min_version' => 'අවම අනුවාදය',
+    'created_at' => 'නිර්මිත දිනය',
+    'col_links' => 'බාගත කිරීමේ සබැඳි',
+    'no_links' => 'සබැඳි නොමැත',
+    'min_version_prefix' => 'අවම අනුවාදය ',
+
+    // wiki blade files
+    'wiki_encyclopedia' => 'බෞද්ධ විශ්වකෝෂය',
+    'wiki_subtitle' => 'ධර්මය ගවේෂණය කරන්න · අවබෝධයට දොරටුව',
+    'wiki_search_placeholder' => 'පද, ශාස්ත්‍ර, පුද්ගලයන් සොයන්න...',
+    'hot' => 'ජනප්‍රිය: ',
+    'wiki_language_divider' => 'ඔබේ භාෂාවෙන් බෞද්ධ විශ්වකෝෂය කියවන්න',
+    'articles' => 'ලිපි',
+    'today_updates' => 'අද යාවත්කාලීන',
+    'contributors_suffix' => 'දායකයින්',
+    'today_entry' => 'අදේ ඇතුළත්කිරීම',
+    'read_full_entry' => 'සම්පූර්ණ ඇතුළත්කිරීම කියවන්න →',
+    'featured_entries' => 'විශේෂ ඇතුළත්කිරීම්',
+    'statistics' => 'සංඛ්‍යාලේඛන',
+    'total_entries' => 'සම්පූර්ණ ඇතුළත්කිරීම්',
+    'this_month' => 'මෙම මාසය',
+    'contributors' => 'දායකයින්',
+    'quality_level' => 'ගුණාත්මක මට්ටම',
+    'other_versions' => 'අනෙකුත් අනුවාද',
+    'toc' => 'පටුනය',
+    'entry_info' => 'ඇතුළත්කිරීමේ තොරතුරු',
+    'category' => 'කාණ්ඩය',
+    'quality' => 'ගුණාත්මකභාවය',
+    'recent_updates' => 'මෑත යාවත්කාලීනය',
+
+    // anthology
+    'site_name' => 'පාලි පුස්තකාලය',
+    'home' => 'මුල් පිටුව',
+    'anthology' => 'සංග්‍රහය',
+    'anthology_subtitle' => 'අටුවා · භාවනා මාර්ගෝපදේශ · ධර්ම සාකච්ඡා',
+    'no_anthology' => 'සංග්‍රහ නොමැත',
+    'search_anthology' => 'සංග්‍රහ සොයන්න…',
+    'author' => 'කතුවරයා',
+    'anthology_count_suffix' => 'සංග්‍රහ',
+    'last_updated' => 'අවසන් යාවත්කාලීනය',
+    'chapter_count' => 'පරිච්ඡේද',
+    'chapters' => 'පරිච්ඡේද',
+    'read_online' => 'අන්තර්ජාලයෙන් කියවන්න',
+    'open_in_editor' => 'සංස්කාරකයේ විවෘත කරන්න',
+    'about_anthology' => 'මෙම සංග්‍රහය ගැන',
+    'anthology_info' => 'සංග්‍රහ තොරතුරු',
+    'language' => 'භාෂාව',
+    'created' => 'නිර්මිත',
+    'updated' => 'යාවත්කාලීන',
+    'related_anthology' => 'සම්බන්ධිත සංග්‍රහ',
+    'articles_suffix' => 'ලිපි',
+
+    // tipitaka & reader
+    'tipitaka' => 'තිපිටකය',
+    'categories' => 'කාණ්ඩ',
+    'search_tipitaka' => 'තිපිටක පාඨ හා පරිවර්තන සොයන්න',
+    'type' => 'වර්ගය',
+    'clear_filters' => 'පෙරහන් ඉවත් කරන්න',
+    'total_prefix' => 'සම්පූර්ණ',
+    'book_unit' => 'ග්‍රන්ථ',
+    'sort' => 'වර්ග කරන්න',
+    'weekly_picks' => 'සතිපතා තෝරාගත්',
+    'active_authors' => 'ක්‍රියාකාරී කතුවරුන්',
+    'publisher' => 'ප්‍රකාශකයා',
+    'pali' => 'පාළි',
+    'book_info' => 'ග්‍රන්ථ තොරතුරු',
+    'editor' => 'සංස්කාරකය',
+    'settings' => 'සැකසීම්',
+    'versions' => 'අනුවාද',
+    'logout' => 'ඉවත් වන්න',
+    'select_version' => 'අනුවාදය තෝරන්න',
+    'no_content' => 'අන්තර්ගතය නොමැත',
+    'prev_article' => 'පෙර',
+    'next_article' => 'ඊළඟ',
+    'tags' => 'ටැග්',
+    'reading_settings' => 'කියවීමේ සැකසීම්',
+    'show_original' => 'මූලාශ්‍රය පෙන්වන්න',
+    'toggle_original' => 'මූල පාඨ දර්ශනය ටොගල් කරන්න',
+    'ui_language' => 'UI භාෂාව',
+    'auto' => 'ස්වයංක්‍රීය',
+    'lang_zh_hans' => 'සරල චීන',
+    'lang_en' => 'ඉංග්‍රීසි',
+    'pali_script' => 'පාළි අක්ෂර',
+    'script_roman' => 'රෝමානු',
+    'script_myanmar' => 'මියන්මාර්',
+    'script_thai' => 'තායි',
+    'commentary_version' => 'අටුවා අනුවාදය',
+    'none' => 'කිසිවක් නැත',
+    'cancel' => 'අවලංගු කරන්න',
+    'confirm' => 'හරි',
+    'no_toc' => 'මෙම ග්‍රන්ථයට පටුනයක් නොමැත',
+];

+ 2 - 2
api-v13/resources/lang/si/pagination.php

@@ -13,7 +13,7 @@ return [
     |
     */
 
-    'previous' => '&laquo; Previous',
-    'next' => 'Next &raquo;',
+    'previous' => '&laquo; පෙර',
+    'next' => 'ඊළඟ &raquo;',
 
 ];

+ 5 - 5
api-v13/resources/lang/si/passwords.php

@@ -13,10 +13,10 @@ return [
     |
     */
 
-    'reset' => 'Your password has been reset!',
-    'sent' => 'We have emailed your password reset link!',
-    'throttled' => 'Please wait before retrying.',
-    'token' => 'This password reset token is invalid.',
-    'user' => "We can't find a user with that email address.",
+    'reset' => 'ඔබගේ මුරපදය යළි සකසා ඇත!',
+    'sent' => 'මුරපද යළි සැකසුම් සබැඳිය ඔබට ඊමේල් කර ඇත!',
+    'throttled' => 'නැවත උත්සාහ කිරීමට පෙර කරුණාකර රැඳී සිටින්න.',
+    'token' => 'මෙම මුරපද යළි සැකසුම් ටෝකනය වලංගු නොවේ.',
+    'user' => 'එම ඊමේල් ලිපිනයෙන් පරිශීලකයෙකු සොයාගත නොහැක.',
 
 ];

+ 99 - 99
api-v13/resources/lang/si/validation.php

@@ -13,121 +13,121 @@ return [
     |
     */
 
-    'accepted' => 'The :attribute must be accepted.',
-    'accepted_if' => 'The :attribute must be accepted when :other is :value.',
-    'active_url' => 'The :attribute is not a valid URL.',
-    'after' => 'The :attribute must be a date after :date.',
-    'after_or_equal' => 'The :attribute must be a date after or equal to :date.',
-    'alpha' => 'The :attribute must only contain letters.',
-    'alpha_dash' => 'The :attribute must only contain letters, numbers, dashes and underscores.',
-    'alpha_num' => 'The :attribute must only contain letters and numbers.',
-    'array' => 'The :attribute must be an array.',
-    'before' => 'The :attribute must be a date before :date.',
-    'before_or_equal' => 'The :attribute must be a date before or equal to :date.',
+    'accepted' => ':attribute පිළිගත යුතුය.',
+    'accepted_if' => ':other යනු :value වන විට :attribute පිළිගත යුතුය.',
+    'active_url' => ':attribute වලංගු URL එකක් නොවේ.',
+    'after' => ':attribute යනු :date ට පසු දිනයක් විය යුතුය.',
+    'after_or_equal' => ':attribute යනු :date ට සමාන හෝ ඊට පසු දිනයක් විය යුතුය.',
+    'alpha' => ':attribute හි අකුරු පමණක් අඩංගු විය යුතුය.',
+    'alpha_dash' => ':attribute හි අකුරු, සංඛ්‍යා, ඉරි සහ යටි ඉරි පමණක් අඩංගු විය යුතුය.',
+    'alpha_num' => ':attribute හි අකුරු සහ සංඛ්‍යා පමණක් අඩංගු විය යුතුය.',
+    'array' => ':attribute අරාවක් විය යුතුය.',
+    'before' => ':attribute යනු :date ට පෙර දිනයක් විය යුතුය.',
+    'before_or_equal' => ':attribute යනු :date ට සමාන හෝ ඊට පෙර දිනයක් විය යුතුය.',
     'between' => [
-        'numeric' => 'The :attribute must be between :min and :max.',
-        'file' => 'The :attribute must be between :min and :max kilobytes.',
-        'string' => 'The :attribute must be between :min and :max characters.',
-        'array' => 'The :attribute must have between :min and :max items.',
+        'numeric' => ':attribute යනු :min සහ :max අතර විය යුතුය.',
+        'file' => ':attribute යනු :min සහ :max කිලෝබයිට් අතර විය යුතුය.',
+        'string' => ':attribute යනු :min සහ :max අක්ෂර අතර විය යුතුය.',
+        'array' => ':attribute හි :min සිට :max දක්වා අයිතම තිබිය යුතුය.',
     ],
-    'boolean' => 'The :attribute field must be true or false.',
-    'confirmed' => 'The :attribute confirmation does not match.',
-    'current_password' => 'The password is incorrect.',
-    'date' => 'The :attribute is not a valid date.',
-    'date_equals' => 'The :attribute must be a date equal to :date.',
-    'date_format' => 'The :attribute does not match the format :format.',
-    'declined' => 'The :attribute must be declined.',
-    'declined_if' => 'The :attribute must be declined when :other is :value.',
-    'different' => 'The :attribute and :other must be different.',
-    'digits' => 'The :attribute must be :digits digits.',
-    'digits_between' => 'The :attribute must be between :min and :max digits.',
-    'dimensions' => 'The :attribute has invalid image dimensions.',
-    'distinct' => 'The :attribute field has a duplicate value.',
-    'email' => 'The :attribute must be a valid email address.',
-    'ends_with' => 'The :attribute must end with one of the following: :values.',
-    'enum' => 'The selected :attribute is invalid.',
-    'exists' => 'The selected :attribute is exists.',
-    'file' => 'The :attribute must be a file.',
-    'filled' => 'The :attribute field must have a value.',
+    'boolean' => ':attribute ක්ෂේත්‍රය සත්‍ය හෝ අසත්‍ය විය යුතුය.',
+    'confirmed' => ':attribute තහවුරු කිරීම නොගැලපේ.',
+    'current_password' => 'මුරපදය වැරදිය.',
+    'date' => ':attribute වලංගු දිනයක් නොවේ.',
+    'date_equals' => ':attribute යනු :date ට සමාන දිනයක් විය යුතුය.',
+    'date_format' => ':attribute :format ආකෘතිය සමඟ නොගැලපේ.',
+    'declined' => ':attribute ප්‍රතික්ෂේප කළ යුතුය.',
+    'declined_if' => ':other යනු :value වන විට :attribute ප්‍රතික්ෂේප කළ යුතුය.',
+    'different' => ':attribute සහ :other වෙනස් විය යුතුය.',
+    'digits' => ':attribute :digits ඉලක්කම් විය යුතුය.',
+    'digits_between' => ':attribute :min සහ :max ඉලක්කම් අතර විය යුතුය.',
+    'dimensions' => ':attribute හි වලංගු නොවන රූප මිම්ම් ඇත.',
+    'distinct' => ':attribute ක්ෂේත්‍රයේ අනුපිටපත් අගයක් ඇත.',
+    'email' => ':attribute වලංගු විද්‍යුත් තැපෑල් ලිපිනයක් විය යුතුය.',
+    'ends_with' => ':attribute පහත ඒවායින් එකක් සමඟ අවසන් විය යුතුය: :values.',
+    'enum' => 'තෝරාගත් :attribute වලංගු නොවේ.',
+    'exists' => 'තෝරාගත් :attribute දැනටමත් පවතී.',
+    'file' => ':attribute ගොනුවක් විය යුතුය.',
+    'filled' => ':attribute ක්ෂේත්‍රයේ අගයක් තිබිය යුතුය.',
     'gt' => [
-        'numeric' => 'The :attribute must be greater than :value.',
-        'file' => 'The :attribute must be greater than :value kilobytes.',
-        'string' => 'The :attribute must be greater than :value characters.',
-        'array' => 'The :attribute must have more than :value items.',
+        'numeric' => ':attribute :value ට වඩා වැඩි විය යුතුය.',
+        'file' => ':attribute :value කිලෝබයිට් ට වඩා වැඩි විය යුතුය.',
+        'string' => ':attribute :value අක්ෂරයන්ට වඩා වැඩි විය යුතුය.',
+        'array' => ':attribute හි :value ට වඩා වැඩි අයිතම තිබිය යුතුය.',
     ],
     'gte' => [
-        'numeric' => 'The :attribute must be greater than or equal to :value.',
-        'file' => 'The :attribute must be greater than or equal to :value kilobytes.',
-        'string' => 'The :attribute must be greater than or equal to :value characters.',
-        'array' => 'The :attribute must have :value items or more.',
+        'numeric' => ':attribute :value ට සමාන හෝ වැඩි විය යුතුය.',
+        'file' => ':attribute :value කිලෝබයිට් ට සමාන හෝ වැඩි විය යුතුය.',
+        'string' => ':attribute :value අක්ෂරයන්ට සමාන හෝ වැඩි විය යුතුය.',
+        'array' => ':attribute හි :value හෝ ඊට වැඩි අයිතම තිබිය යුතුය.',
     ],
-    'image' => 'The :attribute must be an image.',
-    'in' => 'The selected :attribute is invalid.',
-    'in_array' => 'The :attribute field does not exist in :other.',
-    'integer' => 'The :attribute must be an integer.',
-    'ip' => 'The :attribute must be a valid IP address.',
-    'ipv4' => 'The :attribute must be a valid IPv4 address.',
-    'ipv6' => 'The :attribute must be a valid IPv6 address.',
-    'mac_address' => 'The :attribute must be a valid MAC address.',
-    'json' => 'The :attribute must be a valid JSON string.',
+    'image' => ':attribute රූපයක් විය යුතුය.',
+    'in' => 'තෝරාගත් :attribute වලංගු නොවේ.',
+    'in_array' => ':attribute ක්ෂේත්‍රය :other හි නොපවතී.',
+    'integer' => ':attribute පූර්ණ සංඛ්‍යාවක් විය යුතුය.',
+    'ip' => ':attribute වලංගු IP ලිපිනයක් විය යුතුය.',
+    'ipv4' => ':attribute වලංගු IPv4 ලිපිනයක් විය යුතුය.',
+    'ipv6' => ':attribute වලංගු IPv6 ලිපිනයක් විය යුතුය.',
+    'mac_address' => ':attribute වලංගු MAC ලිපිනයක් විය යුතුය.',
+    'json' => ':attribute වලංගු JSON තන්තුවක් විය යුතුය.',
     'lt' => [
-        'numeric' => 'The :attribute must be less than :value.',
-        'file' => 'The :attribute must be less than :value kilobytes.',
-        'string' => 'The :attribute must be less than :value characters.',
-        'array' => 'The :attribute must have less than :value items.',
+        'numeric' => ':attribute :value ට වඩා අඩු විය යුතුය.',
+        'file' => ':attribute :value කිලෝබයිට් ට වඩා අඩු විය යුතුය.',
+        'string' => ':attribute :value අක්ෂරයන්ට වඩා අඩු විය යුතුය.',
+        'array' => ':attribute හි :value ට වඩා අඩු අයිතම තිබිය යුතුය.',
     ],
     'lte' => [
-        'numeric' => 'The :attribute must be less than or equal to :value.',
-        'file' => 'The :attribute must be less than or equal to :value kilobytes.',
-        'string' => 'The :attribute must be less than or equal to :value characters.',
-        'array' => 'The :attribute must not have more than :value items.',
+        'numeric' => ':attribute :value ට සමාන හෝ අඩු විය යුතුය.',
+        'file' => ':attribute :value කිලෝබයිට් ට සමාන හෝ අඩු විය යුතුය.',
+        'string' => ':attribute :value අක්ෂරයන්ට සමාන හෝ අඩු විය යුතුය.',
+        'array' => ':attribute හි :value ට වඩා වැඩි අයිතම නොතිබිය යුතුය.',
     ],
     'max' => [
-        'numeric' => 'The :attribute must not be greater than :max.',
-        'file' => 'The :attribute must not be greater than :max kilobytes.',
-        'string' => 'The :attribute must not be greater than :max characters.',
-        'array' => 'The :attribute must not have more than :max items.',
+        'numeric' => ':attribute :max ට වඩා වැඩි නොවිය යුතුය.',
+        'file' => ':attribute :max කිලෝබයිට් ට වඩා වැඩි නොවිය යුතුය.',
+        'string' => ':attribute :max අක්ෂරයන්ට වඩා වැඩි නොවිය යුතුය.',
+        'array' => ':attribute හි :max ට වඩා වැඩි අයිතම නොතිබිය යුතුය.',
     ],
-    'mimes' => 'The :attribute must be a file of type: :values.',
-    'mimetypes' => 'The :attribute must be a file of type: :values.',
+    'mimes' => ':attribute :values ආකාරයේ ගොනුවක් විය යුතුය.',
+    'mimetypes' => ':attribute :values ආකාරයේ ගොනුවක් විය යුතුය.',
     'min' => [
-        'numeric' => 'The :attribute must be at least :min.',
-        'file' => 'The :attribute must be at least :min kilobytes.',
-        'string' => 'The :attribute must be at least :min characters.',
-        'array' => 'The :attribute must have at least :min items.',
+        'numeric' => ':attribute අවම වශයෙන් :min විය යුතුය.',
+        'file' => ':attribute අවම වශයෙන් :min කිලෝබයිට් විය යුතුය.',
+        'string' => ':attribute අවම වශයෙන් :min අක්ෂර විය යුතුය.',
+        'array' => ':attribute හි අවම වශයෙන් :min අයිතම තිබිය යුතුය.',
     ],
-    'multiple_of' => 'The :attribute must be a multiple of :value.',
-    'not_in' => 'The selected :attribute is invalid.',
-    'not_regex' => 'The :attribute format is invalid.',
-    'numeric' => 'The :attribute must be a number.',
-    'password' => 'The password is incorrect.',
-    'present' => 'The :attribute field must be present.',
-    'prohibited' => 'The :attribute field is prohibited.',
-    'prohibited_if' => 'The :attribute field is prohibited when :other is :value.',
-    'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.',
-    'prohibits' => 'The :attribute field prohibits :other from being present.',
-    'regex' => 'The :attribute format is invalid.',
-    'required' => 'The :attribute field is required.',
-    'required_if' => 'The :attribute field is required when :other is :value.',
-    'required_unless' => 'The :attribute field is required unless :other is in :values.',
-    'required_with' => 'The :attribute field is required when :values is present.',
-    'required_with_all' => 'The :attribute field is required when :values are present.',
-    'required_without' => 'The :attribute field is required when :values is not present.',
-    'required_without_all' => 'The :attribute field is required when none of :values are present.',
-    'same' => 'The :attribute and :other must match.',
+    'multiple_of' => ':attribute :value ගුණයක් විය යුතුය.',
+    'not_in' => 'තෝරාගත් :attribute වලංගු නොවේ.',
+    'not_regex' => ':attribute ආකෘතිය වලංගු නොවේ.',
+    'numeric' => ':attribute සංඛ්‍යාවක් විය යුතුය.',
+    'password' => 'මුරපදය වැරදිය.',
+    'present' => ':attribute ක්ෂේත්‍රය තිබිය යුතුය.',
+    'prohibited' => ':attribute ක්ෂේත්‍රය තහනම් කර ඇත.',
+    'prohibited_if' => ':other යනු :value වන විට :attribute ක්ෂේත්‍රය තහනම් කර ඇත.',
+    'prohibited_unless' => ':other :values හි නොමැති නම් :attribute ක්ෂේත්‍රය තහනම් කර ඇත.',
+    'prohibits' => ':attribute ක්ෂේත්‍රය :other තිබීම තහනම් කරයි.',
+    'regex' => ':attribute ආකෘතිය වලංගු නොවේ.',
+    'required' => ':attribute ක්ෂේත්‍රය අවශ්‍ය වේ.',
+    'required_if' => ':other යනු :value වන විට :attribute ක්ෂේත්‍රය අවශ්‍ය වේ.',
+    'required_unless' => ':other :values හි නොමැති නම් :attribute ක්ෂේත්‍රය අවශ්‍ය වේ.',
+    'required_with' => ':values තිබෙන විට :attribute ක්ෂේත්‍රය අවශ්‍ය වේ.',
+    'required_with_all' => ':values තිබෙන විට :attribute ක්ෂේත්‍රය අවශ්‍ය වේ.',
+    'required_without' => ':values නොමැති විට :attribute ක්ෂේත්‍රය අවශ්‍ය වේ.',
+    'required_without_all' => ':values කිසිවක් නොමැති විට :attribute ක්ෂේත්‍රය අවශ්‍ය වේ.',
+    'same' => ':attribute සහ :other ගැලපිය යුතුය.',
     'size' => [
-        'numeric' => 'The :attribute must be :size.',
-        'file' => 'The :attribute must be :size kilobytes.',
-        'string' => 'The :attribute must be :size characters.',
-        'array' => 'The :attribute must contain :size items.',
+        'numeric' => ':attribute :size විය යුතුය.',
+        'file' => ':attribute :size කිලෝබයිට් විය යුතුය.',
+        'string' => ':attribute :size අක්ෂර විය යුතුය.',
+        'array' => ':attribute හි :size අයිතම අඩංගු විය යුතුය.',
     ],
-    'starts_with' => 'The :attribute must start with one of the following: :values.',
-    'string' => 'The :attribute must be a string.',
-    'timezone' => 'The :attribute must be a valid timezone.',
-    'unique' => 'The :attribute has already been taken.',
-    'uploaded' => 'The :attribute failed to upload.',
-    'url' => 'The :attribute must be a valid URL.',
-    'uuid' => 'The :attribute must be a valid UUID.',
+    'starts_with' => ':attribute පහත ඒවායින් එකක් සමඟ ආරම්භ විය යුතුය: :values.',
+    'string' => ':attribute තන්තුවක් විය යුතුය.',
+    'timezone' => ':attribute වලංගු වේලා කලාපයක් විය යුතුය.',
+    'unique' => ':attribute දැනටමත් ගෙන ඇත.',
+    'uploaded' => ':attribute උඩුගත කිරීම අසාර්ථක විය.',
+    'url' => ':attribute වලංගු URL එකක් විය යුතුය.',
+    'uuid' => ':attribute වලංගු UUID එකක් විය යුතුය.',
 
     /*
     |--------------------------------------------------------------------------

+ 3 - 3
api-v13/resources/lang/th/auth.php

@@ -13,8 +13,8 @@ return [
     |
     */
 
-    'failed' => 'These credentials do not match our records.',
-    'password' => 'The provided password is incorrect.',
-    'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
+    'failed' => 'ข้อมูลประจำตัวเหล่านี้ไม่ตรงกับบันทึกของเรา',
+    'password' => 'รหัสผ่านไม่ถูกต้อง',
+    'throttle' => 'พยายามเข้าสู่ระบบมากเกินไป กรุณาลองใหม่ใน :seconds วินาที',
 
 ];

+ 2 - 2
api-v13/resources/lang/th/buttons.php

@@ -1,5 +1,5 @@
 <?php
 return [
-    'more' => 'More',
-    'online-read' =>  'Online Read',
+    'more' => 'เพิ่มเติม',
+    'online-read' =>  'อ่านออนไลน์',
 ];

+ 199 - 0
api-v13/resources/lang/th/grammar.php

@@ -0,0 +1,199 @@
+<?php
+
+return [
+
+    /*
+    |--------------------------------------------------------------------------
+    | site Language Lines
+    |--------------------------------------------------------------------------
+    |
+    |
+    */
+
+    'n' => 'นาม',
+    'n.short' => 'นาม',
+    'ti' => 'สามลิงค์',
+    'ti.short' => 'สาม',
+    'v' => 'กริยา',
+    'v.short' => 'กริ',
+    'v:ind' => 'กริยาอัพยยศัพท์',
+    'v:ind.short' => 'กริ.อัพ',
+    'ind' => 'อัพยยศัพท์',
+    'ind.short' => 'อัพ',
+    'm' => 'ปุงลิงค์',
+    'm.short' => 'ปุง',
+    'nt' => 'นปุงสกลิงค์',
+    'nt.short' => 'นปุง',
+    'f' => 'อิตถีลิงค์',
+    'f.short' => 'อิต',
+    'sg' => 'เอกวจนะ',
+    'sg.short' => 'เอก',
+    'pl' => 'พหุวจนะ',
+    'pl.short' => 'พหุ',
+    'nom' => 'ปฐมาวิภัตติ',
+    'nom.short' => 'ปฐ',
+    'acc' => 'ทุติยาวิภัตติ',
+    'acc.short' => 'ทุ',
+    'gen' => 'ฉัฏฐีวิภัตติ',
+    'gen.short' => 'ฉัฏ',
+    'dat' => 'จตุตถีวิภัตติ',
+    'dat.short' => 'จตุ',
+    'inst' => 'ตติยาวิภัตติ',
+    'inst.short' => 'ตติ',
+    'voc' => 'อาลปนะ',
+    'voc.short' => 'อาล',
+    'abl' => 'ปัญจมีวิภัตติ',
+    'abl.short' => 'ปัญ',
+    'loc' => 'สัตตมีวิภัตติ',
+    'loc.short' => 'สัต',
+    'base' => 'ธาตุ/ลิงค์',
+    'base.short' => 'ธาตุ',
+    'imp' => 'ปัญจมีอาขยาต',
+    'imp.short' => 'ปัญจมี',
+    'cond' => 'กาลสัตตมี',
+    'cond.short' => 'กาลสัต',
+    'opt' => 'สัตตมีอาขยาต',
+    'opt.short' => 'สัตตมี',
+    'pres' => 'ปัจจุบันกาล',
+    'pres.short' => 'ปัจ',
+    'aor' => 'อดีตกาล',
+    'aor.short' => 'อดีต',
+    'pf' => 'อดีตกาลสมบูรณ์',
+    'pf.short' => 'สมบูรณ์',
+    'fut' => 'อนาคตกาล',
+    'fut.short' => 'อนา',
+    'act' => 'กัตตุวาจก',
+    'act.short' => 'กัตตุ',
+    'refl' => 'อัตตโนบท',
+    'refl.short' => 'อัตตโน',
+    '1p' => 'บุรุษที่หนึ่ง',
+    '1p.short' => 'บ.๑',
+    '2p' => 'บุรุษที่สอง',
+    '2p.short' => 'บ.๒',
+    '3p' => 'บุรุษที่สาม',
+    '3p.short' => 'บ.๓',
+    'prp' => 'กิตก์ปัจจุบัน',
+    'prp.short' => 'กิต.ปัจ',
+    'prpp' => 'กิตก์ปัจจุบันกรรมวาจก',
+    'prpp.short' => 'กิต.ปัจ.กร',
+    'pp' => 'กิตก์อดีต',
+    'pp.short' => 'กิต.อดีต',
+    'ppa' => 'กิตก์อดีตกัตตุ',
+    'ppa.short' => 'กิต.อดีต.กัต',
+    'ppp' => 'กิตก์อดีตกรรม',
+    'ppp.short' => 'กิต.อดีต.กร',
+    'futp' => 'กิตก์อนาคต',
+    'futp.short' => 'กิต.อนา',
+    'fpa.short' => 'กิต.อนา.กัต',
+    'grd' => 'กิตก์บังคับ',
+    'grd.short' => 'กิต.บัง',
+    'pass' => 'กรรมวาจก',
+    'pass.short' => 'กรรม',
+    'caus' => 'เหตุกัตตุวาจก',
+    'caus.short' => 'เหตุ',
+    'desid' => 'ประสงค์จะ',
+    'desid.short' => 'ประสงค์',
+    'intens' => 'เน้นย้ำ',
+    'intens.short' => 'เน้น',
+    'denom' => 'นามกริยา',
+    'denom.short' => 'นามกริ',
+    'ger' => 'กิริยากิตก์ต่อเนื่อง',
+    'ger.short' => 'ต่อเนื่อง',
+    'abs' => 'บาลีปุพพกาลกิริยา',
+    'abs.short' => 'ปุพพกาล',
+    'inf' => 'กิตก์อนิยม',
+    'inf.short' => 'อนิยม',
+    'adj' => 'วิเศษณ์',
+    'adj.short' => 'วิเศษณ์',
+    'pron' => 'สรรพนาม',
+    'pron.short' => 'สรร',
+    'num' => 'จำนวนนาม',
+    'num.short' => 'จำนวน',
+    'adv' => 'กิริยาวิเศษณ์',
+    'adv.short' => 'กิ.วิ',
+    'conj' => 'สันธาน',
+    'conj.short' => 'สัน',
+    'prep' => 'บุพบท',
+    'prep.short' => 'บุพ',
+    'interj' => 'อุทาน',
+    'interj.short' => 'อุทาน',
+    'pre' => 'อุปสรรค',
+    'pre.short' => 'อุป',
+    'suf' => 'ปัจจัย',
+    'suf.short' => 'ปัจ',
+    'end' => 'วิภัตติปัจจัย',
+    'end.short' => 'วิภัตติ',
+    'part' => 'ส่วนประกอบ',
+    'part.short' => 'ส่วน',
+    'un' => 'สนธิ',
+    'un.short' => 'สนธิ',
+    'none' => 'ไม่มี',
+    'none.short' => '_',
+    'null' => 'ว่าง',
+    'null.short' => '_',
+    '?' => '?',
+    '?.short' => '?',
+    'ti:base' => 'ธาตุสามลิงค์',
+    'ti:base.short' => 'ธาตุ.สาม',
+    'n:base' => 'ธาตุนาม',
+    'n:base.short' => 'ธาตุ.นาม',
+    'v:base' => 'ธาตุกริยา',
+    'v:base.short' => 'ธาตุ.กริ',
+    'adj:base' => 'ธาตุวิเศษณ์',
+    'adj:base.short' => 'ธาตุ.วิ',
+    'fpp' => 'กิตก์อนาคตกรรมวาจก',
+    'fpp.short' => 'กิต.อนา.กร',
+    'cp.short' => 'สมาส',
+    'cp' => 'คำสมาส',
+    'indconj.short' => 'สัน',
+    'indconj' => 'สันธานอัพยยศัพท์',
+    'pron:base.short' => 'ธาตุ.สรร',
+    'pron:base' => 'ธาตุสรรพนาม',
+    'note.short' => 'หมายเหตุ',
+    'note' => 'หมายเหตุ',
+    'vind.short' => 'กริ.อัพ',
+    'vind' => 'กริยาอัพยยศัพท์',
+    'vdn' => 'นามกริยาสืบเนื่อง',
+    'vdn.short' => 'นามกริ',
+    "relations.iad.label" => "คุณศัพท์ขยายในประเภทเดียวกัน",
+    "relations.asv.label" => "ประธาน ➡ กริยา",
+    "relations.aov.label" => "กรรม ➡ กริยา",
+    "relations.daso-p.label" => "ประธาน ➡ กริยาเชื่อม",
+    "relations.daso-s.label" => "ภาคแสดง ➡ กริยาเชื่อม",
+    "relations.nio.label" => "ผู้ถูกอธิบาย(ประธาน) ➡ คำอธิบาย(ภาคแสดง)",
+    "relations.nid.label" => "สิ่งที่จะตั้งชื่อ ➡ ชื่อ",
+    "relations.dasd-p.label" => "<ตั้งชื่อ>ประธาน ➡ กริยาเชื่อม",
+    "relations.dasd-s.label" => "<ตั้งชื่อ>ภาคแสดง ➡ กริยาเชื่อม",
+    "relations.dao-p.label" => "กรรมสองตัววาจกถูกกระทำ-หลัก",
+    "relations.dao-s.label" => "กรรมสองตัววาจกถูกกระทำ-รอง",
+    "relations.iov.label" => "กรรม ➡ กริยา",
+    "relations.dio-p.label" => "กรรมคู่<หลัก> ➡ กริยา",
+    "relations.dio-s.label" => "กรรมคู่<รอง> ➡ กริยา",
+    "relations.dis-p.label" => "ประธาน ➡ กริยาเชื่อม(กรรมวาจก)",
+    "relations.dis-s.label" => "ภาคแสดง ➡ กริยาเชื่อม(กรรมวาจก)",
+    "relations.stc.label" => "ความต่อเนื่องเวลา-สถานที่ ➡ การกระทำต่อเนื่อง",
+    "relations.adv.label" => "คำขยายกริยา ➡ กริยา",
+    "relations.imp.label" => "วิธีการ ➡ กริยา",
+    "relations.soe.label" => "ความสัมพันธ์ร่วม<มีสันธาน>",
+    "relations.soi.label" => "ความสัมพันธ์ร่วม<ไม่มีสันธาน>",
+    "relations.isv.label" => "ประธาน<ไม่ใช่ปฐมา> ➡ กริยา",
+    "relations.cau.label" => "เหตุ ➡ ผล/การอ้างเหตุ",
+    "relations.iov-c.label" => "กรรมถูกสั่ง ➡ กริยา",
+    "relations.adj.label" => "คุณศัพท์ขยายนาม ➡ นามที่ถูกขยาย",
+    "relations.rec.label" => "ผู้รับ ➡ การให้",
+    "relations.pur.label" => "จุดประสงค์ ➡ กริยา",
+    "relations.det.label" => "จุดออกเดินทาง ➡ การออกเดินทาง",
+    "relations.coc.label" => "การเปรียบเทียบแยกแยะ",
+    "relations.pos.label" => "เจ้าของ ➡ สิ่งที่เป็นเจ้าของ",
+    "relations.coi.label" => "ชุดทั้งหมด ➡ สมาชิก/กลุ่ม ➡ สมาชิกย่อย",
+    "relations.lov.label" => "ภาชนะ ➡ กริยา/ที่บรรจุ ➡ สิ่งที่ถูกบรรจุ",
+    "relations.mot.label" => "การแสดงออก ➡ ผู้มีการแสดงออก",
+    "relations.whp.label" => "ส่วนรวม ➡ ส่วนย่อย",
+    "relations.def.label" => "การจำกัดความ",
+    "relations.ac.label" => "อนุประโยคสัมบูรณ์",
+    "relations.avc.label" => "อนุประโยควาจกสัมบูรณ์",
+    "relations.qus.label" => "ภายในเครื่องหมายคำพูด ➡ เครื่องหมายคำพูด",
+    "relations.qum.label" => "เครื่องหมายคำพูด ➡ ภายนอกเครื่องหมายคำพูด",
+    "relations.enu.label" => "รายการ ➡ ขีดกลาง",
+    "relations.enm.label" => "ขีดกลาง ➡ รายการที่ถูกระบุ",
+];

+ 4 - 4
api-v13/resources/lang/th/labels.php

@@ -1,9 +1,9 @@
 <?php
 return [
-    'home' => 'Home',
-    'translation' => 'Translation',
-    'original' => 'Original',
-    'nissaya' => 'Nissaya',
+    'home' => 'หน้าหลัก',
+    'translation' => 'คำแปล',
+    'original' => 'ต้นฉบับ',
+    'nissaya' => 'นิสสัย',
 
     'script_convertor' => 'ตัวแปลงอักษรบาลี',
     'input_script' => 'อักษรต้นฉบับ',

+ 134 - 0
api-v13/resources/lang/th/library.php

@@ -0,0 +1,134 @@
+<?php
+
+return [
+    // index.blade.php
+    'portal_title' => 'WikiPāli · ห้องสมุดบาลี',
+    'portal_hero_title' => 'ห้องสมุดบาลี WikiPāli',
+    'portal_hero_subtitle' => 'สำรวจพระไตรปิฎก · ประตูสู่ปัญญา',
+    'search_placeholder_home' => 'ค้นหาพระสูตร คำศัพท์ หมวดหมู่…',
+    'section_tipitaka' => 'พระไตรปิฎก',
+    'enter_tipitaka' => 'เข้าสู่พระไตรปิฎก',
+    'more' => 'เพิ่มเติม',
+    'section_recent' => 'คำแปลล่าสุด',
+    'updating_badge' => 'กำลังอัปเดต',
+    'view_all' => 'ดูทั้งหมด',
+    'badge_new' => 'ใหม่',
+    'badge_updated' => 'อัปเดตแล้ว',
+
+    // search.blade.php
+    'search_results_title' => 'ผลการค้นหา',
+    'search_title' => 'ค้นหา',
+    'search_placeholder' => 'ค้นหารายการ บาลี สันสกฤต…',
+    'searching' => 'ค้นหา',
+    'results_found_prefix' => ', พบ',
+    'results_found_suffix' => 'ผลลัพธ์',
+    'page_prefix' => '(หน้า',
+    'page_suffix' => ')',
+    'no_results' => ', ไม่พบผลลัพธ์',
+    'try_other_keywords' => 'กรุณาลองคำค้นหาอื่น',
+    'filter_by' => 'กรองตาม ',
+    'filter' => '',
+    'all' => 'ทั้งหมด',
+    'did_you_mean' => 'คุณหมายถึง',
+    'browse_categories' => 'เรียกดูหมวดหมู่',
+
+    // download.blade.php
+    'download' => 'ดาวน์โหลด',
+    'offline_packets' => 'แพ็กเกจข้อมูลออฟไลน์ของแอป',
+    'packet_count_suffix' => 'แพ็กเกจ',
+    'no_packets' => 'ไม่มีแพ็กเกจ',
+    'no_packets_desc' => 'ไม่มีแพ็กเกจข้อมูลออฟไลน์',
+    'col_name' => 'ชื่อแพ็กเกจ',
+    'col_size' => 'ขนาดไฟล์',
+    'col_min_version' => 'เวอร์ชันขั้นต่ำ',
+    'created_at' => 'วันที่สร้าง',
+    'col_links' => 'ลิงก์ดาวน์โหลด',
+    'no_links' => 'ไม่มีลิงก์',
+    'min_version_prefix' => 'เวอร์ชันขั้นต่ำ ',
+
+    // wiki blade files
+    'wiki_encyclopedia' => 'สารานุกรมพุทธศาสนา',
+    'wiki_subtitle' => 'สำรวจธรรมะ · ประตูสู่การตื่นรู้',
+    'wiki_search_placeholder' => 'ค้นหาคำศัพท์ พระคัมภีร์ บุคคล...',
+    'hot' => 'ยอดนิยม: ',
+    'wiki_language_divider' => 'อ่านสารานุกรมพุทธศาสนาในภาษาของคุณ',
+    'articles' => 'บทความ',
+    'today_updates' => 'อัปเดตวันนี้',
+    'contributors_suffix' => 'ผู้มีส่วนร่วม',
+    'today_entry' => 'รายการประจำวันนี้',
+    'read_full_entry' => 'อ่านรายการเต็ม →',
+    'featured_entries' => 'รายการแนะนำ',
+    'statistics' => 'สถิติ',
+    'total_entries' => 'รายการทั้งหมด',
+    'this_month' => 'เดือนนี้',
+    'contributors' => 'ผู้มีส่วนร่วม',
+    'quality_level' => 'ระดับคุณภาพ',
+    'other_versions' => 'เวอร์ชันอื่น',
+    'toc' => 'สารบัญ',
+    'entry_info' => 'ข้อมูลรายการ',
+    'category' => 'หมวดหมู่',
+    'quality' => 'คุณภาพ',
+    'recent_updates' => 'อัปเดตล่าสุด',
+
+    // anthology
+    'site_name' => 'ห้องสมุดบาลี',
+    'home' => 'หน้าหลัก',
+    'anthology' => 'รวมบทความ',
+    'anthology_subtitle' => 'อรรถกถา · คู่มือการปฏิบัติสมาธิ · ธรรมกถา',
+    'no_anthology' => 'ไม่มีรวมบทความ',
+    'search_anthology' => 'ค้นหารวมบทความ…',
+    'author' => 'ผู้แต่ง',
+    'anthology_count_suffix' => 'รวมบทความ',
+    'last_updated' => 'อัปเดตล่าสุด',
+    'chapter_count' => 'บท',
+    'chapters' => 'บท',
+    'read_online' => 'อ่านออนไลน์',
+    'open_in_editor' => 'เปิดในโปรแกรมแก้ไข',
+    'about_anthology' => 'เกี่ยวกับรวมบทความนี้',
+    'anthology_info' => 'ข้อมูลรวมบทความ',
+    'language' => 'ภาษา',
+    'created' => 'วันที่สร้าง',
+    'updated' => 'อัปเดต',
+    'related_anthology' => 'รวมบทความที่เกี่ยวข้อง',
+    'articles_suffix' => 'บทความ',
+
+    // tipitaka & reader
+    'tipitaka' => 'พระไตรปิฎก',
+    'categories' => 'หมวดหมู่',
+    'search_tipitaka' => 'ค้นหาข้อความและคำแปลพระไตรปิฎก',
+    'type' => 'ประเภท',
+    'clear_filters' => 'ล้างตัวกรอง',
+    'total_prefix' => 'ทั้งหมด',
+    'book_unit' => 'เล่ม',
+    'sort' => 'เรียงลำดับ',
+    'weekly_picks' => 'คัดสรรประจำสัปดาห์',
+    'active_authors' => 'ผู้แต่งที่ใช้งานอยู่',
+    'publisher' => 'สำนักพิมพ์',
+    'pali' => 'บาลี',
+    'book_info' => 'ข้อมูลหนังสือ',
+    'editor' => 'บรรณาธิการ',
+    'settings' => 'การตั้งค่า',
+    'versions' => 'เวอร์ชัน',
+    'logout' => 'ออกจากระบบ',
+    'select_version' => 'เลือกเวอร์ชัน',
+    'no_content' => 'ไม่มีเนื้อหา',
+    'prev_article' => 'ก่อนหน้า',
+    'next_article' => 'ถัดไป',
+    'tags' => 'แท็ก',
+    'reading_settings' => 'การตั้งค่าการอ่าน',
+    'show_original' => 'แสดงต้นฉบับ',
+    'toggle_original' => 'สลับการแสดงข้อความต้นฉบับ',
+    'ui_language' => 'ภาษาของอินเทอร์เฟซ',
+    'auto' => 'อัตโนมัติ',
+    'lang_zh_hans' => 'ภาษาจีนตัวย่อ',
+    'lang_en' => 'ภาษาอังกฤษ',
+    'pali_script' => 'อักษรบาลี',
+    'script_roman' => 'โรมัน',
+    'script_myanmar' => 'พม่า',
+    'script_thai' => 'ไทย',
+    'commentary_version' => 'เวอร์ชันอรรถกถา',
+    'none' => 'ไม่มี',
+    'cancel' => 'ยกเลิก',
+    'confirm' => 'ตกลง',
+    'no_toc' => 'หนังสือเล่มนี้ไม่มีสารบัญ',
+];

+ 2 - 2
api-v13/resources/lang/th/pagination.php

@@ -13,7 +13,7 @@ return [
     |
     */
 
-    'previous' => '&laquo; Previous',
-    'next' => 'Next &raquo;',
+    'previous' => '&laquo; ก่อนหน้า',
+    'next' => 'ถัดไป &raquo;',
 
 ];

+ 5 - 5
api-v13/resources/lang/th/passwords.php

@@ -13,10 +13,10 @@ return [
     |
     */
 
-    'reset' => 'Your password has been reset!',
-    'sent' => 'We have emailed your password reset link!',
-    'throttled' => 'Please wait before retrying.',
-    'token' => 'This password reset token is invalid.',
-    'user' => "We can't find a user with that email address.",
+    'reset' => 'รหัสผ่านของคุณถูกรีเซ็ตแล้ว!',
+    'sent' => 'เราได้ส่งลิงก์รีเซ็ตรหัสผ่านไปยังอีเมลของคุณแล้ว!',
+    'throttled' => 'กรุณารอสักครู่ก่อนลองใหม่',
+    'token' => 'โทเค็นรีเซ็ตรหัสผ่านนี้ไม่ถูกต้อง',
+    'user' => 'ไม่พบผู้ใช้ที่มีอีเมลนี้',
 
 ];

+ 99 - 99
api-v13/resources/lang/th/validation.php

@@ -13,121 +13,121 @@ return [
     |
     */
 
-    'accepted' => 'The :attribute must be accepted.',
-    'accepted_if' => 'The :attribute must be accepted when :other is :value.',
-    'active_url' => 'The :attribute is not a valid URL.',
-    'after' => 'The :attribute must be a date after :date.',
-    'after_or_equal' => 'The :attribute must be a date after or equal to :date.',
-    'alpha' => 'The :attribute must only contain letters.',
-    'alpha_dash' => 'The :attribute must only contain letters, numbers, dashes and underscores.',
-    'alpha_num' => 'The :attribute must only contain letters and numbers.',
-    'array' => 'The :attribute must be an array.',
-    'before' => 'The :attribute must be a date before :date.',
-    'before_or_equal' => 'The :attribute must be a date before or equal to :date.',
+    'accepted' => ':attribute ต้องได้รับการยอมรับ',
+    'accepted_if' => ':attribute ต้องได้รับการยอมรับเมื่อ :other เป็น :value',
+    'active_url' => ':attribute ไม่ใช่ URL ที่ถูกต้อง',
+    'after' => ':attribute ต้องเป็นวันที่หลังจาก :date',
+    'after_or_equal' => ':attribute ต้องเป็นวันที่หลังจากหรือเท่ากับ :date',
+    'alpha' => ':attribute ต้องประกอบด้วยตัวอักษรเท่านั้น',
+    'alpha_dash' => ':attribute ต้องประกอบด้วยตัวอักษร ตัวเลข ขีดกลาง และขีดล่างเท่านั้น',
+    'alpha_num' => ':attribute ต้องประกอบด้วยตัวอักษรและตัวเลขเท่านั้น',
+    'array' => ':attribute ต้องเป็นอาร์เรย์',
+    'before' => ':attribute ต้องเป็นวันที่ก่อน :date',
+    'before_or_equal' => ':attribute ต้องเป็นวันที่ก่อนหรือเท่ากับ :date',
     'between' => [
-        'numeric' => 'The :attribute must be between :min and :max.',
-        'file' => 'The :attribute must be between :min and :max kilobytes.',
-        'string' => 'The :attribute must be between :min and :max characters.',
-        'array' => 'The :attribute must have between :min and :max items.',
+        'numeric' => ':attribute ต้องอยู่ระหว่าง :min ถึง :max',
+        'file' => ':attribute ต้องมีขนาดระหว่าง :min ถึง :max กิโลไบต์',
+        'string' => ':attribute ต้องมีความยาวระหว่าง :min ถึง :max ตัวอักษร',
+        'array' => ':attribute ต้องมีจำนวนรายการระหว่าง :min ถึง :max รายการ',
     ],
-    'boolean' => 'The :attribute field must be true or false.',
-    'confirmed' => 'The :attribute confirmation does not match.',
-    'current_password' => 'The password is incorrect.',
-    'date' => 'The :attribute is not a valid date.',
-    'date_equals' => 'The :attribute must be a date equal to :date.',
-    'date_format' => 'The :attribute does not match the format :format.',
-    'declined' => 'The :attribute must be declined.',
-    'declined_if' => 'The :attribute must be declined when :other is :value.',
-    'different' => 'The :attribute and :other must be different.',
-    'digits' => 'The :attribute must be :digits digits.',
-    'digits_between' => 'The :attribute must be between :min and :max digits.',
-    'dimensions' => 'The :attribute has invalid image dimensions.',
-    'distinct' => 'The :attribute field has a duplicate value.',
-    'email' => 'The :attribute must be a valid email address.',
-    'ends_with' => 'The :attribute must end with one of the following: :values.',
-    'enum' => 'The selected :attribute is invalid.',
-    'exists' => 'The selected :attribute is exists.',
-    'file' => 'The :attribute must be a file.',
-    'filled' => 'The :attribute field must have a value.',
+    'boolean' => ':attribute ต้องเป็นค่า true หรือ false',
+    'confirmed' => 'การยืนยัน :attribute ไม่ตรงกัน',
+    'current_password' => 'รหัสผ่านไม่ถูกต้อง',
+    'date' => ':attribute ไม่ใช่วันที่ที่ถูกต้อง',
+    'date_equals' => ':attribute ต้องเป็นวันที่เท่ากับ :date',
+    'date_format' => ':attribute ไม่ตรงกับรูปแบบ :format',
+    'declined' => ':attribute ต้องถูกปฏิเสธ',
+    'declined_if' => ':attribute ต้องถูกปฏิเสธเมื่อ :other เป็น :value',
+    'different' => ':attribute และ :other ต้องแตกต่างกัน',
+    'digits' => ':attribute ต้องมี :digits หลัก',
+    'digits_between' => ':attribute ต้องมีจำนวนหลักระหว่าง :min ถึง :max',
+    'dimensions' => ':attribute มีขนาดรูปภาพไม่ถูกต้อง',
+    'distinct' => ':attribute มีค่าซ้ำกัน',
+    'email' => ':attribute ต้องเป็นที่อยู่อีเมลที่ถูกต้อง',
+    'ends_with' => ':attribute ต้องลงท้ายด้วยหนึ่งในค่าต่อไปนี้: :values',
+    'enum' => ':attribute ที่เลือกไม่ถูกต้อง',
+    'exists' => ':attribute ที่เลือกมีอยู่แล้ว',
+    'file' => ':attribute ต้องเป็นไฟล์',
+    'filled' => ':attribute ต้องมีค่า',
     'gt' => [
-        'numeric' => 'The :attribute must be greater than :value.',
-        'file' => 'The :attribute must be greater than :value kilobytes.',
-        'string' => 'The :attribute must be greater than :value characters.',
-        'array' => 'The :attribute must have more than :value items.',
+        'numeric' => ':attribute ต้องมากกว่า :value',
+        'file' => ':attribute ต้องมีขนาดมากกว่า :value กิโลไบต์',
+        'string' => ':attribute ต้องมีความยาวมากกว่า :value ตัวอักษร',
+        'array' => ':attribute ต้องมีมากกว่า :value รายการ',
     ],
     'gte' => [
-        'numeric' => 'The :attribute must be greater than or equal to :value.',
-        'file' => 'The :attribute must be greater than or equal to :value kilobytes.',
-        'string' => 'The :attribute must be greater than or equal to :value characters.',
-        'array' => 'The :attribute must have :value items or more.',
+        'numeric' => ':attribute ต้องมากกว่าหรือเท่ากับ :value',
+        'file' => ':attribute ต้องมีขนาดมากกว่าหรือเท่ากับ :value กิโลไบต์',
+        'string' => ':attribute ต้องมีความยาวมากกว่าหรือเท่ากับ :value ตัวอักษร',
+        'array' => ':attribute ต้องมี :value รายการหรือมากกว่า',
     ],
-    'image' => 'The :attribute must be an image.',
-    'in' => 'The selected :attribute is invalid.',
-    'in_array' => 'The :attribute field does not exist in :other.',
-    'integer' => 'The :attribute must be an integer.',
-    'ip' => 'The :attribute must be a valid IP address.',
-    'ipv4' => 'The :attribute must be a valid IPv4 address.',
-    'ipv6' => 'The :attribute must be a valid IPv6 address.',
-    'mac_address' => 'The :attribute must be a valid MAC address.',
-    'json' => 'The :attribute must be a valid JSON string.',
+    'image' => ':attribute ต้องเป็นรูปภาพ',
+    'in' => ':attribute ที่เลือกไม่ถูกต้อง',
+    'in_array' => ':attribute ไม่มีอยู่ใน :other',
+    'integer' => ':attribute ต้องเป็นจำนวนเต็ม',
+    'ip' => ':attribute ต้องเป็นที่อยู่ IP ที่ถูกต้อง',
+    'ipv4' => ':attribute ต้องเป็นที่อยู่ IPv4 ที่ถูกต้อง',
+    'ipv6' => ':attribute ต้องเป็นที่อยู่ IPv6 ที่ถูกต้อง',
+    'mac_address' => ':attribute ต้องเป็นที่อยู่ MAC ที่ถูกต้อง',
+    'json' => ':attribute ต้องเป็นสตริง JSON ที่ถูกต้อง',
     'lt' => [
-        'numeric' => 'The :attribute must be less than :value.',
-        'file' => 'The :attribute must be less than :value kilobytes.',
-        'string' => 'The :attribute must be less than :value characters.',
-        'array' => 'The :attribute must have less than :value items.',
+        'numeric' => ':attribute ต้องน้อยกว่า :value',
+        'file' => ':attribute ต้องมีขนาดน้อยกว่า :value กิโลไบต์',
+        'string' => ':attribute ต้องมีความยาวน้อยกว่า :value ตัวอักษร',
+        'array' => ':attribute ต้องมีน้อยกว่า :value รายการ',
     ],
     'lte' => [
-        'numeric' => 'The :attribute must be less than or equal to :value.',
-        'file' => 'The :attribute must be less than or equal to :value kilobytes.',
-        'string' => 'The :attribute must be less than or equal to :value characters.',
-        'array' => 'The :attribute must not have more than :value items.',
+        'numeric' => ':attribute ต้องน้อยกว่าหรือเท่ากับ :value',
+        'file' => ':attribute ต้องมีขนาดน้อยกว่าหรือเท่ากับ :value กิโลไบต์',
+        'string' => ':attribute ต้องมีความยาวน้อยกว่าหรือเท่ากับ :value ตัวอักษร',
+        'array' => ':attribute ต้องมีไม่เกิน :value รายการ',
     ],
     'max' => [
-        'numeric' => 'The :attribute must not be greater than :max.',
-        'file' => 'The :attribute must not be greater than :max kilobytes.',
-        'string' => 'The :attribute must not be greater than :max characters.',
-        'array' => 'The :attribute must not have more than :max items.',
+        'numeric' => ':attribute ต้องไม่เกิน :max',
+        'file' => ':attribute ต้องมีขนาดไม่เกิน :max กิโลไบต์',
+        'string' => ':attribute ต้องมีความยาวไม่เกิน :max ตัวอักษร',
+        'array' => ':attribute ต้องมีไม่เกิน :max รายการ',
     ],
-    'mimes' => 'The :attribute must be a file of type: :values.',
-    'mimetypes' => 'The :attribute must be a file of type: :values.',
+    'mimes' => ':attribute ต้องเป็นไฟล์ประเภท: :values',
+    'mimetypes' => ':attribute ต้องเป็นไฟล์ประเภท: :values',
     'min' => [
-        'numeric' => 'The :attribute must be at least :min.',
-        'file' => 'The :attribute must be at least :min kilobytes.',
-        'string' => 'The :attribute must be at least :min characters.',
-        'array' => 'The :attribute must have at least :min items.',
+        'numeric' => ':attribute ต้องมีค่าอย่างน้อย :min',
+        'file' => ':attribute ต้องมีขนาดอย่างน้อย :min กิโลไบต์',
+        'string' => ':attribute ต้องมีความยาวอย่างน้อย :min ตัวอักษร',
+        'array' => ':attribute ต้องมีอย่างน้อย :min รายการ',
     ],
-    'multiple_of' => 'The :attribute must be a multiple of :value.',
-    'not_in' => 'The selected :attribute is invalid.',
-    'not_regex' => 'The :attribute format is invalid.',
-    'numeric' => 'The :attribute must be a number.',
-    'password' => 'The password is incorrect.',
-    'present' => 'The :attribute field must be present.',
-    'prohibited' => 'The :attribute field is prohibited.',
-    'prohibited_if' => 'The :attribute field is prohibited when :other is :value.',
-    'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.',
-    'prohibits' => 'The :attribute field prohibits :other from being present.',
-    'regex' => 'The :attribute format is invalid.',
-    'required' => 'The :attribute field is required.',
-    'required_if' => 'The :attribute field is required when :other is :value.',
-    'required_unless' => 'The :attribute field is required unless :other is in :values.',
-    'required_with' => 'The :attribute field is required when :values is present.',
-    'required_with_all' => 'The :attribute field is required when :values are present.',
-    'required_without' => 'The :attribute field is required when :values is not present.',
-    'required_without_all' => 'The :attribute field is required when none of :values are present.',
-    'same' => 'The :attribute and :other must match.',
+    'multiple_of' => ':attribute ต้องเป็นผลคูณของ :value',
+    'not_in' => ':attribute ที่เลือกไม่ถูกต้อง',
+    'not_regex' => 'รูปแบบของ :attribute ไม่ถูกต้อง',
+    'numeric' => ':attribute ต้องเป็นตัวเลข',
+    'password' => 'รหัสผ่านไม่ถูกต้อง',
+    'present' => ':attribute ต้องมีอยู่',
+    'prohibited' => ':attribute ไม่อนุญาต',
+    'prohibited_if' => ':attribute ไม่อนุญาตเมื่อ :other เป็น :value',
+    'prohibited_unless' => ':attribute ไม่อนุญาต เว้นแต่ :other อยู่ใน :values',
+    'prohibits' => ':attribute ห้ามมี :other',
+    'regex' => 'รูปแบบของ :attribute ไม่ถูกต้อง',
+    'required' => ':attribute จำเป็นต้องกรอก',
+    'required_if' => ':attribute จำเป็นต้องกรอกเมื่อ :other เป็น :value',
+    'required_unless' => ':attribute จำเป็นต้องกรอก เว้นแต่ :other อยู่ใน :values',
+    'required_with' => ':attribute จำเป็นต้องกรอกเมื่อมี :values',
+    'required_with_all' => ':attribute จำเป็นต้องกรอกเมื่อมี :values ทั้งหมด',
+    'required_without' => ':attribute จำเป็นต้องกรอกเมื่อไม่มี :values',
+    'required_without_all' => ':attribute จำเป็นต้องกรอกเมื่อไม่มี :values ใดเลย',
+    'same' => ':attribute และ :other ต้องตรงกัน',
     'size' => [
-        'numeric' => 'The :attribute must be :size.',
-        'file' => 'The :attribute must be :size kilobytes.',
-        'string' => 'The :attribute must be :size characters.',
-        'array' => 'The :attribute must contain :size items.',
+        'numeric' => ':attribute ต้องมีขนาด :size',
+        'file' => ':attribute ต้องมีขนาด :size กิโลไบต์',
+        'string' => ':attribute ต้องมีความยาว :size ตัวอักษร',
+        'array' => ':attribute ต้องมี :size รายการ',
     ],
-    'starts_with' => 'The :attribute must start with one of the following: :values.',
-    'string' => 'The :attribute must be a string.',
-    'timezone' => 'The :attribute must be a valid timezone.',
-    'unique' => 'The :attribute has already been taken.',
-    'uploaded' => 'The :attribute failed to upload.',
-    'url' => 'The :attribute must be a valid URL.',
-    'uuid' => 'The :attribute must be a valid UUID.',
+    'starts_with' => ':attribute ต้องขึ้นต้นด้วยหนึ่งในค่าต่อไปนี้: :values',
+    'string' => ':attribute ต้องเป็นสตริง',
+    'timezone' => ':attribute ต้องเป็นเขตเวลาที่ถูกต้อง',
+    'unique' => ':attribute นี้ถูกใช้งานแล้ว',
+    'uploaded' => ':attribute อัปโหลดล้มเหลว',
+    'url' => ':attribute ต้องเป็น URL ที่ถูกต้อง',
+    'uuid' => ':attribute ต้องเป็น UUID ที่ถูกต้อง',
 
     /*
     |--------------------------------------------------------------------------

+ 3 - 3
api-v13/resources/lang/zh-Hans/auth.php

@@ -13,8 +13,8 @@ return [
     |
     */
 
-    'failed' => 'These credentials do not match our records.',
-    'password' => 'The provided password is incorrect.',
-    'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
+    'failed' => '用户名或密码错误。',
+    'password' => '密码不正确。',
+    'throttle' => '登录尝试次数过多,请在 :seconds 秒后重试。',
 
 ];

+ 10 - 0
api-v13/resources/lang/zh-Hans/language.php

@@ -0,0 +1,10 @@
+<?php
+
+return [
+    'en' => 'English',
+    'pali' => 'pali',
+    'zh' => '中文',
+    'zh-Hans' => '简体中文',
+    'zh-Hant' => '繁体中文',
+    'my' => 'မြန်မာဘာသာ',
+];

+ 134 - 0
api-v13/resources/lang/zh-Hans/library.php

@@ -0,0 +1,134 @@
+<?php
+
+return [
+    // index.blade.php
+    'portal_title' => 'WikiPāli · 巴利书库',
+    'portal_hero_title' => 'WikiPāli 巴利书库',
+    'portal_hero_subtitle' => '探索巴利三藏 · 开启智慧之门',
+    'search_placeholder_home' => '搜索经典、词条、文集…',
+    'section_tipitaka' => '巴利三藏',
+    'enter_tipitaka' => '进入三藏',
+    'more' => '更多',
+    'section_recent' => '最新译文',
+    'updating_badge' => '持续更新中',
+    'view_all' => '查看全部',
+    'badge_new' => '新增',
+    'badge_updated' => '更新',
+
+    // search.blade.php
+    'search_results_title' => '的搜索结果',
+    'search_title' => '搜索',
+    'search_placeholder' => '搜索条目、巴利文、梵文…',
+    'searching' => '搜索',
+    'results_found_prefix' => ',共找到',
+    'results_found_suffix' => '条结果',
+    'page_prefix' => '(第',
+    'page_suffix' => '页)',
+    'no_results' => ',未找到相关条目',
+    'try_other_keywords' => '请尝试其他关键词',
+    'filter_by' => '按',
+    'filter' => '筛选',
+    'all' => '全部',
+    'did_you_mean' => '你可能在找',
+    'browse_categories' => '分类浏览',
+
+    // download.blade.php
+    'download' => '下载',
+    'offline_packets' => 'APP 离线数据包',
+    'packet_count_suffix' => '个数据包',
+    'no_packets' => '暂无数据包',
+    'no_packets_desc' => '当前没有可用的离线数据包。',
+    'col_name' => '数据包名称',
+    'col_size' => '文件大小',
+    'col_min_version' => '最低版本',
+    'created_at' => '创建时间',
+    'col_links' => '下载链接',
+    'no_links' => '暂无链接',
+    'min_version_prefix' => '最低版本 ',
+
+    // wiki blade files
+    'wiki_encyclopedia' => '佛教百科',
+    'wiki_subtitle' => '探索佛法智慧 · 开启觉悟之门',
+    'wiki_search_placeholder' => '搜索佛法词条、经典、人物...',
+    'hot' => '热门:',
+    'wiki_language_divider' => '以您的语言阅读佛教百科',
+    'articles' => '词条',
+    'today_updates' => '今日更新',
+    'contributors_suffix' => '位贡献者',
+    'today_entry' => '今日条目',
+    'read_full_entry' => '阅读完整条目 →',
+    'featured_entries' => '精选条目',
+    'statistics' => '统计',
+    'total_entries' => '条目总数',
+    'this_month' => '本月新增',
+    'contributors' => '贡献者',
+    'quality_level' => '质量等级',
+    'other_versions' => '其他版本',
+    'toc' => '目录',
+    'entry_info' => '条目信息',
+    'category' => '分类',
+    'quality' => '质量',
+    'recent_updates' => '最近更新',
+
+    // anthology
+    'site_name' => '巴利书库',
+    'home' => '首页',
+    'anthology' => '文集',
+    'anthology_subtitle' => '经论注疏 · 禅修指引 · 法义探讨',
+    'no_anthology' => '暂无文集',
+    'search_anthology' => '搜索文集…',
+    'author' => '作者',
+    'anthology_count_suffix' => '篇文集',
+    'last_updated' => '最后更新',
+    'chapter_count' => '章节数',
+    'chapters' => '章节',
+    'read_online' => '在线阅读',
+    'open_in_editor' => '在编辑器中打开',
+    'about_anthology' => '关于本文集',
+    'anthology_info' => '文集信息',
+    'language' => '语言',
+    'created' => '创建',
+    'updated' => '更新',
+    'related_anthology' => '相关文集',
+    'articles_suffix' => '篇文章',
+
+    // tipitaka & reader
+    'tipitaka' => '三藏',
+    'categories' => '分类',
+    'search_tipitaka' => '搜索三藏原文译文',
+    'type' => '类型',
+    'clear_filters' => '清除过滤器',
+    'total_prefix' => '共',
+    'book_unit' => '本',
+    'sort' => '排序',
+    'weekly_picks' => '本周推荐',
+    'active_authors' => '活跃译者',
+    'publisher' => '出版',
+    'pali' => '巴利语',
+    'book_info' => '书籍信息',
+    'editor' => '编辑器',
+    'settings' => '设置',
+    'versions' => '版本',
+    'logout' => '退出',
+    'select_version' => '选择版本',
+    'no_content' => '没有内容',
+    'prev_article' => '上一篇',
+    'next_article' => '下一篇',
+    'tags' => '标签',
+    'reading_settings' => '阅读设置',
+    'show_original' => '显示原文',
+    'toggle_original' => '开启/关闭原文显示',
+    'ui_language' => '界面语言',
+    'auto' => '自动',
+    'lang_zh_hans' => '简体中文',
+    'lang_en' => '英文',
+    'pali_script' => '巴利语脚本',
+    'script_roman' => '罗马',
+    'script_myanmar' => '缅文',
+    'script_thai' => '泰文',
+    'commentary_version' => '注疏版本',
+    'none' => '不显示',
+    'cancel' => '取消',
+    'confirm' => '确定',
+    'no_toc' => '此书没有目录',
+];

+ 2 - 2
api-v13/resources/lang/zh-Hans/pagination.php

@@ -13,7 +13,7 @@ return [
     |
     */
 
-    'previous' => '&laquo; Previous',
-    'next' => 'Next &raquo;',
+    'previous' => '&laquo; 上一页',
+    'next' => '下一页 &raquo;',
 
 ];

+ 5 - 5
api-v13/resources/lang/zh-Hans/passwords.php

@@ -13,10 +13,10 @@ return [
     |
     */
 
-    'reset' => 'Your password has been reset!',
-    'sent' => 'We have emailed your password reset link!',
-    'throttled' => 'Please wait before retrying.',
-    'token' => 'This password reset token is invalid.',
-    'user' => "We can't find a user with that email address.",
+    'reset' => '密码已重置!',
+    'sent' => '密码重置链接已发送到您的邮箱!',
+    'throttled' => '请稍候再试。',
+    'token' => '密码重置令牌无效。',
+    'user' => '找不到使用该邮箱地址的用户。',
 
 ];

+ 100 - 99
api-v13/resources/lang/zh-Hans/validation.php

@@ -13,121 +13,121 @@ return [
     |
     */
 
-    'accepted' => 'The :attribute must be accepted.',
-    'accepted_if' => 'The :attribute must be accepted when :other is :value.',
-    'active_url' => 'The :attribute is not a valid URL.',
-    'after' => 'The :attribute must be a date after :date.',
-    'after_or_equal' => 'The :attribute must be a date after or equal to :date.',
-    'alpha' => 'The :attribute must only contain letters.',
-    'alpha_dash' => 'The :attribute must only contain letters, numbers, dashes and underscores.',
-    'alpha_num' => 'The :attribute must only contain letters and numbers.',
-    'array' => 'The :attribute must be an array.',
-    'before' => 'The :attribute must be a date before :date.',
-    'before_or_equal' => 'The :attribute must be a date before or equal to :date.',
+    'accepted' => ':attribute 必须被接受。',
+    'accepted_if' => '当 :other 为 :value 时,:attribute 必须被接受。',
+    'active_url' => ':attribute 不是有效的 URL。',
+    'after' => ':attribute 必须是 :date 之后的日期。',
+    'after_or_equal' => ':attribute 必须是等于或晚于 :date 的日期。',
+    'alpha' => ':attribute 只能包含字母。',
+    'alpha_dash' => ':attribute 只能包含字母、数字、破折号和下划线。',
+    'alpha_num' => ':attribute 只能包含字母和数字。',
+    'array' => ':attribute 必须是数组。',
+    'before' => ':attribute 必须是 :date 之前的日期。',
+    'before_or_equal' => ':attribute 必须是等于或早于 :date 的日期。',
     'between' => [
-        'numeric' => 'The :attribute must be between :min and :max.',
-        'file' => 'The :attribute must be between :min and :max kilobytes.',
-        'string' => 'The :attribute must be between :min and :max characters.',
-        'array' => 'The :attribute must have between :min and :max items.',
+        'numeric' => ':attribute 必须在 :min 和 :max 之间。',
+        'file' => ':attribute 必须在 :min 和 :max 千字节之间。',
+        'string' => ':attribute 必须在 :min 和 :max 个字符之间。',
+        'array' => ':attribute 必须在 :min 和 :max 个元素之间。',
     ],
-    'boolean' => 'The :attribute field must be true or false.',
-    'confirmed' => 'The :attribute confirmation does not match.',
-    'current_password' => 'The password is incorrect.',
-    'date' => 'The :attribute is not a valid date.',
-    'date_equals' => 'The :attribute must be a date equal to :date.',
-    'date_format' => 'The :attribute does not match the format :format.',
-    'declined' => 'The :attribute must be declined.',
-    'declined_if' => 'The :attribute must be declined when :other is :value.',
-    'different' => 'The :attribute and :other must be different.',
-    'digits' => 'The :attribute must be :digits digits.',
-    'digits_between' => 'The :attribute must be between :min and :max digits.',
-    'dimensions' => 'The :attribute has invalid image dimensions.',
-    'distinct' => 'The :attribute field has a duplicate value.',
-    'email' => 'The :attribute must be a valid email address.',
-    'ends_with' => 'The :attribute must end with one of the following: :values.',
-    'enum' => 'The selected :attribute is invalid.',
-    'exists' => 'The selected :attribute is invalid.',
-    'file' => 'The :attribute must be a file.',
-    'filled' => 'The :attribute field must have a value.',
+    'boolean' => ':attribute 字段必须为 true 或 false。',
+    'confirmed' => ':attribute 两次输入不一致。',
+    'current_password' => '密码不正确。',
+    'date' => ':attribute 不是有效的日期。',
+    'date_equals' => ':attribute 必须是等于 :date 的日期。',
+    'date_format' => ':attribute 与格式 :format 不匹配。',
+    'declined' => ':attribute 必须被拒绝。',
+    'declined_if' => '当 :other 为 :value 时,:attribute 必须被拒绝。',
+    'different' => ':attribute 与 :other 必须不同。',
+    'digits' => ':attribute 必须是 :digits 位数字。',
+    'digits_between' => ':attribute 必须在 :min 和 :max 位数字之间。',
+    'dimensions' => ':attribute 的图片尺寸无效。',
+    'distinct' => ':attribute 字段存在重复值。',
+    'email' => ':attribute 必须是有效的电子邮件地址。',
+    'ends_with' => ':attribute 必须以下列之一结尾::values。',
+    'enum' => '所选的 :attribute 无效。',
+    'exists' => '所选的 :attribute 无效。',
+    'file' => ':attribute 必须是文件。',
+    'filled' => ':attribute 字段不能为空。',
     'gt' => [
-        'numeric' => 'The :attribute must be greater than :value.',
-        'file' => 'The :attribute must be greater than :value kilobytes.',
-        'string' => 'The :attribute must be greater than :value characters.',
-        'array' => 'The :attribute must have more than :value items.',
+        'numeric' => ':attribute 必须大于 :value。',
+        'file' => ':attribute 必须大于 :value 千字节。',
+        'string' => ':attribute 必须多于 :value 个字符。',
+        'array' => ':attribute 必须多于 :value 个元素。',
     ],
     'gte' => [
-        'numeric' => 'The :attribute must be greater than or equal to :value.',
-        'file' => 'The :attribute must be greater than or equal to :value kilobytes.',
-        'string' => 'The :attribute must be greater than or equal to :value characters.',
-        'array' => 'The :attribute must have :value items or more.',
+        'numeric' => ':attribute 必须大于或等于 :value。',
+        'file' => ':attribute 必须大于或等于 :value 千字节。',
+        'string' => ':attribute 必须大于或等于 :value 个字符。',
+        'array' => ':attribute 必须有 :value 个或更多元素。',
     ],
-    'image' => 'The :attribute must be an image.',
-    'in' => 'The selected :attribute is invalid.',
-    'in_array' => 'The :attribute field does not exist in :other.',
-    'integer' => 'The :attribute must be an integer.',
-    'ip' => 'The :attribute must be a valid IP address.',
-    'ipv4' => 'The :attribute must be a valid IPv4 address.',
-    'ipv6' => 'The :attribute must be a valid IPv6 address.',
-    'mac_address' => 'The :attribute must be a valid MAC address.',
-    'json' => 'The :attribute must be a valid JSON string.',
+    'image' => ':attribute 必须是图片。',
+    'in' => '所选的 :attribute 无效。',
+    'in_array' => ':attribute 字段不存在于 :other 中。',
+    'integer' => ':attribute 必须是整数。',
+    'ip' => ':attribute 必须是有效的 IP 地址。',
+    'ipv4' => ':attribute 必须是有效的 IPv4 地址。',
+    'ipv6' => ':attribute 必须是有效的 IPv6 地址。',
+    'mac_address' => ':attribute 必须是有效的 MAC 地址。',
+    'json' => ':attribute 必须是有效的 JSON 字符串。',
     'lt' => [
-        'numeric' => 'The :attribute must be less than :value.',
-        'file' => 'The :attribute must be less than :value kilobytes.',
-        'string' => 'The :attribute must be less than :value characters.',
-        'array' => 'The :attribute must have less than :value items.',
+        'numeric' => ':attribute 必须小于 :value。',
+        'file' => ':attribute 必须小于 :value 千字节。',
+        'string' => ':attribute 必须少于 :value 个字符。',
+        'array' => ':attribute 必须少于 :value 个元素。',
     ],
     'lte' => [
-        'numeric' => 'The :attribute must be less than or equal to :value.',
-        'file' => 'The :attribute must be less than or equal to :value kilobytes.',
-        'string' => 'The :attribute must be less than or equal to :value characters.',
-        'array' => 'The :attribute must not have more than :value items.',
+        'numeric' => ':attribute 必须小于或等于 :value。',
+        'file' => ':attribute 必须小于或等于 :value 千字节。',
+        'string' => ':attribute 必须小于或等于 :value 个字符。',
+        'array' => ':attribute 不能多于 :value 个元素。',
     ],
     'max' => [
-        'numeric' => 'The :attribute must not be greater than :max.',
-        'file' => 'The :attribute must not be greater than :max kilobytes.',
-        'string' => 'The :attribute must not be greater than :max characters.',
-        'array' => 'The :attribute must not have more than :max items.',
+        'numeric' => ':attribute 不能大于 :max。',
+        'file' => ':attribute 不能大于 :max 千字节。',
+        'string' => ':attribute 不能多于 :max 个字符。',
+        'array' => ':attribute 不能多于 :max 个元素。',
     ],
-    'mimes' => 'The :attribute must be a file of type: :values.',
-    'mimetypes' => 'The :attribute must be a file of type: :values.',
+    'mimes' => ':attribute 必须是以下类型的文件::values。',
+    'mimetypes' => ':attribute 必须是以下类型的文件::values。',
     'min' => [
-        'numeric' => 'The :attribute must be at least :min.',
-        'file' => 'The :attribute must be at least :min kilobytes.',
-        'string' => 'The :attribute must be at least :min characters.',
-        'array' => 'The :attribute must have at least :min items.',
+        'numeric' => ':attribute 至少为 :min。',
+        'file' => ':attribute 至少为 :min 千字节。',
+        'string' => ':attribute 至少为 :min 个字符。',
+        'array' => ':attribute 至少有 :min 个元素。',
     ],
-    'multiple_of' => 'The :attribute must be a multiple of :value.',
-    'not_in' => 'The selected :attribute is invalid.',
-    'not_regex' => 'The :attribute format is invalid.',
-    'numeric' => 'The :attribute must be a number.',
-    'password' => 'The password is incorrect.',
-    'present' => 'The :attribute field must be present.',
-    'prohibited' => 'The :attribute field is prohibited.',
-    'prohibited_if' => 'The :attribute field is prohibited when :other is :value.',
-    'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.',
-    'prohibits' => 'The :attribute field prohibits :other from being present.',
-    'regex' => 'The :attribute format is invalid.',
-    'required' => 'The :attribute field is required.',
-    'required_if' => 'The :attribute field is required when :other is :value.',
-    'required_unless' => 'The :attribute field is required unless :other is in :values.',
-    'required_with' => 'The :attribute field is required when :values is present.',
-    'required_with_all' => 'The :attribute field is required when :values are present.',
-    'required_without' => 'The :attribute field is required when :values is not present.',
-    'required_without_all' => 'The :attribute field is required when none of :values are present.',
-    'same' => 'The :attribute and :other must match.',
+    'multiple_of' => ':attribute 必须是 :value 的倍数。',
+    'not_in' => '所选的 :attribute 无效。',
+    'not_regex' => ':attribute 格式无效。',
+    'numeric' => ':attribute 必须是数字。',
+    'password' => '密码不正确。',
+    'present' => ':attribute 字段必须存在。',
+    'prohibited' => ':attribute 字段被禁止。',
+    'prohibited_if' => '当 :other 为 :value 时,:attribute 字段被禁止。',
+    'prohibited_unless' => '除非 :other 在 :values 中,否则 :attribute 字段被禁止。',
+    'prohibits' => ':attribute 字段禁止 :other 出现。',
+    'regex' => ':attribute 格式无效。',
+    'required' => ':attribute 字段是必填项。',
+    'required_if' => '当 :other 为 :value 时,:attribute 字段是必填项。',
+    'required_unless' => '除非 :other 在 :values 中,否则 :attribute 字段是必填项。',
+    'required_with' => '当 :values 存在时,:attribute 字段是必填项。',
+    'required_with_all' => '当 :values 都存在时,:attribute 字段是必填项。',
+    'required_without' => '当 :values 不存在时,:attribute 字段是必填项。',
+    'required_without_all' => '当 :values 都不存在时,:attribute 字段是必填项。',
+    'same' => ':attribute 与 :other 必须匹配。',
     'size' => [
-        'numeric' => 'The :attribute must be :size.',
-        'file' => 'The :attribute must be :size kilobytes.',
-        'string' => 'The :attribute must be :size characters.',
-        'array' => 'The :attribute must contain :size items.',
+        'numeric' => ':attribute 必须为 :size。',
+        'file' => ':attribute 必须为 :size 千字节。',
+        'string' => ':attribute 必须为 :size 个字符。',
+        'array' => ':attribute 必须包含 :size 个元素。',
     ],
-    'starts_with' => 'The :attribute must start with one of the following: :values.',
-    'string' => 'The :attribute must be a string.',
-    'timezone' => 'The :attribute must be a valid timezone.',
-    'unique' => 'The :attribute has already been taken.',
-    'uploaded' => 'The :attribute failed to upload.',
-    'url' => 'The :attribute must be a valid URL.',
-    'uuid' => 'The :attribute must be a valid UUID.',
+    'starts_with' => ':attribute 必须以下列之一开头::values。',
+    'string' => ':attribute 必须是字符串。',
+    'timezone' => ':attribute 必须是有效的时区。',
+    'unique' => ':attribute 已经存在。',
+    'uploaded' => ':attribute 上传失败。',
+    'url' => ':attribute 必须是有效的 URL。',
+    'uuid' => ':attribute 必须是有效的 UUID。',
 
     /*
     |--------------------------------------------------------------------------
@@ -160,3 +160,4 @@ return [
     'attributes' => [],
 
 ];
+

+ 3 - 3
api-v13/resources/lang/zh-Hant/auth.php

@@ -13,8 +13,8 @@ return [
     |
     */
 
-    'failed' => 'These credentials do not match our records.',
-    'password' => 'The provided password is incorrect.',
-    'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
+    'failed' => '用戶名或密碼錯誤。',
+    'password' => '密碼不正確。',
+    'throttle' => '登入嘗試次數過多,請在 :seconds 秒後重試。',
 
 ];

+ 1 - 1
api-v13/resources/lang/zh-Hant/buttons.php

@@ -1,5 +1,5 @@
 <?php
 return [
     'more' => '更多',
-    'online-read' =>  '在线阅读',
+    'online-read' =>  '線上閱讀',
 ];

+ 199 - 0
api-v13/resources/lang/zh-Hant/grammar.php

@@ -0,0 +1,199 @@
+<?php
+
+return [
+
+    /*
+    |--------------------------------------------------------------------------
+    | site Language Lines
+    |--------------------------------------------------------------------------
+    |
+    |
+    */
+
+    'n' => '名詞',
+    'n.short' => '名',
+    'ti' => '三性',
+    'ti.short' => '三',
+    'v' => '動詞',
+    'v.short' => '動',
+    'v:ind' => '動不變',
+    'v:ind.short' => '動不變',
+    'ind' => '不變',
+    'ind.short' => '不',
+    'm' => '陽性',
+    'm.short' => '陽',
+    'nt' => '中性',
+    'nt.short' => '中',
+    'f' => '陰性',
+    'f.short' => '陰',
+    'sg' => '單數',
+    'sg.short' => '單',
+    'pl' => '複數',
+    'pl.short' => '複',
+    'nom' => '主格',
+    'nom.short' => '主',
+    'acc' => '賓格',
+    'acc.short' => '賓',
+    'gen' => '屬格',
+    'gen.short' => '屬',
+    'dat' => '為格',
+    'dat.short' => '為',
+    'inst' => '工具格',
+    'inst.short' => '具',
+    'voc' => '呼格',
+    'voc.short' => '呼',
+    'abl' => '來源格',
+    'abl.short' => '源',
+    'loc' => '處格',
+    'loc.short' => '處',
+    'base' => '詞幹',
+    'base.short' => '幹',
+    'imp' => '命令',
+    'imp.short' => '命令',
+    'cond' => '條件',
+    'cond.short' => '條件',
+    'opt' => '願望',
+    'opt.short' => '願望',
+    'pres' => '現',
+    'pres.short' => '現',
+    'aor' => '過',
+    'aor.short' => '過',
+    'pf' => '完',
+    'pf.short' => '完',
+    'fut' => '將',
+    'fut.short' => '將',
+    'act' => '主動',
+    'act.short' => '主動',
+    'refl' => '反照',
+    'refl.short' => '反',
+    '1p' => '第一',
+    '1p.short' => '一',
+    '2p' => '第二',
+    '2p.short' => '二',
+    '3p' => '第三',
+    '3p.short' => '三',
+    'prp' => '現在分詞',
+    'prp.short' => '現分',
+    'prpp' => '被動現在分詞',
+    'prpp.short' => '被現分',
+    'pp' => '過去分詞',
+    'pp.short' => '過分',
+    'ppa' => '主過分',
+    'ppa.short' => '主過分',
+    'ppp' => '被過分',
+    'ppp.short' => '被過分',
+    'futp' => '未來分詞',
+    'futp.short' => '未分',
+    'fpa.short' => '主未分',
+    'grd' => '義務',
+    'grd.short' => '義務',
+    'pass' => '被動',
+    'pass.short' => '被動',
+    'caus' => '使役',
+    'caus.short' => '使役',
+    'desid' => '意欲',
+    'desid.short' => '意欲',
+    'intens' => '強意',
+    'intens.short' => '強意',
+    'denom' => '名動',
+    'denom.short' => '名動',
+    'ger' => '連續',
+    'ger.short' => '連續',
+    'abs' => '絕對',
+    'abs.short' => '絕對',
+    'inf' => '不定',
+    'inf.short' => '不定',
+    'adj' => '形容詞',
+    'adj.short' => '形',
+    'pron' => '代詞',
+    'pron.short' => '代',
+    'num' => '數詞',
+    'num.short' => '數',
+    'adv' => '副詞',
+    'adv.short' => '副',
+    'conj' => '連詞',
+    'conj.short' => '連',
+    'prep' => '介詞',
+    'prep.short' => '介',
+    'interj' => '感嘆',
+    'interj.short' => '感',
+    'pre' => '前綴',
+    'pre.short' => '前',
+    'suf' => '後綴',
+    'suf.short' => '後',
+    'end' => '語尾',
+    'end.short' => '尾',
+    'part' => '組份',
+    'part.short' => '合',
+    'un' => '連音',
+    'un.short' => '連音',
+    'none' => '無',
+    'none.short' => '_',
+    'null' => '空',
+    'null.short' => '_',
+    '?' => '?',
+    '?.short' => '?',
+    'ti:base' => '三性詞幹',
+    'ti:base.short' => '三性詞幹',
+    'n:base' => '名詞幹',
+    'n:base.short' => '名詞幹',
+    'v:base' => '動詞幹',
+    'v:base.short' => '動詞幹',
+    'adj:base' => '形詞幹',
+    'adj:base.short' => '形詞幹',
+    'fpp' => '未來被動分詞',
+    'fpp.short' => '未被分',
+    'cp.short' => '合',
+    'cp' => '複合詞組分',
+    'indconj.short' => '連',
+    'indconj' => '連詞',
+    'pron:base.short' => '代幹',
+    'pron:base' => '代詞詞幹',
+    'note.short' => '注釋',
+    'note' => '注釋',
+    'vind.short' => '動不變',
+    'vind' => '動不變',
+    'vdn' => '衍生動名詞',
+    'vdn.short' => '動名',
+    "relations.iad.label" => "同類修飾",
+    "relations.asv.label" => "施動者➡動詞",
+    "relations.aov.label" => "受動者➡動詞",
+    "relations.daso-p.label" => "主語➡系動詞",
+    "relations.daso-s.label" => "表語➡系動詞",
+    "relations.nio.label" => "被描述(主)➡定性(表)",
+    "relations.nid.label" => "待命名➡命名",
+    "relations.dasd-p.label" => "<命名>主➡系",
+    "relations.dasd-s.label" => "<命名>表➡系",
+    "relations.dao-p.label" => "被動語態雙賓語-首要",
+    "relations.dao-s.label" => "被動語態雙賓語-次要",
+    "relations.iov.label" => "受動者➡動詞",
+    "relations.dio-p.label" => "雙賓語<主要>➡動詞",
+    "relations.dio-s.label" => "雙賓語<次要>➡動詞",
+    "relations.dis-p.label" => "主➡系(被動)",
+    "relations.dis-s.label" => "表➡系(被動)",
+    "relations.stc.label" => "時空連續 ➡ 持續動作",
+    "relations.adv.label" => "動詞修飾詞 ➡ 動詞",
+    "relations.imp.label" => "方式 ➡ 動詞",
+    "relations.soe.label" => "<帶連詞>伴隨關係",
+    "relations.soi.label" => "<無連詞>伴隨關係",
+    "relations.isv.label" => "<非主格>施動者 ➡ 動詞",
+    "relations.cau.label" => "因 ➡ 果/歸因",
+    "relations.iov-c.label" => "被使役賓語 ➡ 動詞",
+    "relations.adj.label" => "名詞的形容 ➡ 被形容",
+    "relations.rec.label" => "接收者 ➡ 授予",
+    "relations.pur.label" => "目的 ➡ 動詞",
+    "relations.det.label" => "出發地 ➡ 出發",
+    "relations.coc.label" => "區分比較",
+    "relations.pos.label" => "所有 ➡ 被所有",
+    "relations.coi.label" => "包含[全集] ➡ 被包含[子集]元素/集合 ➡ 個體元素",
+    "relations.lov.label" => "容器 ➡ 動詞/容納 ➡ 被容納",
+    "relations.mot.label" => "表現 ➡ 有表現",
+    "relations.whp.label" => "整體 ➡ 局部",
+    "relations.def.label" => "特徵限定",
+    "relations.ac.label" => "絕對從句",
+    "relations.avc.label" => "絕對語態從句",
+    "relations.qus.label" => "引號內 ➡ 引號",
+    "relations.qum.label" => "引號 ➡ 引號外",
+    "relations.enu.label" => "羅列 ➡ 破折號",
+    "relations.enm.label" => "破折號 ➡ 被羅列",
+];

+ 10 - 0
api-v13/resources/lang/zh-Hant/language.php

@@ -0,0 +1,10 @@
+<?php
+
+return [
+    'en' => 'English',
+    'pali' => 'pali',
+    'zh' => '中文',
+    'zh-Hans' => '簡體中文',
+    'zh-Hant' => '繁體中文',
+    'my' => 'မြန်မာဘာသာ',
+];

+ 134 - 0
api-v13/resources/lang/zh-Hant/library.php

@@ -0,0 +1,134 @@
+<?php
+
+return [
+    // index.blade.php
+    'portal_title' => 'WikiPāli · 巴利文藏經庫',
+    'portal_hero_title' => 'WikiPāli 巴利文藏經庫',
+    'portal_hero_subtitle' => '探索三藏 · 通往智慧之門',
+    'search_placeholder_home' => '搜尋經典、術語、集合…',
+    'section_tipitaka' => '三藏',
+    'enter_tipitaka' => '進入三藏',
+    'more' => '更多',
+    'section_recent' => '最新譯文',
+    'updating_badge' => '更新中',
+    'view_all' => '查看全部',
+    'badge_new' => '新增',
+    'badge_updated' => '已更新',
+
+    // search.blade.php
+    'search_results_title' => '搜尋結果',
+    'search_title' => '搜尋',
+    'search_placeholder' => '搜尋詞條、巴利文、梵文…',
+    'searching' => '搜尋',
+    'results_found_prefix' => ',找到',
+    'results_found_suffix' => '筆結果',
+    'page_prefix' => '(第',
+    'page_suffix' => '頁)',
+    'no_results' => ',未找到相關結果',
+    'try_other_keywords' => '請嘗試其他關鍵字',
+    'filter_by' => '篩選:',
+    'filter' => '',
+    'all' => '全部',
+    'did_you_mean' => '您是否要搜尋',
+    'browse_categories' => '瀏覽分類',
+
+    // download.blade.php
+    'download' => '下載',
+    'offline_packets' => 'APP 離線資料包',
+    'packet_count_suffix' => '個資料包',
+    'no_packets' => '無資料包',
+    'no_packets_desc' => '目前沒有可用的離線資料包。',
+    'col_name' => '資料包名稱',
+    'col_size' => '檔案大小',
+    'col_min_version' => '最低版本',
+    'created_at' => '建立時間',
+    'col_links' => '下載連結',
+    'no_links' => '無連結',
+    'min_version_prefix' => '最低版本 ',
+
+    // wiki blade files
+    'wiki_encyclopedia' => '佛教百科全書',
+    'wiki_subtitle' => '探索佛法 · 通往覺悟之門',
+    'wiki_search_placeholder' => '搜尋術語、經典、人物…',
+    'hot' => '熱門:',
+    'wiki_language_divider' => '以您的語言閱讀佛教百科全書',
+    'articles' => '篇文章',
+    'today_updates' => '今日更新',
+    'contributors_suffix' => '位貢獻者',
+    'today_entry' => '今日詞條',
+    'read_full_entry' => '閱讀完整詞條 →',
+    'featured_entries' => '精選詞條',
+    'statistics' => '統計資料',
+    'total_entries' => '詞條總數',
+    'this_month' => '本月',
+    'contributors' => '貢獻者',
+    'quality_level' => '品質等級',
+    'other_versions' => '其他版本',
+    'toc' => '目錄',
+    'entry_info' => '詞條資訊',
+    'category' => '分類',
+    'quality' => '品質',
+    'recent_updates' => '最近更新',
+
+    // anthology
+    'site_name' => '巴利文藏經庫',
+    'home' => '首頁',
+    'anthology' => '文集',
+    'anthology_subtitle' => '注疏 · 禪修指引 · 佛法論述',
+    'no_anthology' => '無文集',
+    'search_anthology' => '搜尋文集…',
+    'author' => '作者',
+    'anthology_count_suffix' => '部文集',
+    'last_updated' => '最後更新',
+    'chapter_count' => '章節數',
+    'chapters' => '章',
+    'read_online' => '線上閱讀',
+    'open_in_editor' => '在編輯器中開啟',
+    'about_anthology' => '關於此文集',
+    'anthology_info' => '文集資訊',
+    'language' => '語言',
+    'created' => '建立時間',
+    'updated' => '更新時間',
+    'related_anthology' => '相關文集',
+    'articles_suffix' => '篇文章',
+
+    // tipitaka & reader
+    'tipitaka' => '三藏',
+    'categories' => '分類',
+    'search_tipitaka' => '搜尋三藏原文與譯文',
+    'type' => '類型',
+    'clear_filters' => '清除篩選',
+    'total_prefix' => '共',
+    'book_unit' => '部',
+    'sort' => '排序',
+    'weekly_picks' => '本週精選',
+    'active_authors' => '活躍譯者',
+    'publisher' => '出版者',
+    'pali' => '巴利文',
+    'book_info' => '書籍資訊',
+    'editor' => '編輯',
+    'settings' => '設定',
+    'versions' => '版本',
+    'logout' => '登出',
+    'select_version' => '選擇版本',
+    'no_content' => '無內容',
+    'prev_article' => '上一篇',
+    'next_article' => '下一篇',
+    'tags' => '標籤',
+    'reading_settings' => '閱讀設定',
+    'show_original' => '顯示原文',
+    'toggle_original' => '切換原文顯示',
+    'ui_language' => '介面語言',
+    'auto' => '自動',
+    'lang_zh_hans' => '簡體中文',
+    'lang_en' => '英文',
+    'pali_script' => '巴利文字體',
+    'script_roman' => '羅馬字',
+    'script_myanmar' => '緬甸文',
+    'script_thai' => '泰文',
+    'commentary_version' => '注疏版本',
+    'none' => '無',
+    'cancel' => '取消',
+    'confirm' => '確定',
+    'no_toc' => '本書無目錄',
+];

+ 2 - 2
api-v13/resources/lang/zh-Hant/pagination.php

@@ -13,7 +13,7 @@ return [
     |
     */
 
-    'previous' => '&laquo; Previous',
-    'next' => 'Next &raquo;',
+    'previous' => '&laquo; 上一頁',
+    'next' => '下一頁 &raquo;',
 
 ];

+ 5 - 5
api-v13/resources/lang/zh-Hant/passwords.php

@@ -13,10 +13,10 @@ return [
     |
     */
 
-    'reset' => 'Your password has been reset!',
-    'sent' => 'We have emailed your password reset link!',
-    'throttled' => 'Please wait before retrying.',
-    'token' => 'This password reset token is invalid.',
-    'user' => "We can't find a user with that email address.",
+    'reset' => '密碼已重置!',
+    'sent' => '密碼重置連結已發送到您的信箱!',
+    'throttled' => '請稍候再試。',
+    'token' => '密碼重置令牌無效。',
+    'user' => '找不到使用該信箱地址的用戶。',
 
 ];

+ 12 - 2
api-v13/resources/lang/zh-Hant/site.php

@@ -11,12 +11,22 @@ return [
     */
 
     'logo' => '/logo.png',
-    'title' => '基巴利',
+    'title' => '基巴利',
     'subhead' => 'wikipali',
-    'keywords' => ['巴利语','佛教'],
+    'keywords' => ['巴利語', '佛教'],
     'description' => 'wikipali',
     'copyright' => 'iapt 2022',
     'author.name' => 'iapt',
     'author.email' => 'visuddhindand@gmail.com',
+    'nav' => [
+        'home' => '首頁',
+        'tipitaka' => '三藏',
+        'wiki' => '百科',
+        'anthology' => '文集',
+        'download' => '下載',
+        'menu' => '導航',
+        'open_menu' => '打開導航',
+        'close_menu' => '關閉導航',
+    ],
 
 ];

+ 99 - 99
api-v13/resources/lang/zh-Hant/validation.php

@@ -13,121 +13,121 @@ return [
     |
     */
 
-    'accepted' => 'The :attribute must be accepted.',
-    'accepted_if' => 'The :attribute must be accepted when :other is :value.',
-    'active_url' => 'The :attribute is not a valid URL.',
-    'after' => 'The :attribute must be a date after :date.',
-    'after_or_equal' => 'The :attribute must be a date after or equal to :date.',
-    'alpha' => 'The :attribute must only contain letters.',
-    'alpha_dash' => 'The :attribute must only contain letters, numbers, dashes and underscores.',
-    'alpha_num' => 'The :attribute must only contain letters and numbers.',
-    'array' => 'The :attribute must be an array.',
-    'before' => 'The :attribute must be a date before :date.',
-    'before_or_equal' => 'The :attribute must be a date before or equal to :date.',
+    'accepted' => ':attribute 必須被接受。',
+    'accepted_if' => '當 :other 為 :value 時,:attribute 必須被接受。',
+    'active_url' => ':attribute 不是有效的網址。',
+    'after' => ':attribute 必須是 :date 之後的日期。',
+    'after_or_equal' => ':attribute 必須是 :date 之後或相同的日期。',
+    'alpha' => ':attribute 只能包含字母。',
+    'alpha_dash' => ':attribute 只能包含字母、數字、破折號及底線。',
+    'alpha_num' => ':attribute 只能包含字母和數字。',
+    'array' => ':attribute 必須是陣列。',
+    'before' => ':attribute 必須是 :date 之前的日期。',
+    'before_or_equal' => ':attribute 必須是 :date 之前或相同的日期。',
     'between' => [
-        'numeric' => 'The :attribute must be between :min and :max.',
-        'file' => 'The :attribute must be between :min and :max kilobytes.',
-        'string' => 'The :attribute must be between :min and :max characters.',
-        'array' => 'The :attribute must have between :min and :max items.',
+        'numeric' => ':attribute 必須介於 :min 和 :max 之間。',
+        'file' => ':attribute 必須介於 :min 和 :max 千位元組之間。',
+        'string' => ':attribute 必須介於 :min 和 :max 個字元之間。',
+        'array' => ':attribute 必須有 :min 到 :max 個項目。',
     ],
-    'boolean' => 'The :attribute field must be true or false.',
-    'confirmed' => 'The :attribute confirmation does not match.',
-    'current_password' => 'The password is incorrect.',
-    'date' => 'The :attribute is not a valid date.',
-    'date_equals' => 'The :attribute must be a date equal to :date.',
-    'date_format' => 'The :attribute does not match the format :format.',
-    'declined' => 'The :attribute must be declined.',
-    'declined_if' => 'The :attribute must be declined when :other is :value.',
-    'different' => 'The :attribute and :other must be different.',
-    'digits' => 'The :attribute must be :digits digits.',
-    'digits_between' => 'The :attribute must be between :min and :max digits.',
-    'dimensions' => 'The :attribute has invalid image dimensions.',
-    'distinct' => 'The :attribute field has a duplicate value.',
-    'email' => 'The :attribute must be a valid email address.',
-    'ends_with' => 'The :attribute must end with one of the following: :values.',
-    'enum' => 'The selected :attribute is invalid.',
-    'exists' => 'The selected :attribute is invalid.',
-    'file' => 'The :attribute must be a file.',
-    'filled' => 'The :attribute field must have a value.',
+    'boolean' => ':attribute 欄位必須為 true 或 false。',
+    'confirmed' => ':attribute 確認不符合。',
+    'current_password' => '密碼不正確。',
+    'date' => ':attribute 不是有效的日期。',
+    'date_equals' => ':attribute 必須是等於 :date 的日期。',
+    'date_format' => ':attribute 不符合格式 :format。',
+    'declined' => ':attribute 必須被拒絕。',
+    'declined_if' => '當 :other 為 :value 時,:attribute 必須被拒絕。',
+    'different' => ':attribute 和 :other 必須不同。',
+    'digits' => ':attribute 必須是 :digits 位數字。',
+    'digits_between' => ':attribute 必須介於 :min 到 :max 位數字之間。',
+    'dimensions' => ':attribute 的圖片尺寸無效。',
+    'distinct' => ':attribute 欄位有重複值。',
+    'email' => ':attribute 必須是有效的電子郵件地址。',
+    'ends_with' => ':attribute 必須以下列其中之一結尾::values。',
+    'enum' => '所選的 :attribute 無效。',
+    'exists' => '所選的 :attribute 無效。',
+    'file' => ':attribute 必須是檔案。',
+    'filled' => ':attribute 欄位必須有值。',
     'gt' => [
-        'numeric' => 'The :attribute must be greater than :value.',
-        'file' => 'The :attribute must be greater than :value kilobytes.',
-        'string' => 'The :attribute must be greater than :value characters.',
-        'array' => 'The :attribute must have more than :value items.',
+        'numeric' => ':attribute 必須大於 :value。',
+        'file' => ':attribute 必須大於 :value 千位元組。',
+        'string' => ':attribute 必須多於 :value 個字元。',
+        'array' => ':attribute 必須多於 :value 個項目。',
     ],
     'gte' => [
-        'numeric' => 'The :attribute must be greater than or equal to :value.',
-        'file' => 'The :attribute must be greater than or equal to :value kilobytes.',
-        'string' => 'The :attribute must be greater than or equal to :value characters.',
-        'array' => 'The :attribute must have :value items or more.',
+        'numeric' => ':attribute 必須大於或等於 :value。',
+        'file' => ':attribute 必須大於或等於 :value 千位元組。',
+        'string' => ':attribute 必須多於或等於 :value 個字元。',
+        'array' => ':attribute 必須有 :value 個或更多項目。',
     ],
-    'image' => 'The :attribute must be an image.',
-    'in' => 'The selected :attribute is invalid.',
-    'in_array' => 'The :attribute field does not exist in :other.',
-    'integer' => 'The :attribute must be an integer.',
-    'ip' => 'The :attribute must be a valid IP address.',
-    'ipv4' => 'The :attribute must be a valid IPv4 address.',
-    'ipv6' => 'The :attribute must be a valid IPv6 address.',
-    'mac_address' => 'The :attribute must be a valid MAC address.',
-    'json' => 'The :attribute must be a valid JSON string.',
+    'image' => ':attribute 必須是圖片。',
+    'in' => '所選的 :attribute 無效。',
+    'in_array' => ':attribute 欄位不存在於 :other 中。',
+    'integer' => ':attribute 必須是整數。',
+    'ip' => ':attribute 必須是有效的 IP 地址。',
+    'ipv4' => ':attribute 必須是有效的 IPv4 地址。',
+    'ipv6' => ':attribute 必須是有效的 IPv6 地址。',
+    'mac_address' => ':attribute 必須是有效的 MAC 地址。',
+    'json' => ':attribute 必須是有效的 JSON 字串。',
     'lt' => [
-        'numeric' => 'The :attribute must be less than :value.',
-        'file' => 'The :attribute must be less than :value kilobytes.',
-        'string' => 'The :attribute must be less than :value characters.',
-        'array' => 'The :attribute must have less than :value items.',
+        'numeric' => ':attribute 必須小於 :value。',
+        'file' => ':attribute 必須小於 :value 千位元組。',
+        'string' => ':attribute 必須少於 :value 個字元。',
+        'array' => ':attribute 必須少於 :value 個項目。',
     ],
     'lte' => [
-        'numeric' => 'The :attribute must be less than or equal to :value.',
-        'file' => 'The :attribute must be less than or equal to :value kilobytes.',
-        'string' => 'The :attribute must be less than or equal to :value characters.',
-        'array' => 'The :attribute must not have more than :value items.',
+        'numeric' => ':attribute 必須小於或等於 :value。',
+        'file' => ':attribute 必須小於或等於 :value 千位元組。',
+        'string' => ':attribute 必須少於或等於 :value 個字元。',
+        'array' => ':attribute 不能超過 :value 個項目。',
     ],
     'max' => [
-        'numeric' => 'The :attribute must not be greater than :max.',
-        'file' => 'The :attribute must not be greater than :max kilobytes.',
-        'string' => 'The :attribute must not be greater than :max characters.',
-        'array' => 'The :attribute must not have more than :max items.',
+        'numeric' => ':attribute 不能大於 :max。',
+        'file' => ':attribute 不能大於 :max 千位元組。',
+        'string' => ':attribute 不能超過 :max 個字元。',
+        'array' => ':attribute 不能超過 :max 個項目。',
     ],
-    'mimes' => 'The :attribute must be a file of type: :values.',
-    'mimetypes' => 'The :attribute must be a file of type: :values.',
+    'mimes' => ':attribute 必須是以下類型的檔案::values。',
+    'mimetypes' => ':attribute 必須是以下類型的檔案::values。',
     'min' => [
-        'numeric' => 'The :attribute must be at least :min.',
-        'file' => 'The :attribute must be at least :min kilobytes.',
-        'string' => 'The :attribute must be at least :min characters.',
-        'array' => 'The :attribute must have at least :min items.',
+        'numeric' => ':attribute 至少必須是 :min。',
+        'file' => ':attribute 至少必須是 :min 千位元組。',
+        'string' => ':attribute 至少必須是 :min 個字元。',
+        'array' => ':attribute 至少必須有 :min 個項目。',
     ],
-    'multiple_of' => 'The :attribute must be a multiple of :value.',
-    'not_in' => 'The selected :attribute is invalid.',
-    'not_regex' => 'The :attribute format is invalid.',
-    'numeric' => 'The :attribute must be a number.',
-    'password' => 'The password is incorrect.',
-    'present' => 'The :attribute field must be present.',
-    'prohibited' => 'The :attribute field is prohibited.',
-    'prohibited_if' => 'The :attribute field is prohibited when :other is :value.',
-    'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.',
-    'prohibits' => 'The :attribute field prohibits :other from being present.',
-    'regex' => 'The :attribute format is invalid.',
-    'required' => 'The :attribute field is required.',
-    'required_if' => 'The :attribute field is required when :other is :value.',
-    'required_unless' => 'The :attribute field is required unless :other is in :values.',
-    'required_with' => 'The :attribute field is required when :values is present.',
-    'required_with_all' => 'The :attribute field is required when :values are present.',
-    'required_without' => 'The :attribute field is required when :values is not present.',
-    'required_without_all' => 'The :attribute field is required when none of :values are present.',
-    'same' => 'The :attribute and :other must match.',
+    'multiple_of' => ':attribute 必須是 :value 的倍數。',
+    'not_in' => '所選的 :attribute 無效。',
+    'not_regex' => ':attribute 格式無效。',
+    'numeric' => ':attribute 必須是數字。',
+    'password' => '密碼不正確。',
+    'present' => ':attribute 欄位必須存在。',
+    'prohibited' => ':attribute 欄位是被禁止的。',
+    'prohibited_if' => '當 :other 為 :value 時,:attribute 欄位是被禁止的。',
+    'prohibited_unless' => '除非 :other 在 :values 中,否則 :attribute 欄位是被禁止的。',
+    'prohibits' => ':attribute 欄位禁止 :other 存在。',
+    'regex' => ':attribute 格式無效。',
+    'required' => ':attribute 欄位為必填。',
+    'required_if' => '當 :other 為 :value 時,:attribute 欄位為必填。',
+    'required_unless' => '除非 :other 在 :values 中,否則 :attribute 欄位為必填。',
+    'required_with' => '當 :values 存在時,:attribute 欄位為必填。',
+    'required_with_all' => '當 :values 都存在時,:attribute 欄位為必填。',
+    'required_without' => '當 :values 不存在時,:attribute 欄位為必填。',
+    'required_without_all' => '當 :values 都不存在時,:attribute 欄位為必填。',
+    'same' => ':attribute 和 :other 必須相符。',
     'size' => [
-        'numeric' => 'The :attribute must be :size.',
-        'file' => 'The :attribute must be :size kilobytes.',
-        'string' => 'The :attribute must be :size characters.',
-        'array' => 'The :attribute must contain :size items.',
+        'numeric' => ':attribute 必須是 :size。',
+        'file' => ':attribute 必須是 :size 千位元組。',
+        'string' => ':attribute 必須是 :size 個字元。',
+        'array' => ':attribute 必須包含 :size 個項目。',
     ],
-    'starts_with' => 'The :attribute must start with one of the following: :values.',
-    'string' => 'The :attribute must be a string.',
-    'timezone' => 'The :attribute must be a valid timezone.',
-    'unique' => 'The :attribute has already been taken.',
-    'uploaded' => 'The :attribute failed to upload.',
-    'url' => 'The :attribute must be a valid URL.',
-    'uuid' => 'The :attribute must be a valid UUID.',
+    'starts_with' => ':attribute 必須以下列其中之一開頭::values。',
+    'string' => ':attribute 必須是字串。',
+    'timezone' => ':attribute 必須是有效的時區。',
+    'unique' => ':attribute 已被使用。',
+    'uploaded' => ':attribute 上傳失敗。',
+    'url' => ':attribute 必須是有效的網址。',
+    'uuid' => ':attribute 必須是有效的 UUID。',
 
     /*
     |--------------------------------------------------------------------------

+ 9 - 9
api-v13/resources/views/library/anthology/index.blade.php

@@ -1,7 +1,7 @@
 {{-- resources/views/library/anthology/index.blade.php --}}
 @extends('layouts.library')
 
-@section('title', '文集 · 巴利书库')
+@section('title', __('library.anthology') . ' · ' . __('library.site_name'))
 
 @push('styles')
 @vite('resources/css/modules/anthology.css')
@@ -9,16 +9,16 @@
 
 @section('breadcrumb')
 <li class="breadcrumb-item">
-    <a href="{{ route('library.home') }}">首页</a>
+    <a href="{{ route('library.home') }}">{{ __('library.home') }}</a>
 </li>
-<li class="breadcrumb-item active">文集</li>
+<li class="breadcrumb-item active">{{ __('library.anthology') }}</li>
 @endsection
 
 @section('hero')
 <div class="anthology-page-header">
     <div class="container-xl">
-        <h1>文集 <span class="result-badge">{{ $total }}</span></h1>
-        <p>经论注疏 · 禅修指引 · 法义探讨</p>
+        <h1>{{ __('library.anthology') }} <span class="result-badge">{{ $total }}</span></h1>
+        <p>{{ __('library.anthology_subtitle') }}</p>
     </div>
 </div>
 @endsection
@@ -37,7 +37,7 @@
                     :href="route('library.anthology.show', $item['id'])" />
                 @empty
                 <div class="wiki-card">
-                    <x-ui.empty-state title="暂无文集" />
+                    <x-ui.empty-state :title="__('library.no_anthology')" />
                 </div>
                 @endforelse
 
@@ -55,14 +55,14 @@
                 <div class="sb-card" style="padding: .85rem 1.1rem; margin-bottom: 1.1rem;">
                     <x-ui.search-input
                         :action="route('library.search')"
-                        placeholder="搜索文集…"
+                        :placeholder="__('library.search_anthology')"
                         :hidden-fields="['resource_type' => 'anthology']" />
                 </div>
 
                 {{-- 作者列表 --}}
                 @if(!empty($authors))
                 <div class="sb-card">
-                    <div class="sb-head">作者</div>
+                    <div class="sb-head">{{ __('library.author') }}</div>
                     <ul class="author-ul">
                         @foreach($authors as $author)
                         <li>
@@ -72,7 +72,7 @@
                                     :color="$author['color']"
                                     :initials="$author['initials']"
                                     :name="$author['name']"
-                                    :sub="$author['count'] . ' 篇文集'"
+                                    :sub="$author['count'] . ' ' . __('library.anthology_count_suffix')"
                                     size="md" />
                             </a>
                         </li>

+ 24 - 24
api-v13/resources/views/library/anthology/show.blade.php

@@ -1,7 +1,7 @@
 {{-- resources/views/library/anthology/show.blade.php --}}
 @extends('layouts.library')
 
-@section('title', $anthology['title'] . ' · 巴利书库')
+@section('title', $anthology['title'] . ' · ' . __('library.site_name'))
 
 @push('styles')
 @vite('resources/css/modules/anthology.css')
@@ -9,10 +9,10 @@
 
 @section('breadcrumb')
 <li class="breadcrumb-item">
-    <a href="{{ route('library.home') }}">首页</a>
+    <a href="{{ route('library.home') }}">{{ __('library.home') }}</a>
 </li>
 <li class="breadcrumb-item">
-    <a href="{{ route('library.anthology.index') }}">文集</a>
+    <a href="{{ route('library.anthology.index') }}">{{ __('library.anthology') }}</a>
 </li>
 <li class="breadcrumb-item active">{{ $anthology['title'] }}</li>
 @endsection
@@ -56,25 +56,25 @@
                             :name="$anthology['author']['name']"
                             size="sm" />
                         <div>
-                            <span class="hi-label">作者</span>
+                            <span class="hi-label">{{ __('library.author') }}</span>
                             <span class="hi-value">{{ $anthology['author']['name'] }}</span>
                         </div>
                     </div>
                     <div class="hi-item">
                         <div>
-                            <span class="hi-label">最后更新</span>
+                            <span class="hi-label">{{ __('library.last_updated') }}</span>
                             <span class="hi-value">{{ $anthology['updated_at'] }}</span>
                         </div>
                     </div>
                     <div class="hi-item">
                         <div>
-                            <span class="hi-label">章节数</span>
-                            <span class="hi-value">{{ $anthology['children_number'] }} 章节</span>
+                            <span class="hi-label">{{ __('library.chapter_count') }}</span>
+                            <span class="hi-value">{{ $anthology['children_number'] }} {{ __('library.chapters') }}</span>
                         </div>
                     </div>
                     <div class="hi-item">
                         <div>
-                            <span class="hi-label">创建时间</span>
+                            <span class="hi-label">{{ __('library.created_at') }}</span>
                             <span class="hi-value">{{ $anthology['created_at'] }}</span>
                         </div>
                     </div>
@@ -92,13 +92,13 @@
                         ]) }}"
                         class="btn-read-primary">
                         <i class="ti ti-book-2"></i>
-                        在线阅读
+                        {{ __('library.read_online') }}
                     </a>
                     @endif
                     <a href="{{ config('mint.server.dashboard_base_path') }}/workspace/anthology/{{ $anthology['id'] }}"
                         class="btn-outline-hero">
                         <i class="ti ti-pencil"></i>
-                        在编辑器中打开
+                        {{ __('library.open_in_editor') }}
                     </a>
                 </div>
             </div>
@@ -121,7 +121,7 @@
                 <div class="sec-card">
                     <div class="sec-header">
                         <div class="sec-bar"></div>
-                        <div class="sec-title">关于本文集</div>
+                        <div class="sec-title">{{ __('library.about_anthology') }}</div>
                     </div>
                     <div class="sec-body">
                         @foreach(explode("\n", $anthology['about']) as $para)
@@ -137,8 +137,8 @@
                 <div class="sec-card">
                     <div class="sec-header">
                         <div class="sec-bar"></div>
-                        <div class="sec-title">目录</div>
-                        <div class="sec-count">{{ $anthology['children_number'] }} 章节</div>
+                        <div class="sec-title">{{ __('library.toc') }}</div>
+                        <div class="sec-count">{{ $anthology['children_number'] }} {{ __('library.chapters') }}</div>
                     </div>
                     <ul class="toc-ul">
                         @foreach($anthology['articles'] as $article)
@@ -163,34 +163,34 @@
 
                 {{-- 文集信息 --}}
                 <div class="sb-card">
-                    <div class="sb-head">文集信息</div>
+                    <div class="sb-head">{{ __('library.anthology_info') }}</div>
                     <div class="smeta-row">
-                        <span class="smeta-label">作者</span>
+                        <span class="smeta-label">{{ __('library.author') }}</span>
                         <span class="smeta-value">
                             <a href="#">{{ $anthology['author']['name'] }}</a>
                         </span>
                     </div>
                     @if(!empty($anthology['language']))
                     <div class="smeta-row">
-                        <span class="smeta-label">语言</span>
+                        <span class="smeta-label">{{ __('library.language') }}</span>
                         <span class="smeta-value">{{ $anthology['language'] }}</span>
                     </div>
                     @endif
                     <div class="smeta-row">
-                        <span class="smeta-label">章节</span>
-                        <span class="smeta-value">{{ $anthology['children_number'] }} 章节</span>
+                        <span class="smeta-label">{{ __('library.chapters') }}</span>
+                        <span class="smeta-value">{{ $anthology['children_number'] }} {{ __('library.chapters') }}</span>
                     </div>
                     <div class="smeta-row">
-                        <span class="smeta-label">创建</span>
+                        <span class="smeta-label">{{ __('library.created') }}</span>
                         <span class="smeta-value">{{ $anthology['created_at'] }}</span>
                     </div>
                     <div class="smeta-row">
-                        <span class="smeta-label">更新</span>
+                        <span class="smeta-label">{{ __('library.updated') }}</span>
                         <span class="smeta-value">{{ $anthology['updated_at'] }}</span>
                     </div>
                     @if(!empty($anthology['category']))
                     <div class="smeta-row">
-                        <span class="smeta-label">分类</span>
+                        <span class="smeta-label">{{ __('library.category') }}</span>
                         <span class="smeta-value">{{ $anthology['category'] }}</span>
                     </div>
                     @endif
@@ -198,7 +198,7 @@
 
                 {{-- 作者 --}}
                 <div class="sb-card">
-                    <div class="sb-head">作者</div>
+                    <div class="sb-head">{{ __('library.author') }}</div>
                     <div class="author-block">
                         <x-ui.author-avatar
                             :avatar="$anthology['author']['avatar'] ?? null"
@@ -209,7 +209,7 @@
                             <div class="author-block-name">{{ $anthology['author']['name'] }}</div>
                             <div class="author-block-stats">
                                 @if($anthology['author']['article_count'])
-                                {{ $anthology['author']['article_count'] }} 篇文章
+                                {{ $anthology['author']['article_count'] }} {{ __('library.articles_suffix') }}
                                 @endif
                             </div>
                         </div>
@@ -222,7 +222,7 @@
                 {{-- 相关文集 --}}
                 @if($related->count())
                 <div class="sb-card">
-                    <div class="sb-head">相关文集</div>
+                    <div class="sb-head">{{ __('library.related_anthology') }}</div>
                     <ul class="related-ul">
                         @foreach($related as $rel)
                         <li>

+ 29 - 29
api-v13/resources/views/library/book/read.blade.php

@@ -47,7 +47,7 @@
             <div class="nav-item me-2">
                 <a href="{{ $editor_link }}" target="_blank" class="nav-link">
                     <i class="ti ti-pencil me-1 d-none d-md-inline"></i>
-                    <span class="d-none d-md-inline">编辑器</span>
+                    <span class="d-none d-md-inline">{{ __('library.editor') }}</span>
                     <i class="ti ti-pencil d-md-none"></i>
                 </a>
             </div>
@@ -60,7 +60,7 @@
                     data-bs-toggle="modal"
                     data-bs-target="#settingsModal">
                     <i class="ti ti-settings me-1 d-none d-md-inline"></i>
-                    <span class="d-none d-md-inline">设置</span>
+                    <span class="d-none d-md-inline">{{ __('library.settings') }}</span>
                     <i class="ti ti-settings d-md-none"></i>
                 </a>
             </div>
@@ -72,7 +72,7 @@
                     data-bs-toggle="offcanvas"
                     data-bs-target="#channelDrawer">
                     <i class="ti ti-stack-2 me-1 d-none d-md-inline"></i>
-                    <span class="d-none d-md-inline">版本</span>
+                    <span class="d-none d-md-inline">{{ __('library.versions') }}</span>
                     <i class="ti ti-stack-2 d-md-none"></i>
                 </a>
             </div>
@@ -94,7 +94,7 @@
                     </span>
                 </a>
                 <div class="dropdown-menu dropdown-menu-end">
-                    <a class="dropdown-item" href="{{ route('logout') }}">退出</a>
+                    <a class="dropdown-item" href="{{ route('logout') }}">{{ __('library.logout') }}</a>
                 </div>
             </div>
             @endauth
@@ -107,7 +107,7 @@
 @if(!empty($channels))
 <div class="offcanvas offcanvas-end" tabindex="-1" id="channelDrawer">
     <div class="offcanvas-header">
-        <h5 class="offcanvas-title">选择版本</h5>
+        <h5 class="offcanvas-title">{{ __('library.select_version') }}</h5>
         <button type="button" class="btn-close" data-bs-dismiss="offcanvas"></button>
     </div>
     <div class="offcanvas-body">
@@ -135,7 +135,7 @@
 {{-- TOC Offcanvas(mobile) --}}
 <div class="offcanvas offcanvas-start" tabindex="-1" id="tocDrawer">
     <div class="offcanvas-header">
-        <h5 class="offcanvas-title">目录</h5>
+        <h5 class="offcanvas-title">{{ __('library.toc') }}</h5>
         <button type="button" class="btn-close" data-bs-dismiss="offcanvas"></button>
     </div>
     <div class="offcanvas-body">
@@ -150,7 +150,7 @@
         {{-- TOC 侧边栏(tablet+) --}}
         <div class="toc-sidebar card">
             <div class="card-body">
-                <h5>目录</h5>
+                <h5>{{ __('library.toc') }}</h5>
                 @include('library.book.toc', ['toc' => $book['toc'] ?? []])
             </div>
         </div>
@@ -161,7 +161,7 @@
 
                 <h2>{{ $book['title'] }}</h2>
                 <p>
-                    <strong>作者:</strong>
+                    <strong>{{ __('library.author') }}:</strong>
                     {{ $book['author'] }}
                     @if(isset($book['publisher']))
                     @ <a href="{{ route('blog.index', ['user' => $book['publisher']->username]) }}">
@@ -175,7 +175,7 @@
                     @if(isset($book['content']))
                     {!! $book['content'] !!}
                     @else
-                    <div>没有内容</div>
+                    <div>{{ __('library.no_content') }}</div>
                     @endif
                 </article>
 
@@ -194,7 +194,7 @@
                                         </svg>
                                     </div>
                                     <div class="col">
-                                        <div class="page-item-subtitle">上一篇</div>
+                                        <div class="page-item-subtitle">{{ __('library.prev_article') }}</div>
                                         <div class="page-item-title">{{ $book['pagination']['prev']['title'] }}</div>
                                     </div>
                                 </div>
@@ -208,7 +208,7 @@
                             : route('library.tipitaka.read', ['id' => $book['pagination']['next']['id'], 'channel' => request('channel')]) }}">
                                 <div class="row align-items-center">
                                     <div class="col">
-                                        <div class="page-item-subtitle">下一篇</div>
+                                        <div class="page-item-subtitle">{{ __('library.next_article') }}</div>
                                         <div class="page-item-title">{{ $book['pagination']['next']['title'] }}</div>
                                     </div>
                                     <div class="col-auto">
@@ -234,7 +234,7 @@
             {{-- 下载 --}}
             @if(!empty($book['downloads']))
             <div class="reader-channel-card">
-                <div class="reader-channel-title">下载</div>
+                <div class="reader-channel-title">{{ __('library.download') }}</div>
                 <ul class="list-unstyled mb-0">
                     @foreach ($book['downloads'] as $download)
                     <li>
@@ -250,7 +250,7 @@
             {{-- 标签 --}}
             @if(!empty($book['tags']))
             <div class="reader-channel-card">
-                <div class="reader-channel-title">标签</div>
+                <div class="reader-channel-title">{{ __('library.tags') }}</div>
                 @foreach ($book['tags'] as $tag)
                 <span class="badge me-1">{{ $tag['name'] }}</span>
                 @endforeach
@@ -267,39 +267,39 @@
     <div class="modal-dialog">
         <form id="settingsForm" class="modal-content">
             <div class="modal-header">
-                <h5 class="modal-title">阅读设置</h5>
+                <h5 class="modal-title">{{ __('library.reading_settings') }}</h5>
                 <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
             </div>
             <div class="modal-body">
                 <div class="mb-4">
-                    <label class="form-label">显示原文</label>
+                    <label class="form-label">{{ __('library.show_original') }}</label>
                     <label class="form-check form-switch">
                         <input class="form-check-input" type="checkbox" id="showOrigin">
-                        <span class="form-check-label">开启/关闭原文显示</span>
+                        <span class="form-check-label">{{ __('library.toggle_original') }}</span>
                     </label>
                 </div>
                 <div class="mb-4">
-                    <label class="form-label">界面语言</label>
+                    <label class="form-label">{{ __('library.ui_language') }}</label>
                     <select class="form-select" id="uiLanguage">
-                        <option value="auto">自动</option>
-                        <option value="zh">简体中文</option>
-                        <option value="en">英文</option>
+                        <option value="auto">{{ __('library.auto') }}</option>
+                        <option value="zh">{{ __('library.lang_zh_hans') }}</option>
+                        <option value="en">{{ __('library.lang_en') }}</option>
                     </select>
                 </div>
                 <div class="mb-4">
-                    <label class="form-label">巴利语脚本</label>
+                    <label class="form-label">{{ __('library.pali_script') }}</label>
                     <select class="form-select" id="paliScript">
-                        <option value="auto">自动</option>
-                        <option value="roman">罗马</option>
-                        <option value="myanmar">缅文</option>
-                        <option value="thai">泰文</option>
+                        <option value="auto">{{ __('library.auto') }}</option>
+                        <option value="roman">{{ __('library.script_roman') }}</option>
+                        <option value="myanmar">{{ __('library.script_myanmar') }}</option>
+                        <option value="thai">{{ __('library.script_thai') }}</option>
                     </select>
                 </div>
                 @isset($commentaryChannels)
                 <div class="mb-4">
-                    <label class="form-label">注疏版本</label>
+                    <label class="form-label">{{ __('library.commentary_version') }}</label>
                     <select class="form-select" id="commentary">
-                        <option value="none">不显示</option>
+                        <option value="none">{{ __('library.none') }}</option>
                         @foreach($commentaryChannels as $channel)
                         <option value="{{ $channel['id'] }}">{{ $channel['name'] }}</option>
                         @endforeach
@@ -308,8 +308,8 @@
                 @endisset
             </div>
             <div class="modal-footer">
-                <button type="button" class="btn btn-link" data-bs-dismiss="modal">取消</button>
-                <button type="submit" class="btn btn-primary">确定</button>
+                <button type="button" class="btn btn-link" data-bs-dismiss="modal">{{ __('library.cancel') }}</button>
+                <button type="submit" class="btn btn-primary">{{ __('library.confirm') }}</button>
             </div>
         </form>
     </div>

+ 1 - 1
api-v13/resources/views/library/book/toc.blade.php

@@ -24,5 +24,5 @@
     @endforeach
 </ul>
 @else
-<div class="alert alert-warning">此书没有目录</div>
+<div class="alert alert-warning">{{ __('library.no_toc') }}</div>
 @endif

+ 15 - 15
api-v13/resources/views/library/download.blade.php

@@ -8,11 +8,11 @@
         <div class="page-header d-print-none">
             <div class="row align-items-center">
                 <div class="col">
-                    <h2 class="page-title">下载</h2>
-                    <div class="text-muted mt-1">APP 离线数据包</div>
+                    <h2 class="page-title">{{ __('library.download') }}</h2>
+                    <div class="text-muted mt-1">{{ __('library.offline_packets') }}</div>
                 </div>
                 <div class="col-auto ms-auto">
-                    <span class="badge bg-blue-lt fs-6">{{ count($packets) }} 个数据包</span>
+                    <span class="badge bg-blue-lt fs-6">{{ count($packets) }} {{ __('library.packet_count_suffix') }}</span>
                 </div>
             </div>
         </div>
@@ -26,7 +26,7 @@
                         <path d="M5 8v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-10" />
                         <path d="M10 12l2 2l2 -2" />
                     </svg>
-                    离线数据包
+                    {{ __('library.offline_packets') }}
                 </h3>
             </div>
 
@@ -50,8 +50,8 @@
                             <path d="M3 3l18 18" />
                         </svg>
                     </div>
-                    <p class="empty-title">暂无数据包</p>
-                    <p class="empty-subtitle text-muted">当前没有可用的离线数据包。</p>
+                    <p class="empty-title">{{ __('library.no_packets') }}</p>
+                    <p class="empty-subtitle text-muted">{{ __('library.no_packets_desc') }}</p>
                 </div>
             </div>
 
@@ -64,11 +64,11 @@
                 <table class="table table-vcenter card-table table-hover">
                     <thead>
                         <tr>
-                            <th>数据包名称</th>
-                            <th class="text-center" style="width:90px">文件大小</th>
-                            <th class="text-center" style="width:90px">最低版本</th>
-                            <th class="text-center" style="width:160px">创建时间</th>
-                            <th style="min-width:240px">下载链接</th>
+                            <th>{{ __('library.col_name') }}</th>
+                            <th class="text-center" style="width:90px">{{ __('library.col_size') }}</th>
+                            <th class="text-center" style="width:90px">{{ __('library.col_min_version') }}</th>
+                            <th class="text-center" style="width:160px">{{ __('library.created_at') }}</th>
+                            <th style="min-width:240px">{{ __('library.col_links') }}</th>
                         </tr>
                     </thead>
                     <tbody>
@@ -133,12 +133,12 @@
                                             <path d="M7 11l5 5l5 -5" />
                                             <path d="M12 4l0 12" />
                                         </svg>
-                                        {{ $urlItem['hostname'] ?? '下载' }}
+                                        {{ $urlItem['hostname'] ?? __('library.download') }}
                                     </a>
                                     @endforeach
                                 </div>
                                 @else
-                                <span class="text-muted">暂无链接</span>
+                                <span class="text-muted">{{ __('library.no_links') }}</span>
                                 @endif
                             </td>
                         </tr>
@@ -197,7 +197,7 @@
                             </span>
                             @if(!empty($packet['min_app_ver']))
                             <span class="badge bg-lime-lt text-lime">
-                                最低版本 v{{ $packet['min_app_ver'] }}
+                                {{ __('library.min_version_prefix') }}v{{ $packet['min_app_ver'] }}
                             </span>
                             @endif
                         </div>
@@ -215,7 +215,7 @@
                                     <path d="M7 11l5 5l5 -5" />
                                     <path d="M12 4l0 12" />
                                 </svg>
-                                {{ $urlItem['hostname'] ?? '下载' }}
+                                {{ $urlItem['hostname'] ?? __('library.download') }}
                             </a>
                             @endforeach
                         </div>

+ 12 - 12
api-v13/resources/views/library/index.blade.php

@@ -4,7 +4,7 @@
 --}}
 @extends('layouts.library')
 
-@section('title', 'WikiPāli · 巴利书库')
+@section('title', __('library.portal_title'))
 
 @push('styles')
 @vite('resources/css/modules/library-index.css')
@@ -16,12 +16,12 @@
     style="background-image: url('{{ URL::asset('assets/images/hero-2.jpg') }}')">
     <div class="hero-overlay"></div>
     <div class="hero-content">
-        <h1 class="hero-title">WikiPāli 巴利书库</h1>
-        <p class="hero-subtitle">探索巴利三藏 · 开启智慧之门</p>
+        <h1 class="hero-title">{{ __('library.portal_hero_title') }}</h1>
+        <p class="hero-subtitle">{{ __('library.portal_hero_subtitle') }}</p>
         <div class="search-box">
             <x-ui.search-input
                 :action="route('library.search')"
-                placeholder="搜索经典、词条、文集…"
+                :placeholder="__('library.search_placeholder_home')"
                 size="lg" />
         </div>
     </div>
@@ -37,11 +37,11 @@
             <div class="lib-section__header">
                 <h2 class="lib-section__title">
                     <i class="ti ti-books"></i>
-                    巴利三藏
+                    {{ __('library.section_tipitaka') }}
                 </h2>
                 <a href="{{ route('library.tipitaka.index') }}"
                     class="lib-section__more">
-                    进入三藏 <i class="ti ti-arrow-right"></i>
+                    {{ __('library.enter_tipitaka') }} <i class="ti ti-arrow-right"></i>
                 </a>
             </div>
 
@@ -55,7 +55,7 @@
                             </span>
                             <a href="{{ route('library.tipitaka.category', ['id' => $data['category']['id']]) }}"
                                 class="lib-cat-card__more">
-                                更多 <i class="ti ti-arrow-right"></i>
+                                {{ __('library.more') }} <i class="ti ti-arrow-right"></i>
                             </a>
                         </div>
                         <ul class="wiki-cat-list">
@@ -79,15 +79,15 @@
             <div class="lib-section__header">
                 <h2 class="lib-section__title">
                     <i class="ti ti-clock"></i>
-                    最新译文
+                    {{ __('library.section_recent') }}
                     <span class="lib-live-badge">
                         <span class="lib-live-dot"></span>
-                        持续更新中
+                        {{ __('library.updating_badge') }}
                     </span>
                 </h2>
                 <a href="{{ route('library.tipitaka.index') }}"
                     class="lib-section__more">
-                    查看全部 <i class="ti ti-arrow-right"></i>
+                    {{ __('library.view_all') }} <i class="ti ti-arrow-right"></i>
                 </a>
             </div>
 
@@ -117,9 +117,9 @@
                     {{-- 右侧:标签 + 时间 --}}
                     <div class="lib-recent__right">
                         @if($book['is_new'])
-                        <span class="lib-new-badge">新增</span>
+                        <span class="lib-new-badge">{{ __('library.badge_new') }}</span>
                         @else
-                        <span class="lib-update-badge">更新</span>
+                        <span class="lib-update-badge">{{ __('library.badge_updated') }}</span>
                         @endif
                         <span class="lib-recent__time">{{ $book['updated_at'] }}</span>
                     </div>

+ 1 - 1
api-v13/resources/views/library/layouts/app.blade.php

@@ -6,7 +6,7 @@
     <meta charset="utf-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
     <meta http-equiv="X-UA-Compatible" content="ie=edge" />
-    <title>@yield('title', '巴利书库')</title>
+    <title>@yield('title', __('library.site_name'))</title>
     @stack('styles')
 
     @vite(['resources/js/app.js'])

+ 13 - 13
api-v13/resources/views/library/search.blade.php

@@ -7,7 +7,7 @@
 @extends('library.wiki.layouts.app')
 
 
-@section('title', $query ? '"' . $query . '" 的搜索结果 · WikiPāli' : '搜索 · WikiPāli')
+@section('title', $query ? '"' . $query . '" ' . __('library.search_results_title') . ' · WikiPāli' : __('library.search_title') . ' · WikiPāli')
 
 @section('wiki-content')
 
@@ -16,7 +16,7 @@
     <x-ui.search-input
         :action="route('library.search')"
         :value="$query"
-        placeholder="搜索条目、巴利文、梵文…"
+        :placeholder="__('library.search_placeholder')"
         :autofocus="true"
         :hidden-fields="array_filter(['category' => $category !== 'all' ? $category : null])" />
 </div>
@@ -24,14 +24,14 @@
 {{-- 结果摘要 --}}
 <div class="wiki-search-summary">
     @if ($query)
-    搜索 <strong>「{{ $query }}」</strong>
+    {{ __('library.searching') }} <strong>「{{ $query }}」</strong>
     @if ($pagination['total'] > 0)
-    ,共找到 <strong>{{ $pagination['total'] }}</strong> 条结果
+    {{ __('library.results_found_prefix') }} <strong>{{ $pagination['total'] }}</strong> {{ __('library.results_found_suffix') }}
     @if ($pagination['last_page'] > 1)
-    (第 {{ $pagination['current_page'] }} / {{ $pagination['last_page'] }} 页)
+    {{ __('library.page_prefix') }} {{ $pagination['current_page'] }} / {{ $pagination['last_page'] }} {{ __('library.page_suffix') }}
     @endif
     @else
-    ,未找到相关条目
+    {{ __('library.no_results') }}
     @endif
     @endif
 </div>
@@ -61,8 +61,8 @@
 
 <div class="wiki-card">
     <x-ui.empty-state
-        title="未找到相关条目"
-        desc="请尝试其他关键词" />
+        :title="__('library.no_results')"
+        :desc="__('library.try_other_keywords')" />
 </div>
 
 @endif
@@ -75,12 +75,12 @@
 @isset($filters)
 @foreach ($filters as $key=>$filter)
 <div class="wiki-sidebar-section">
-    <div class="wiki-sidebar-title">按{{ $key }}筛选</div>
+    <div class="wiki-sidebar-title">{{ __('library.filter_by') }}{{ $key }}{{ __('library.filter') }}</div>
     <ul class="wiki-cat-list">
         <li>
             <a href="{{ route('library.search', ['q' => $query]) }}"
                 class="{{ $category === 'all' ? 'active' : '' }}">
-                全部
+                {{ __('library.all') }}
             </a>
         </li>
 
@@ -101,7 +101,7 @@
 {{-- 近似词条(无结果时显示) --}}
 @if (count($results) === 0 && $query)
 <div class="wiki-sidebar-section">
-    <div class="wiki-sidebar-title">你可能在找</div>
+    <div class="wiki-sidebar-title">{{ __('library.did_you_mean') }}</div>
     <ul class="wiki-related-list">
         <li>
             <a href="{{ route('library.search', ['q' => substr($query, 0, -1), 'lang' => $lang]) }}">
@@ -120,12 +120,12 @@
 
 
 <div class="wiki-sidebar-section">
-    <div class="wiki-sidebar-title">分类浏览</div>
+    <div class="wiki-sidebar-title">{{ __('library.browse_categories') }}</div>
     <ul class="wiki-cat-list">
         <li>
             <a href="{{ route('library.search', ['q' => $query]) }}"
                 class="{{ $category === 'all' ? 'active' : '' }}">
-                全部
+                {{ __('library.all') }}
             </a>
         </li>
         @foreach ($types as $type)

+ 16 - 16
api-v13/resources/views/library/tipitaka/category.blade.php

@@ -4,7 +4,7 @@
 --}}
 @extends('layouts.library')
 
-@section('title', $currentCategory['name'] . ' · 巴利书库')
+@section('title', $currentCategory['name'] . ' · ' . __('library.site_name'))
 
 @push('styles')
 @vite('resources/css/modules/tipitaka.css')
@@ -12,11 +12,11 @@
 
 @section('breadcrumb')
 <li class="breadcrumb-item">
-    <a href="{{ route('library.home') }}">首页</a>
+    <a href="{{ route('library.home') }}">{{ __('library.home') }}</a>
 </li>
 @if($currentCategory['id'])
 <li class="breadcrumb-item">
-    <a href="{{ route('library.tipitaka.index') }}">三藏</a>
+    <a href="{{ route('library.tipitaka.index') }}">{{ __('library.tipitaka') }}</a>
 </li>
 @foreach($breadcrumbs as $breadcrumb)
 @if($loop->last)
@@ -30,7 +30,7 @@
 @endif
 @endforeach
 @else
-<li class="breadcrumb-item active">三藏</li>
+<li class="breadcrumb-item active">{{ __('library.tipitaka') }}</li>
 @endif
 @endsection
 
@@ -45,12 +45,12 @@
 
             {{-- 大分类 --}}
             <div class="wiki-sidebar-section">
-                <div class="wiki-sidebar-title">分类</div>
+                <div class="wiki-sidebar-title">{{ __('library.categories') }}</div>
                 <ul class="wiki-cat-list">
                     <li>
                         <a href="{{ route('library.tipitaka.index') }}"
                             class="{{ !$currentCategory['id'] ? 'active' : '' }}">
-                            全部
+                            {{ __('library.all') }}
                         </a>
                     </li>
                     @foreach($types as $type)
@@ -74,7 +74,7 @@
                 <x-ui.search-input
                     :action="route('library.search')"
                     :value="request('q')"
-                    placeholder="搜索三藏原文译文"
+                    :placeholder="__('library.search_tipitaka')"
                     :hidden-fields="['resource_type' => 'tipitaka']" />
             </div>
 
@@ -85,7 +85,7 @@
 
                 {{-- 类型 --}}
                 <div class="tipitaka-filter-row">
-                    <span class="tipitaka-filter-label">类型</span>
+                    <span class="tipitaka-filter-label">{{ __('library.type') }}</span>
                     <div class="tipitaka-filter-pills">
                         @foreach($filterOptions['types'] as $opt)
                         <a href="{{ request()->fullUrlWithQuery(['type' => $opt['value'], 'page' => null]) }}"
@@ -101,7 +101,7 @@
 
                 {{-- 语言 --}}
                 <div class="tipitaka-filter-row">
-                    <span class="tipitaka-filter-label">语言</span>
+                    <span class="tipitaka-filter-label">{{ __('library.language') }}</span>
                     <div class="tipitaka-filter-pills">
                         @foreach($filterOptions['languages'] as $opt)
                         <a href="{{ request()->fullUrlWithQuery(['lang' => $opt['value'], 'page' => null]) }}"
@@ -117,7 +117,7 @@
 
                 {{-- 作者 --}}
                 <div class="tipitaka-filter-row">
-                    <span class="tipitaka-filter-label">作者</span>
+                    <span class="tipitaka-filter-label">{{ __('library.author') }}</span>
                     <select class="form-select form-select-sm tipitaka-author-select"
                         onchange="window.location=this.value">
                         @foreach($filterOptions['authors'] as $opt)
@@ -139,7 +139,7 @@
                 <div class="tipitaka-filter-clear">
                     <a href="{{ request()->fullUrlWithQuery(['type' => null, 'lang' => null, 'author' => null, 'page' => null]) }}"
                         class="tipitaka-clear-btn">
-                        <i class="ti ti-x"></i> 清除过滤器
+                        <i class="ti ti-x"></i> {{ __('library.clear_filters') }}
                     </a>
                 </div>
                 @endif
@@ -164,10 +164,10 @@
             {{-- 3. 排序 + 结果数 --}}
             <div class="tipitaka-sort-bar">
                 <span class="tipitaka-sort-bar__count">
-                    共 <strong>{{ $totalCount }}</strong> 本
+                    {{ __('library.total_prefix') }} <strong>{{ $totalCount }}</strong> {{ __('library.book_unit') }}
                 </span>
                 <div class="tipitaka-sort-bar__right">
-                    <span class="tipitaka-sort-bar__label">排序</span>
+                    <span class="tipitaka-sort-bar__label">{{ __('library.sort') }}</span>
                     <select class="form-select form-select-sm tipitaka-sort-select"
                         onchange="window.location=this.value">
                         @foreach($sortList as $sort)
@@ -191,7 +191,7 @@
             {{-- 本周推荐 --}}
             @if(!empty($recommended))
             <div class="wiki-sidebar-section">
-                <div class="wiki-sidebar-title">本周推荐</div>
+                <div class="wiki-sidebar-title">{{ __('library.weekly_picks') }}</div>
                 <ul class="wiki-cat-list">
                     @foreach($recommended as $item)
                     <li>
@@ -208,7 +208,7 @@
             {{-- 活跃译者 --}}
             @if(!empty($activeAuthors))
             <div class="wiki-sidebar-section">
-                <div class="wiki-sidebar-title">活跃译者</div>
+                <div class="wiki-sidebar-title">{{ __('library.active_authors') }}</div>
                 <ul class="tipitaka-author-list">
                     @foreach($activeAuthors as $author)
                     <li>
@@ -221,7 +221,7 @@
                                 size="sm" />
                             <div class="tipitaka-author-item__info">
                                 <span class="tipitaka-author-item__name">{{ $author['name'] }}</span>
-                                <span class="tipitaka-author-item__count">{{ $author['count'] }} </span>
+                                <span class="tipitaka-author-item__count">{{ $author['count'] }} {{ __('library.book_unit') }}</span>
                             </div>
                         </a>
                     </li>

+ 6 - 6
api-v13/resources/views/library/tipitaka/index.blade.php

@@ -3,19 +3,19 @@
 --}}
 @extends('layouts.library')
 
-@section('title', '巴利书库')
+@section('title', __('library.site_name'))
 
 @section('hero')
 <section class="hero-section"
          style="background-image: url('{{ URL::asset('assets/images/hero-2.jpg') }}')">
     <div class="hero-overlay"></div>
     <div class="hero-content">
-        <h1 class="hero-title">巴利书库</h1>
-        <p class="hero-subtitle">探索 WikiPāli,开启智慧之门</p>
+        <h1 class="hero-title">{{ __('library.site_name') }}</h1>
+        <p class="hero-subtitle">{{ __('library.portal_hero_subtitle') }}</p>
         <div class="search-box">
             <x-ui.search-input
                 :action="route('library.search')"
-                placeholder="搜索图书、作者或主题…"
+                :placeholder="__('library.search_tipitaka')"
                 size="lg"
             />
         </div>
@@ -37,7 +37,7 @@
                         {{ $data['category']['name'] }}
                         <a href="{{ route('library.tipitaka.category', ['id' => $data['category']['id']]) }}"
                            class="btn btn-sm btn-primary ms-auto" style="float:right; font-size: 0.75rem;">
-                            更多 <i class="ti ti-arrow-right"></i>
+                            {{ __('library.more') }} <i class="ti ti-arrow-right"></i>
                         </a>
                     </div>
                     <ul class="wiki-cat-list">
@@ -57,7 +57,7 @@
         {{-- 最近更新 --}}
         @isset($update)
         <div class="wiki-card mt-4">
-            <div class="wiki-sidebar-title" style="margin-bottom: 1rem;">最近更新</div>
+            <div class="wiki-sidebar-title" style="margin-bottom: 1rem;">{{ __('library.recent_updates') }}</div>
             <x-ui.book-grid :books="$update" />
         </div>
         @endisset

+ 16 - 16
api-v13/resources/views/library/tipitaka/show.blade.php

@@ -1,7 +1,7 @@
 {{-- resources/views/library/tipitaka/show.blade.php --}}
 @extends('layouts.library')
 
-@section('title', $book['title'] . ' · 巴利书库')
+@section('title', $book['title'] . ' · ' . __('library.site_name'))
 
 @push('styles')
 @vite('resources/css/modules/tipitaka.css')
@@ -9,10 +9,10 @@
 
 @section('breadcrumb')
 <li class="breadcrumb-item">
-    <a href="{{ route('library.home') }}">首页</a>
+    <a href="{{ route('library.home') }}">{{ __('library.home') }}</a>
 </li>
 <li class="breadcrumb-item">
-    <a href="{{ route('library.tipitaka.index') }}">三藏</a>
+    <a href="{{ route('library.tipitaka.index') }}">{{ __('library.tipitaka') }}</a>
 </li>
 <li class="breadcrumb-item active">{{ $book['title'] }}</li>
 @endsection
@@ -39,11 +39,11 @@
                     <a href="{{ route('library.tipitaka.read', $book['id']) }}"
                         class="btn btn-primary w-100 mb-2">
                         <i class="ti ti-book-2 me-1"></i>
-                        在线阅读
+                        {{ __('library.read_online') }}
                     </a>
                     <button class="btn btn-outline-secondary w-100">
                         <i class="ti ti-download me-1"></i>
-                        下载
+                        {{ __('library.download') }}
                     </button>
                 </div>
 
@@ -61,12 +61,12 @@
 
                 <table class="wiki-meta-table" style="margin-bottom: 1.25rem;">
                     <tr>
-                        <td>作者</td>
+                        <td>{{ __('library.author') }}</td>
                         <td>{{ $book['author'] }}</td>
                     </tr>
                     @if(isset($book['publisher']))
                     <tr>
-                        <td>出版</td>
+                        <td>{{ __('library.publisher') }}</td>
                         <td>
                             <a href="{{ route('blog.index', ['user' => $book['publisher']->username]) }}"
                                 style="color: var(--tblr-primary); text-decoration: none;">
@@ -76,8 +76,8 @@
                     </tr>
                     @endif
                     <tr>
-                        <td>语言</td>
-                        <td>{{ $book['language'] ?? '巴利语' }}</td>
+                        <td>{{ __('library.language') }}</td>
+                        <td>{{ $book['language'] ?? __('library.pali') }}</td>
                     </tr>
                 </table>
 
@@ -91,7 +91,7 @@
             {{-- 目录 --}}
             @if(isset($book['contents']) && count($book['contents']) > 0)
             <div class="wiki-card">
-                <div class="wiki-sidebar-title" style="margin-bottom: 1rem;">目录</div>
+                <div class="wiki-sidebar-title" style="margin-bottom: 1rem;">{{ __('library.toc') }}</div>
                 <ul class="wiki-toc-list">
                     @foreach($book['contents'] as $chapter)
                     <li>
@@ -140,15 +140,15 @@
 
             {{-- 书籍元信息 --}}
             <div class="wiki-sidebar-section">
-                <div class="wiki-sidebar-title">书籍信息</div>
+                <div class="wiki-sidebar-title">{{ __('library.book_info') }}</div>
                 <table class="wiki-meta-table">
                     <tr>
-                        <td>语言</td>
-                        <td>{{ $book['language'] ?? '巴利语' }}</td>
+                        <td>{{ __('library.language') }}</td>
+                        <td>{{ $book['language'] ?? __('library.pali') }}</td>
                     </tr>
                     @if(!empty($book['type']))
                     <tr>
-                        <td>类型</td>
+                        <td>{{ __('library.type') }}</td>
                         <td>{{ $book['type'] }}</td>
                     </tr>
                     @endif
@@ -158,13 +158,13 @@
             {{-- 其他版本 --}}
             @if(!empty($otherVersions) && count($otherVersions) > 0)
             <div class="wiki-sidebar-section">
-                <div class="wiki-sidebar-title">其他版本</div>
+                <div class="wiki-sidebar-title">{{ __('library.other_versions') }}</div>
                 <ul class="wiki-related-list">
                     @foreach($otherVersions as $version)
                     <li>
                         <a href="{{ route('library.tipitaka.show', $version['id']) }}">
                             {{ $version['title'] }}
-                            <span class="wiki-related-zh">{{ $version['language'] ?? '巴利语' }}</span>
+                            <span class="wiki-related-zh">{{ $version['language'] ?? __('library.pali') }}</span>
                         </a>
                     </li>
                     @endforeach

+ 9 - 9
api-v13/resources/views/library/wiki/home.blade.php

@@ -5,7 +5,7 @@
 --}}
 @extends('library.wiki.layouts.app')
 
-@section('title', 'WikiPāli · 佛教百科-重构')
+@section('title', 'WikiPāli · ' . __('library.wiki_encyclopedia'))
 
 @section('wiki-content')
 <div class="wiki-home-container">
@@ -19,8 +19,8 @@
 
     {{-- 欢迎标题 --}}
     <div class="wiki-home-title">
-        <h1>佛教百科</h1>
-        <p class="text-muted">探索佛法智慧 · 开启觉悟之门</p>
+        <h1>{{ __('library.wiki_encyclopedia') }}</h1>
+        <p class="text-muted">{{ __('library.wiki_subtitle') }}</p>
     </div>
 
     {{-- 搜索框 --}}
@@ -28,7 +28,7 @@
         <x-ui.search-input
             :action="route('library.search')"
             :value="request('q')"
-            placeholder="搜索佛法词条、经典、人物..."
+            :placeholder="__('library.wiki_search_placeholder')"
             size="lg"
             :hidden-fields="['resource_type' => 'term']" />
     </div>
@@ -36,7 +36,7 @@
     {{-- 热门搜索标签 --}}
     @isset($hotTags)
     <div class="wiki-home-hot-tags">
-        <span class="text-muted me-2">热门:</span>
+        <span class="text-muted me-2">{{ __('library.hot') }}</span>
         @foreach($hotTags as $tag)
         <a href="{{ route('library.search', ['q' => $tag, 'type' => 'wiki']) }}"
             class="wiki-hot-tag">
@@ -49,7 +49,7 @@
     {{-- 语言选择器 --}}
     <div class="wiki-home-languages">
         <div class="wiki-home-divider">
-            <span>以您的语言阅读佛教百科</span>
+            <span>{{ __('library.wiki_language_divider') }}</span>
         </div>
         <div class="wiki-language-tags">
             @foreach($languages as $lang)
@@ -65,12 +65,12 @@
     @isset($stats)
     <div class="wiki-home-stats">
         <span class="text-muted">
-            📚 {{ number_format($stats['total_articles'] ?? 0) }} 词条
+            📚 {{ number_format($stats['total_articles'] ?? 0) }} {{ __('library.articles') }}
             @if(isset($stats['today_updates']))
-            · 🆕 今日更新 {{ $stats['today_updates'] }}
+            · 🆕 {{ __('library.today_updates') }} {{ $stats['today_updates'] }}
             @endif
             @if(isset($stats['contributors']))
-            · 👥 {{ number_format($stats['contributors']) }} 位贡献者
+            · 👥 {{ number_format($stats['contributors']) }} {{ __('library.contributors_suffix') }}
             @endif
         </span>
     </div>

+ 11 - 11
api-v13/resources/views/library/wiki/index.blade.php

@@ -1,7 +1,7 @@
 {{-- resources/views/wiki/index.blade.php --}}
 @extends('library.wiki.layouts.app')
 
-@section('title', 'WikiPāli · 巴利佛典百科')
+@section('title', 'WikiPāli · ' . __('library.wiki_encyclopedia'))
 
 @section('wiki-content')
 {{-- 搜索框组件 --}}
@@ -9,7 +9,7 @@
     <x-ui.search-input
         :action="route('library.search')"
         :value="request('q')"
-        placeholder="搜索佛法词条、经典、人物..."
+        :placeholder="__('library.wiki_search_placeholder')"
         size="lg"
         :hidden-fields="['resource_type' => 'term']" />
 </div>
@@ -18,14 +18,14 @@
 <div class="wiki-today-banner">
     <div class="wiki-today-icon">☸</div>
     <div class="wiki-today-body">
-        <div class="wiki-today-label">今日条目</div>
+        <div class="wiki-today-label">{{ __('library.today_entry') }}</div>
         <div class="wiki-today-title">{{ $today['meaning'] }}({{ $today['word'] }})</div>
         <div class="wiki-today-snippet">
             {!! Str::limit(strip_tags($today['content']), 120) !!}
         </div>
         <a class="wiki-today-link"
             href="{{ route('library.wiki.show', [$today['lang'], $today['word']]) }}">
-            阅读完整条目 →
+            {{ __('library.read_full_entry') }}
         </a>
     </div>
 </div>
@@ -34,7 +34,7 @@
 {{-- 精选条目 --}}
 @if(isset($featured) && is_array($featured) && count($featured)>0)
 <div class="wiki-card">
-    <div class="wiki-sidebar-title" style="margin-bottom: 14px;">精选条目</div>
+    <div class="wiki-sidebar-title" style="margin-bottom: 14px;">{{ __('library.featured_entries') }}</div>
     <div class="wiki-featured-grid">
         @foreach ($featured as $item)
         <a class="wiki-featured-card"
@@ -62,7 +62,7 @@ $catLabel = collect(config('taxonomy'))->firstWhere('id', $category)['label'] ??
         <span class="wiki-subcat-block-title">{{ $catLabel }}</span>
         <a class="wiki-subcat-block-more"
             href="{{ route('library.wiki.index', ['lang' => $lang]) }}?category={{ $category }}">
-            浏览全部
+            {{ __('library.view_all') }}
         </a>
     </div>
 
@@ -80,18 +80,18 @@ $catLabel = collect(config('taxonomy'))->firstWhere('id', $category)['label'] ??
 @section('wiki-sidebar')
 
 <div class="wiki-sidebar-section">
-    <div class="wiki-sidebar-title">统计</div>
+    <div class="wiki-sidebar-title">{{ __('library.statistics') }}</div>
     <table class="wiki-meta-table">
         <tr>
-            <td>条目总数</td>
+            <td>{{ __('library.total_entries') }}</td>
             <td>{{ number_format($stats['total']) }}</td>
         </tr>
         <tr>
-            <td>本月新增</td>
+            <td>{{ __('library.this_month') }}</td>
             <td>{{ $stats['this_month'] }}</td>
         </tr>
         <tr>
-            <td>贡献者</td>
+            <td>{{ __('library.contributors') }}</td>
             <td>{{ $stats['contributors'] }}</td>
         </tr>
     </table>
@@ -101,7 +101,7 @@ $catLabel = collect(config('taxonomy'))->firstWhere('id', $category)['label'] ??
 
 
 <div class="wiki-sidebar-section">
-    <div class="wiki-sidebar-title">质量等级</div>
+    <div class="wiki-sidebar-title">{{ __('library.quality_level') }}</div>
     <ul class="wiki-cat-list" id="qualityFilterList">
         @foreach ($qualities as $q)
         <li>

+ 3 - 3
api-v13/resources/views/library/wiki/layouts/app.blade.php

@@ -24,12 +24,12 @@
 
         @isset($categories)
         <div class="wiki-sidebar-section">
-            <div class="wiki-sidebar-title">分类浏览</div>
+            <div class="wiki-sidebar-title">{{ __('library.browse_categories') }}</div>
             <ul class="wiki-cat-list">
                 <li>
                     <a href="{{ route('library.wiki.index', ['lang' => $lang]) }}"
                         class="{{ (request('category', 'all') === 'all') ? 'active' : '' }}">
-                        全部
+                        {{ __('library.all') }}
                     </a>
                 </li>
                 @foreach ($categories as $cat)
@@ -49,7 +49,7 @@
 
         @isset($recentUpdates)
         <div class="wiki-sidebar-section">
-            <div class="wiki-sidebar-title">最近更新</div>
+            <div class="wiki-sidebar-title">{{ __('library.recent_updates') }}</div>
             <ul class="wiki-cat-list">
                 @foreach ($recentUpdates as $item)
                 <li>

+ 6 - 6
api-v13/resources/views/library/wiki/show.blade.php

@@ -9,7 +9,7 @@
     <x-ui.search-input
         :action="route('library.search')"
         :value="request('q')"
-        placeholder="搜索佛法词条、经典、人物..."
+        :placeholder="__('library.wiki_search_placeholder')"
         size="lg"
         :hidden-fields="['resource_type' => 'term']" />
 </div>
@@ -42,7 +42,7 @@
     {{-- 其他版本 --}}
     @if(isset($entry['other_versions']) && count($entry['other_versions']) > 0)
     <div class="wiki-other-versions">
-        <div class="wiki-sidebar-title" style="margin-bottom: 0.75rem;">其他版本</div>
+        <div class="wiki-sidebar-title" style="margin-bottom: 0.75rem;">{{ __('library.other_versions') }}</div>
         @foreach ($entry['other_versions'] as $version)
         <x-wiki.search-result-card :result="$version" :lang="$lang" />
         @endforeach
@@ -57,7 +57,7 @@
 
 {{-- 目录 --}}
 <div class="wiki-sidebar-section">
-    <div class="wiki-sidebar-title">目录</div>
+    <div class="wiki-sidebar-title">{{ __('library.toc') }}</div>
     <ul class="wiki-toc-list">
         @foreach ($entry['toc'] as $i => $item)
         <li class="toc-level-{{ $item['level'] }}">
@@ -74,14 +74,14 @@
 
 {{-- 条目元信息 --}}
 <div class="wiki-sidebar-section">
-    <div class="wiki-sidebar-title">条目信息</div>
+    <div class="wiki-sidebar-title">{{ __('library.entry_info') }}</div>
     <table class="wiki-meta-table">
         <tr>
-            <td>分类</td>
+            <td>{{ __('library.category') }}</td>
             <td>{{ $entry['category'] }}</td>
         </tr>
         <tr>
-            <td>质量</td>
+            <td>{{ __('library.quality') }}</td>
             <td><x-wiki.quality-badge :quality="$entry['quality']" /></td>
         </tr>
     </table>