| 
									
										
										
										
											2023-09-17 20:29:06 +08:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace BookStack\Translation; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class LocaleDefinition | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     public function __construct( | 
					
						
							|  |  |  |         protected string $appName, | 
					
						
							|  |  |  |         protected string $isoName, | 
					
						
							|  |  |  |         protected bool $isRtl | 
					
						
							|  |  |  |     ) { | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Provide the BookStack-specific locale name. | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function appLocale(): string | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return $this->appName; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Provide the ISO-aligned locale name. | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function isoLocale(): string | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return $this->isoName; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Returns a string suitable for the HTML "lang" attribute. | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function htmlLang(): string | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return str_replace('_', '-', $this->isoName); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Returns a string suitable for the HTML "dir" attribute. | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function htmlDirection(): string | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return $this->isRtl ? 'rtl' : 'ltr'; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2023-09-17 23:20:21 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Translate using this locate. | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function trans(string $key, array $replace = []): string | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return trans($key, $replace, $this->appLocale()); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2023-09-17 20:29:06 +08:00
										 |  |  | } |