§
    —T»jÈ	  ã                   óf   — d Z ddlZddlmZ ddlmZmZmZmZ  ed¦  «        Z	 G d„ d¦  «        Z
dS )zÎ
Multilingual Wiki & Knowledge Base Service for FreeExile.
Provides localized terminology lookup and search queries across 9 global languages
for in-game encyclopedia screens, tooltips, and community APIs.
é    N)ÚPath)ÚDictÚListÚOptionalÚAnyz"C:\Projects\FreeExile\data\localesc            
       ó„   — e Zd Zefdefd„Zd„ Zddededefd„Zdd	edede	e
eef                  fd
„Zde	e         fd„ZdS )ÚLocalizedWikiServiceÚlocales_dirc                 óJ   — || _         i | _        |                      ¦   «          d S ©N)r
   ÚdictionariesÚload_all_locales)Úselfr
   s     ú3C:\Projects\FreeExile\server\common\wiki_service.pyÚ__init__zLocalizedWikiService.__init__   s*   € Ø&ˆÔØ79ˆÔØ×ÒÑÔÐÐÐó    c                 ó†  — | j                              ¦   «         sdS | j                              d¦  «        D ]Š}	 t          |dd¬¦  «        5 }t	          j        |¦  «        }|                     d¦  «        }|                     di ¦  «        }|r|r
|| j        |<   ddd¦  «         n# 1 swxY w Y   Œ{# t          $ r Y Œ‡w xY wdS )z/Loads all .json files in the locales directory.Nz*.jsonÚrzutf-8)ÚencodingÚlocaleÚtranslations)	r
   ÚexistsÚglobÚopenÚjsonÚloadÚgetr   Ú	Exception)r   Ú	json_pathÚfÚdatar   r   s         r   r   z%LocalizedWikiService.load_all_locales   s6  € àÔ×&Ò&Ñ(Ô(ð 	ØˆFàÔ)×.Ò.¨xÑ8Ô8ð 		ð 		ˆIðÝ˜) S°7Ð;Ñ;Ô;ð A¸qÝœ9 Q™<œ<�DØ!ŸXšX hÑ/Ô/�FØ#'§8¢8¨N¸BÑ#?Ô#?�LØð A ,ð AØ4@˜Ô)¨&Ñ1ðAð Að Añ Aô Að Að Að Að Að Að Aøøøð Að Að Að Aøøõ ð ð ð Ø�ðøøøð		ð 		s6   ¹B1ÁAB%ÂB1Â%B)	Â)B1Â,B)	Â-B1Â1
B>Â=B>ÚenÚkeyr   Úreturnc                 ó  — || j         v r"|| j         |         v r| j         |         |         S d| j         v r"|| j         d         v r| j         d         |         S d| j         v r"|| j         d         v r| j         d         |         S |S )zKRetrieves localized string with fallback chain (locale -> en -> vi -> key).r"   Úvi)r   )r   r#   r   s      r   Úget_termzLocalizedWikiService.get_term%   s¦   € ð �TÔ&Ð&Ð&¨3°$Ô2CÀFÔ2KÐ+KÐ+KØÔ$ VÔ,¨SÔ1Ð1ð �4Ô$Ð$Ð$¨°Ô0AÀ$Ô0GÐ)GÐ)GØÔ$ TÔ*¨3Ô/Ð/ð �4Ô$Ð$Ð$¨°Ô0AÀ$Ô0GÐ)GÐ)GØÔ$ TÔ*¨3Ô/Ð/àˆ
r   Úqueryc                 óX  — | j                              || j                              di ¦  «        ¦  «        }g }|                     ¦   «         }|                     ¦   «         D ]J\  }}||                     ¦   «         v s||                     ¦   «         v r|                     |||dœ¦  «         ŒK|S )z:Searches terms matching the query in the specified locale.r"   )r#   Útranslationr   )r   r   ÚlowerÚitemsÚappend)r   r(   r   Ú	dict_dataÚresultsÚq_lowerr#   Úvals           r   Úsearch_termsz!LocalizedWikiService.search_terms5   s²   € àÔ%×)Ò)¨&°$Ô2C×2GÒ2GÈÈbÑ2QÔ2QÑRÔRˆ	ØˆØ—+’+‘-”-ˆà!ŸšÑ)Ô)ð 	ð 	‰HˆC�Ø˜#Ÿ)š)™+œ+Ð%Ð%¨°C·I²I±K´KÐ)?Ð)?Ø—’ØØ#&Ø$ð ð  ñ ô ð øð ˆr   c                 óN   — t          | j                             ¦   «         ¦  «        S r   )Úlistr   Úkeys)r   s    r   Úget_supported_localesz*LocalizedWikiService.get_supported_localesE   s   € Ý�DÔ%×*Ò*Ñ,Ô,Ñ-Ô-Ð-r   N)r"   )Ú__name__Ú
__module__Ú__qualname__ÚLOCALES_DIRr   r   r   Ústrr'   r   r   r2   r6   © r   r   r	   r	      sÎ   € € € € € Ø+6ð  ð   Dð  ð  ð  ð  ð
ð ð ð ð ˜Cð ¨ð ¸ð ð ð ð ð ð  #ð ¨sð ¸dÀ4ÈÈSÈÄ>Ô>Rð ð ð ð ð . t¨C¤yð .ð .ð .ð .ð .ð .r   r	   )Ú__doc__r   Úpathlibr   Útypingr   r   r   r   r:   r	   r<   r   r   ú<module>r@      s”   ððð ð €€€Ø Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,ð ˆdÐ8Ñ9Ô9€ð7.ð 7.ð 7.ð 7.ð 7.ñ 7.ô 7.ð 7.ð 7.ð 7.r   