commit 1dc64cb6e7a7eafc218b1eea617f66536241b6ad Author: WONKI LEE Date: Mon Aug 5 11:38:41 2024 +0900 reactTest diff --git a/config/db_config.php b/config/db_config.php new file mode 100644 index 0000000..d87b62e --- /dev/null +++ b/config/db_config.php @@ -0,0 +1,13 @@ + diff --git a/config/db_config_my.php b/config/db_config_my.php new file mode 100644 index 0000000..79d4d1a --- /dev/null +++ b/config/db_config_my.php @@ -0,0 +1,11 @@ + \ No newline at end of file diff --git a/config/html_config.php b/config/html_config.php new file mode 100644 index 0000000..24579cd --- /dev/null +++ b/config/html_config.php @@ -0,0 +1,107 @@ + 'auth_admin', + 'Group_Uid' => 'auth_admin', + 'Code_Uid' => 'A', + 'Code_Val' => '관리자', + 'Code_Exp' => '관리자', + 'Code_Idx' => 2, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'auth_admin', + 'Group_Uid' => 'auth_admin', + 'Code_Uid' => 'auth_admin', + 'Code_Val' => 'auth_admin', + 'Code_Exp' => '관리자권한', + 'Code_Idx' => 8, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'auth_admin', + 'Group_Uid' => 'auth_admin', + 'Code_Uid' => 'SA', + 'Code_Val' => '슈퍼관리자', + 'Code_Exp' => '슈퍼관리자', + 'Code_Idx' => 1, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'auth_area', + 'Group_Uid' => 'auth_area', + 'Code_Uid' => 'auth_area', + 'Code_Val' => 'auth_area', + 'Code_Exp' => '권한 그룹', + 'Code_Idx' => 7, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'auth_area', + 'Group_Uid' => 'auth_area', + 'Code_Uid' => 'G', + 'Code_Val' => '그룹권한', + 'Code_Exp' => '그룹권한', + 'Code_Idx' => 1, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'auth_area', + 'Group_Uid' => 'auth_area', + 'Code_Uid' => 'M', + 'Code_Val' => '개별권한', + 'Code_Exp' => '개별권한', + 'Code_Idx' => 2, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'auth_member', + 'Group_Uid' => 'auth_member', + 'Code_Uid' => 'auth_member', + 'Code_Val' => 'auth_member', + 'Code_Exp' => '회원권한', + 'Code_Idx' => 9, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'auth_member', + 'Group_Uid' => 'auth_member', + 'Code_Uid' => 'M', + 'Code_Val' => '회원', + 'Code_Exp' => '회원', + 'Code_Idx' => 1, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'auth_member', + 'Group_Uid' => 'auth_member', + 'Code_Uid' => 'Y', + 'Code_Val' => '비회원', + 'Code_Exp' => '비회원', + 'Code_Idx' => 2, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'board_editor', + 'Group_Uid' => 'board_editor', + 'Code_Uid' => 'board_editor', + 'Code_Val' => 'board_editor', + 'Code_Exp' => '작성에디터', + 'Code_Idx' => 11, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'board_editor', + 'Group_Uid' => 'board_editor', + 'Code_Uid' => 'text', + 'Code_Val' => '텍스트', + 'Code_Exp' => '텍스트', + 'Code_Idx' => 2, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'board_editor', + 'Group_Uid' => 'board_editor', + 'Code_Uid' => 'tinymce', + 'Code_Val' => '웹에디터', + 'Code_Exp' => '웹에디터', + 'Code_Idx' => 1, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'cm_var', + 'Group_Uid' => 'cm_var', + 'Code_Uid' => 'cate_depth', + 'Code_Val' => '4', + 'Code_Exp' => '분류최대자리수', + 'Code_Idx' => 5, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'cm_var', + 'Group_Uid' => 'cm_var', + 'Code_Uid' => 'cm_var', + 'Code_Val' => 'cm_var', + 'Code_Exp' => '공통변수', + 'Code_Idx' => 3, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'cm_var', + 'Group_Uid' => 'cm_var', + 'Code_Uid' => 'cust_id_len', + 'Code_Val' => '3', + 'Code_Exp' => '소속 코드 최소글자수', + 'Code_Idx' => 6, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'cm_var', + 'Group_Uid' => 'cm_var', + 'Code_Uid' => 'id_len', + 'Code_Val' => '6', + 'Code_Exp' => '아이디 최소글자수', + 'Code_Idx' => 3, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'cm_var', + 'Group_Uid' => 'cm_var', + 'Code_Uid' => 'line_num', + 'Code_Val' => '20', + 'Code_Exp' => '기본라인수', + 'Code_Idx' => 1, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'cm_var', + 'Group_Uid' => 'cm_var', + 'Code_Uid' => 'page_num', + 'Code_Val' => '5', + 'Code_Exp' => '페이지 출력수', + 'Code_Idx' => 2, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'cm_var', + 'Group_Uid' => 'cm_var', + 'Code_Uid' => 'pw_len', + 'Code_Val' => '6', + 'Code_Exp' => '비밀번호 최소글자수', + 'Code_Idx' => 4, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'common_status', + 'Group_Uid' => 'common_status', + 'Code_Uid' => '0', + 'Code_Val' => '정지', + 'Code_Exp' => '정지', + 'Code_Idx' => 1, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'common_status', + 'Group_Uid' => 'common_status', + 'Code_Uid' => '1', + 'Code_Val' => '사용', + 'Code_Exp' => '사용', + 'Code_Idx' => 2, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'common_status', + 'Group_Uid' => 'common_status', + 'Code_Uid' => 'common_status', + 'Code_Val' => 'common_status', + 'Code_Exp' => '공통 허용상태', + 'Code_Idx' => 10, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'login_result', + 'Group_Uid' => 'login_result', + 'Code_Uid' => '0', + 'Code_Val' => '실패', + 'Code_Exp' => '실패', + 'Code_Idx' => 1, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'login_result', + 'Group_Uid' => 'login_result', + 'Code_Uid' => '1', + 'Code_Val' => '성공', + 'Code_Exp' => '성공', + 'Code_Idx' => 2, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'login_result', + 'Group_Uid' => 'login_result', + 'Code_Uid' => 'login_result', + 'Code_Val' => 'login_result', + 'Code_Exp' => '로그인결과코드', + 'Code_Idx' => 5, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'mem_status', + 'Group_Uid' => 'mem_status', + 'Code_Uid' => '1', + 'Code_Val' => '활동중', + 'Code_Exp' => '활동중', + 'Code_Idx' => 1, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'mem_status', + 'Group_Uid' => 'mem_status', + 'Code_Uid' => '2', + 'Code_Val' => '승인대기', + 'Code_Exp' => '승인대기', + 'Code_Idx' => 2, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'mem_status', + 'Group_Uid' => 'mem_status', + 'Code_Uid' => '3', + 'Code_Val' => '정지', + 'Code_Exp' => '정지', + 'Code_Idx' => 3, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'mem_status', + 'Group_Uid' => 'mem_status', + 'Code_Uid' => 'mem_status', + 'Code_Val' => 'mem_status', + 'Code_Exp' => '회원승인단계', + 'Code_Idx' => 2, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'menu_area', + 'Group_Uid' => 'menu_area', + 'Code_Uid' => 'admin', + 'Code_Val' => '관리자', + 'Code_Exp' => '관리자', + 'Code_Idx' => 4, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'menu_area', + 'Group_Uid' => 'menu_area', + 'Code_Uid' => 'menu_area', + 'Code_Val' => 'menu_area', + 'Code_Exp' => '메뉴구분', + 'Code_Idx' => 6, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'menu_area', + 'Group_Uid' => 'menu_area', + 'Code_Uid' => 'partner', + 'Code_Val' => '파트너', + 'Code_Exp' => '파트너', + 'Code_Idx' => 3, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'menu_area', + 'Group_Uid' => 'menu_area', + 'Code_Uid' => 'service', + 'Code_Val' => '서비스', + 'Code_Exp' => '서비스', + 'Code_Idx' => 2, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'position', + 'Group_Uid' => 'position', + 'Code_Uid' => '1000', + 'Code_Val' => '회장', + 'Code_Exp' => '회장', + 'Code_Idx' => 1, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'position', + 'Group_Uid' => 'position', + 'Code_Uid' => '1010', + 'Code_Val' => '사장', + 'Code_Exp' => '사장', + 'Code_Idx' => 2, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'position', + 'Group_Uid' => 'position', + 'Code_Uid' => '1020', + 'Code_Val' => '부사장', + 'Code_Exp' => '부사장', + 'Code_Idx' => 3, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'position', + 'Group_Uid' => 'position', + 'Code_Uid' => '1030', + 'Code_Val' => '전무이사', + 'Code_Exp' => '전무이사', + 'Code_Idx' => 4, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'position', + 'Group_Uid' => 'position', + 'Code_Uid' => '1040', + 'Code_Val' => '상무이사', + 'Code_Exp' => '상무이사', + 'Code_Idx' => 5, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'position', + 'Group_Uid' => 'position', + 'Code_Uid' => '1050', + 'Code_Val' => '이사', + 'Code_Exp' => '이사', + 'Code_Idx' => 6, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'position', + 'Group_Uid' => 'position', + 'Code_Uid' => '1060', + 'Code_Val' => '수석', + 'Code_Exp' => '수석', + 'Code_Idx' => 7, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'position', + 'Group_Uid' => 'position', + 'Code_Uid' => '1100', + 'Code_Val' => '실장', + 'Code_Exp' => '실장', + 'Code_Idx' => 8, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'position', + 'Group_Uid' => 'position', + 'Code_Uid' => '1110', + 'Code_Val' => '부장', + 'Code_Exp' => '부장', + 'Code_Idx' => 9, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'position', + 'Group_Uid' => 'position', + 'Code_Uid' => '1120', + 'Code_Val' => '차장', + 'Code_Exp' => '차장', + 'Code_Idx' => 10, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'position', + 'Group_Uid' => 'position', + 'Code_Uid' => '1130', + 'Code_Val' => '과장', + 'Code_Exp' => '과장', + 'Code_Idx' => 11, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'position', + 'Group_Uid' => 'position', + 'Code_Uid' => '1140', + 'Code_Val' => '대리', + 'Code_Exp' => '대리', + 'Code_Idx' => 12, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'position', + 'Group_Uid' => 'position', + 'Code_Uid' => '1150', + 'Code_Val' => '주임', + 'Code_Exp' => '주임', + 'Code_Idx' => 13, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'position', + 'Group_Uid' => 'position', + 'Code_Uid' => '1160', + 'Code_Val' => '사원', + 'Code_Exp' => '사원', + 'Code_Idx' => 14, + 'Active' => 'Y' + ), + Array( + 'Bran_Uid' => 'position', + 'Group_Uid' => 'position', + 'Code_Uid' => 'position', + 'Code_Val' => 'position', + 'Code_Exp' => '직위', + 'Code_Idx' => 4, + 'Active' => 'Y' + ), +); + + +$table_base_data['menu_list'] = Array( + Array( + 'cate_area' => 'admin', + 'cate_id' => 'mnu_dashboard', + 'cate_code' => '0001', + 'cate_name' => 'Dash Board', + 'cate_data' => '/kadm/', + 'cate_exp' => '서비스의 전반적인 상황을 확인 합니다.', + 'cate_class' => 'bi bi-patch-plus-fill', + 'cate_auth' => '', + 'cate_use' => 'Y' + ), + Array( + 'cate_area' => 'admin', + 'cate_id' => 'mnu_mem', + 'cate_code' => '0002', + 'cate_name' => '회원관리', + 'cate_data' => '/kadm/member/', + 'cate_exp' => '', + 'cate_class' => 'bi bi-people-fill', + 'cate_auth' => '', + 'cate_use' => 'Y' + ), + Array( + 'cate_area' => 'admin', + 'cate_id' => 'mnu_mem_list', + 'cate_code' => '00020001', + 'cate_name' => '회원리스트', + 'cate_data' => '/kadm/member/member_list.php', + 'cate_exp' => '', + 'cate_class' => 'bi bi-person-plus-fill', + 'cate_auth' => '', + 'cate_use' => 'Y' + ), + Array( + 'cate_area' => 'admin', + 'cate_id' => 'mnu_mem_log', + 'cate_code' => '00020002', + 'cate_name' => '서비스페이지 로그기록', + 'cate_data' => '/kadm/member/member_log_list.php', + 'cate_exp' => '', + 'cate_class' => 'bi bi-person-lines-fill', + 'cate_auth' => '', + 'cate_use' => 'Y' + ), + Array( + 'cate_area' => 'admin', + 'cate_id' => 'mnu_board', + 'cate_code' => '0003', + 'cate_name' => '게시물관리', + 'cate_data' => '/kadm/board', + 'cate_exp' => '', + 'cate_class' => 'bi bi-list-columns-reverse', + 'cate_auth' => '', + 'cate_use' => 'Y' + ), + Array( + 'cate_area' => 'admin', + 'cate_id' => 'mnu_board_list', + 'cate_code' => '00030001', + 'cate_name' => '게시판관리', + 'cate_data' => '/kadm/board/', + 'cate_exp' => '', + 'cate_class' => 'bi bi-list-task', + 'cate_auth' => '', + 'cate_use' => 'Y' + ), + Array( + 'cate_area' => 'admin', + 'cate_id' => 'mnu_board_contents', + 'cate_code' => '00030002', + 'cate_name' => '게시물리스트', + 'cate_data' => '/kadm/board/contents_list.php', + 'cate_exp' => '', + 'cate_class' => 'bi bi-list-stars', + 'cate_auth' => '', + 'cate_use' => 'Y' + ), + Array( + 'cate_area' => 'admin', + 'cate_id' => 'mnu_cust', + 'cate_code' => '0004', + 'cate_name' => '소속관리', + 'cate_data' => '/kadm/cust/', + 'cate_exp' => '', + 'cate_class' => 'bi bi-building', + 'cate_auth' => '', + 'cate_use' => 'Y' + ), + Array( + 'cate_area' => 'admin', + 'cate_id' => 'mnu_config', + 'cate_code' => '0005', + 'cate_name' => '환경설정', + 'cate_data' => '/kadm/basecode', + 'cate_exp' => '', + 'cate_class' => 'bi bi-gear-fill', + 'cate_auth' => '', + 'cate_use' => 'Y' + ), + Array( + 'cate_area' => 'admin', + 'cate_id' => 'mnu_basecode', + 'cate_code' => '00050001', + 'cate_name' => '기준정보관리', + 'cate_data' => '/kadm/basecode', + 'cate_exp' => '', + 'cate_class' => 'bi bi-tablet-landscape', + 'cate_auth' => '', + 'cate_use' => 'Y' + ), + Array( + 'cate_area' => 'admin', + 'cate_id' => 'mnu_menu', + 'cate_code' => '00050002', + 'cate_name' => '메뉴관리', + 'cate_data' => '/kadm/menu/menu_service.php', + 'cate_exp' => '', + 'cate_class' => 'bi bi-diagram-3-fill', + 'cate_auth' => '', + 'cate_use' => 'Y' + ), + Array( + 'cate_area' => 'admin', + 'cate_id' => 'mnu_menu_service', + 'cate_code' => '000500020001', + 'cate_name' => '서비스화면', + 'cate_data' => '/kadm/menu/menu_service.php', + 'cate_exp' => '', + 'cate_class' => 'bi bi-diagram-2-fill', + 'cate_auth' => '', + 'cate_use' => 'Y' + ), + Array( + 'cate_area' => 'admin', + 'cate_id' => 'mnu_menu_admin', + 'cate_code' => '000500020002', + 'cate_name' => '관리자화면', + 'cate_data' => '/kadm/menu/menu_admin.php', + 'cate_exp' => '', + 'cate_class' => 'bi bi-diagram-2', + 'cate_auth' => '', + 'cate_use' => 'Y' + ), + Array( + 'cate_area' => 'admin', + 'cate_id' => 'mnu_auth', + 'cate_code' => '00050003', + 'cate_name' => '권한관리', + 'cate_data' => '/kadm/auth', + 'cate_exp' => '', + 'cate_class' => 'bi bi-grid-3x3-gap-fill', + 'cate_auth' => '', + 'cate_use' => 'Y' + ), + Array( + 'cate_area' => 'admin', + 'cate_id' => 'mnu_auth_service', + 'cate_code' => '000500030001', + 'cate_name' => '서비스권한관리', + 'cate_data' => '/kadm/auth/auth_service.php', + 'cate_exp' => '', + 'cate_class' => 'bi bi-grid', + 'cate_auth' => '', + 'cate_use' => 'Y' + ), + Array( + 'cate_area' => 'admin', + 'cate_id' => 'mnu_auth_admin', + 'cate_code' => '000500030002', + 'cate_name' => '관리자화면 권한관리', + 'cate_data' => '/kadm/auth/auth_admin.php', + 'cate_exp' => '', + 'cate_class' => 'bi bi-grid-fill', + 'cate_auth' => '', + 'cate_use' => 'Y' + ), + Array( + 'cate_area' => 'admin', + 'cate_id' => 'mnu_adm', + 'cate_code' => '00050004', + 'cate_name' => '관리자', + 'cate_data' => '/kadm/admin', + 'cate_exp' => '', + 'cate_class' => 'bi bi-person-video', + 'cate_auth' => '', + 'cate_use' => 'Y' + ), + Array( + 'cate_area' => 'admin', + 'cate_id' => 'mnu_adm_list', + 'cate_code' => '000500040001', + 'cate_name' => '관리자 리스트', + 'cate_data' => '/kadm/admin/', + 'cate_exp' => '', + 'cate_class' => 'bi bi-person-video3', + 'cate_auth' => '', + 'cate_use' => 'Y' + ), + Array( + 'cate_area' => 'admin', + 'cate_id' => 'mnu_adm_log', + 'cate_code' => '000500040002', + 'cate_name' => '관리페이지 로그기록', + 'cate_data' => '/kadm/admin/member_log_list.php', + 'cate_exp' => '', + 'cate_class' => 'bi bi-person-video2', + 'cate_auth' => '', + 'cate_use' => 'Y' + ), + Array( + 'cate_area' => 'service', + 'cate_id' => 'main', + 'cate_code' => '0001', + 'cate_name' => '메인화면', + 'cate_data' => '/', + 'cate_exp' => '', + 'cate_class' => '', + 'cate_auth' => '', + 'cate_use' => 'Y' + ), +); \ No newline at end of file diff --git a/config/info_table_schema.php b/config/info_table_schema.php new file mode 100644 index 0000000..deecb19 --- /dev/null +++ b/config/info_table_schema.php @@ -0,0 +1,643 @@ +DB->query_record = false; //query log 기록 금지 + + $this->DB->tableExists($this->TB); + } + + public function getAttachList($fields, $gubun, $nid="", $orderby=""){ + $where = new DB_where("and"); + if( $gubun ){ + $where->add("gubun = ?", $gubun); + } + if( $nid ){ + $where->add("nid = ?", $nid); + } + + $orderby=$orderby?:"file_id desc"; + $limit=array(); + + $rows = $this->getDataList($fields, $where, $orderby, $limit); + for( $a=0 ; $a $gubun, + "nid" => $nid, + "sid" => $sid, + ); + $row = $this->getData("*", $whererow); + $row['file_url'] = _SITE_INC_URL_."/getFile.php?gubun={$row['gubun']}&nid={$row['nid']}&sid={$row['sid']}"; + return $row; + } + public function getAttachId( $file_id ) { + $whererow = Array( + "file_id" => $file_id, + ); + $row = $this->getData("*", $whererow); + $row['file_url'] = _SITE_INC_URL_."/getFile.php?gubun={$row['gubun']}&nid={$row['nid']}&sid={$row['sid']}"; + return $row; + } + + public function putAttach( $upfile, $gubun, $nid, $sid ) { + $target_dir = _UP_PATH_."/{$gubun}"; + if( !file_exists($target_dir) ){ + mkdir($target_dir); + } + $rst = move_uploaded_file($upfile['tmp_name'], "{$target_dir}/{$nid}_{$sid}.dat"); + if( !$rst ) return false; + + if( strpos($upfile['type'], "image") !== false ){ + $iinfo = getimagesize("{$target_dir}/{$nid}_{$sid}.dat"); + $upfile['width'] = $iinfo[0]; + $upfile['height'] = $iinfo[1]; + } + + $sqldata = Array( + "gubun" => $gubun?:"", + "nid" => $nid?:"", + "sid" => $sid?:"", + "file_name" => $upfile['name']?:"", + "file_size" => $upfile['size']?:0, + "file_type" => $upfile['type']?:"", + "file_width" => $upfile['width']?:"", + "file_height" => $upfile['height']?:"", + "reg_date" => $this->DB->sqleval("getdate()"), + ); + + return $this->putData( $sqldata ); + } + + public function setAttach( $upfile, $gubun, $nid, $sid ) { + $target_dir = _UP_PATH_."/{$gubun}"; + if( !file_exists($target_dir) ){ + mkdir($target_dir); + } + $rst = move_uploaded_file($upfile['tmp_name'], "{$target_dir}/{$nid}_{$sid}.dat"); + if( !$rst ) return false; + + if( strpos($upfile['type'], "image") !== false ){ + $iinfo = getimagesize("{$target_dir}/{$nid}_{$sid}.dat"); + $upfile['width'] = $iinfo[0]; + $upfile['height'] = $iinfo[1]; + } + + $sqldata = Array( + "gubun" => $gubun?:"", + "nid" => $nid?:"", + "sid" => $sid?:"", + "file_name" => $upfile['name']?:"", + "file_size" => $upfile['size']?:0, + "file_type" => $upfile['type']?:"", + "file_width" => $upfile['width']?:"", + "file_height" => $upfile['height']?:"", + "reg_date" => $this->DB->sqleval("getdate()"), + ); + + $whererow = Array( + "gubun" => $gubun?:"", + "nid" => $nid?:"", + "sid" => $sid?:"", + ); + + return $this->setData( $sqldata, $whererow ); + } + public function setAttachId( $upfile, $file_id ) { + $ainfo = $this->getAttachId( $file_id ); + if( !$ainfo['file_id'] ) return false; + + return $this->setAttach( $upfile, $ainfo['gubun'], $ainfo['nid'], $ainfo['sid'] ); + } + + public function delAttach( $gubun, $nid, $sid ){ + $urow = Array(); + $urow['gubun'] = $gubun; + $urow['nid'] = $nid; + $urow['sid'] = $sid; + $where = ""; + + $target_dir = _UP_PATH_."/{$gubun}"; + //$rst = @unlink("{$target_dir}/{$nid}_{$sid}.dat"); + $rst = $this->fileRemove("{$target_dir}/{$nid}_{$sid}.dat*"); + if( !$rst ) return false; + + return $this->delData($urow, $where); + } + public function delAttachId( $file_id ){ + $ainfo = $this->getAttachId( $file_id ); + return $this->delAttach( $ainfo['gubun'], $ainfo['nid'], $ainfo['sid'] ); + } + + static function fByte($bytes, $precision=2) { + $unit = ["B", "KB", "MB", "GB"]; + $exp = floor(log($bytes, 1024)) ?: 0; + return round($bytes / (pow(1024, $exp)), $precision).$unit[$exp]; + } + + static function fileRemove($filepath, $unremove=""){ + $glob = glob($filepath); + foreach( $glob as $filename ) { + if( !$unremove || $filename != $unremove ){ + @unlink($filename); + } + } + return true; + } +} \ No newline at end of file diff --git a/lib/app/auth.class.php b/lib/app/auth.class.php new file mode 100644 index 0000000..33ec910 --- /dev/null +++ b/lib/app/auth.class.php @@ -0,0 +1,281 @@ +DB->query_record = false; //query log 기록 금지 + + $this->DB->tableExists(TB_auth_manage); + } + + /** 권한저장 + * @param $cate_area : 권한범위 + * @param $cate_id : 권한 기능(메뉴) + * @param $auth_area : 권한 그룹 + * @param $auth_target : 권한 대상 + * @param $auth : 권한 + * @return bool + */ + public function putAuth( $cate_area, $cate_id, $auth_area, $auth_target, $auth ){ + $sql_row = Array( + "cate_area" => $cate_area?:"", + "cate_id" => $cate_id?:"", + "auth_area" => $auth_area?:"", + "auth_target"=> $auth_target?:"", + "auth" => $auth?:"", + "reg_date" => $this->DB->sqleval("getdate()"), + "mod_date" => $this->DB->sqleval("getdate()"), + "mod_id" => $GLOBALS['_Umem']['member_id']?:"", + ); + + return $this->DB->insert(TB_auth_manage, $sql_row); + } + + /** 권한수정 + * @param $cate_area : 권한범위 + * @param $cate_id : 권한 기능(메뉴) + * @param $auth_area : 권한 그룹 + * @param $auth_target : 권한 대상 + * @param $auth : 권한 + * @param string $old_cate_id : 수정할 id + * @return bool + */ + public function setAuth( $cate_area, $cate_id, $auth_area, $auth_target, $auth, $old_cate_id="" ){ + $sql_row = Array( + "auth" => $auth?:"", + "mod_date" => $this->DB->sqleval("getdate()"), + "mod_id" => $GLOBALS['_Umem']['member_id']?:"", + ); + if( $old_cate_id && $cate_id != $old_cate_id ){ + $sql_row['cate_id'] = $cate_id; + } + + $where = new DB_where("and"); + $where->add("cate_area = ?", $cate_area); + $where->add("cate_id = ?", $old_cate_id?:$cate_id); + $where->add("auth_area = ?", $auth_area); + $where->add("auth_target = ?", $auth_target); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $ins_sql_row = Array( + "cate_area" => $cate_area?:"", + "cate_id" => $cate_id?:"", + "auth_area" => $auth_area?:"", + "auth_target"=> $auth_target?:"", + "auth" => $auth?:"", + "reg_date" => $this->DB->sqleval("getdate()"), + "mod_date" => $this->DB->sqleval("getdate()"), + "mod_id" => $GLOBALS['_Umem']['member_id']?:"", + ); + + return $this->DB->insertupdate(TB_auth_manage, $ins_sql_row, $sql_row, $whereqry, $whererow); + +// $sql = "select count(*) from ".TB_auth_manage." where {$whereqry}"; +// $cnt = $this->DB->queryFirstField($sql, $whererow); +// +// if( $cnt ){ +// return $this->DB->update(TB_auth_manage, $sql_row, $whereqry, $whererow); +// }else{ +// return $this->putAuth($cate_area, $cate_id, $auth_area, $auth_target, $auth); +// } + } + + /* 주석은 시간날때.. 하지만 언제나 시간은 없지 + * 권한추가 + * */ + public function addAuth( $cate_area, $cate_id, $auth_area, $auth_target, $auth ){ + $auth = (int)$auth; + if( $auth > 7 || $auth < 0 ) return false; + + return $this->setAuth( $cate_area, $cate_id, $auth_area, $auth_target, $this->DB->sqleval("auth | {$auth}") ); + } + + /* + * 권한제거 + * */ + public function remAuth( $cate_area, $cate_id, $auth_area, $auth_target, $auth ){ + $auth = (int)$auth; + if( $auth > 7 || $auth < 0 ) return false; + + return $this->setAuth( $cate_area, $cate_id, $auth_area, $auth_target, $this->DB->sqleval("auth & ".(7 ^ $auth)) ); + } + + /* + * 권한삭제 + * */ + public function delAuth( $cate_area, $cate_id, $auth_area="", $auth_target="" ){ + $where = new DB_where("and"); + $where->add("cate_area = ?", $cate_area); + $where->add("cate_id = ?", $cate_id); + if( $auth_area ){ + $where->add("auth_area = ?", $auth_area); + } + if( $auth_target ){ + $where->add("auth_target = ?", $auth_target); + } + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + return $this->DB->delete(TB_auth_manage, $whereqry, $whererow); + } + + /** + * @param $cate_area + * @param $cate_id + * @param string $auth_target + * @return int + */ + public function getAuthList( $cate_area="" ){ + $where = new DB_where("and"); + if( $cate_area ){ + $where->add("cate_area = ?", $cate_area); + } + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $sql = "select cate_id, auth_area, auth_target, auth from ".TB_auth_manage." where {$whereqry}"; + $rst = $this->DB->qry($sql, $whererow); + if( $rst ) { + $rows = array(); + while ($row = $this->DB->fetch_array($rst)) { + $rows[$row['cate_id']][$row['auth_area']][$row['auth_target']] = $this->getAuthToRow($row['auth']); + } + + return $rows; + } + return $rst; + } + + /** 회원권한조회 - 회원이 가진 (현메뉴)에서 가진 권한값 리턴 + * @param $cate_area : 권한범위 + * @param $cate_id : 권한 기능(메뉴) + * @param string $auth_target : member_id, //Todo: 그룹권한만 확인하는 내용은 존재하지 않음 + * @return int + */ + public function getAuth( $cate_area, $cate_id, $auth_target="" ){ + if( !$auth_target ){ + $mem = $GLOBALS['_Umem']; + $auth_target = isset($mem['member_id'])?$mem['member_id']:""; + }else{ + $mobj = new Member(); + $mem = $mobj->getMember($auth_target); + } + if( !isset($mem) || !$mem || !isset($mem['member_id']) || !$mem['member_id'] ){ + if( !is_array($mem) ){ + $mem = array(); + } + $mem['member_auth'] = "Y"; //비회원 + } + + if( $mem['member_auth'] == 'SA' ) return 7; //슈퍼관리자는 무조건 Ok + + $where = new DB_where("and"); + $where->add("cate_area = ?", $cate_area); + $where->add("cate_id = ?", $cate_id); + $subwhere = $where->sub_where("or"); + + $subwhere2 = $subwhere->sub_where("and"); + $subwhere2->add("auth_area = ?","G"); + $subwhere2->add("auth_target = ?",$mem['member_auth']); + + $subwhere3 = $subwhere->sub_where("and"); + $subwhere3->add("auth_area = ?","M"); + $subwhere3->add("auth_target = ?",$mem['member_id']); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $sql = "select auth from ".TB_auth_manage." where {$whereqry}"; + $rows = $this->DB->query($sql, $whererow); + $auth = 0; + foreach( (array)$rows as $row ){ + $auth = $auth | $row['auth']; + } + + //권한 제거 가 존재한다면(예: 레벨권한, 그룹권한으로 권한을 획득했지만 해당 인원만 쓰기 금지.)... 아래 로직을 적절하게 적용한다. + // $dauth <-- 제거할 권한(예: 7->모든 권한 제거, 4->수정삭제권한 제거, 2->쓰기권한제거, 1->읽기권한 제거) + // $auth = $auth & ~$dauth; + return $auth; + } + + /** 권한 Normalize + * @param $auth + * @return int + */ + public function normalAuth($auth){ + $auth = strtolower($auth); + switch( true ){ + case in_array( $auth, Array("r", "read", "1", 1) ) : + $auth = 1; break; + + case in_array( $auth, Array("w", "write", "put", "2", 2) ) : + $auth = 2; break; + + case in_array( $auth, Array("u", "up", "update", "m", "mod", "modify", "set", "d", "del", "delete", "4", 4) ) : + $auth = 4; break; + + default : + $auth = 0; + } + return $auth; + } + + /** 권한확인 + * @param $auth : 권한 + * @param $cate_area : 권한범위 + * @param $cate_id : 권한 기능(메뉴) + * @param string $auth_target : member_id, //Todo: 그룹권한만 확인하는 내용은 존재하지 않음 + * @return int + */ + public function hasAuth( $auth, $cate_area, $cate_id, $auth_target="" ){ + $allow = $this->getAuth($cate_area, $cate_id, $auth_target); + $auth = $this->normalAuth($auth); + return $auth & $allow; + } + + /** 권한 get num -> row + * @param $auth : 권한 + * @return array + */ + public function getAuthToRow($auth){ + $arow = Array(); + + $arow["R"] = (bool)($auth & 1); + $arow["W"] = (bool)($auth & 2); + $arow["D"] = (bool)($auth & 4); + + return $arow; + } + + /* + * 권한 get row(string) -> num + * */ + public function getAuthToNum($read, $write, $delete){ + return ($read?1:0)+($write?2:0)+($delete?4:0); + } + + + /** 해당 권한을 가진 id get + * @param $row : 권한 배열 + * @param $auth : 찾아낼 권한 + * @return array + */ + public function getHasAuthRow( $row, $auth ){ + $auth = $this->normalAuth($auth); + $rerow = array(); + foreach( (array)$row as $k => $v ){ + if( $v & $auth ){ + $rerow[] = $k; + } + } + return $rerow; + } +} \ No newline at end of file diff --git a/lib/app/board.class.php b/lib/app/board.class.php new file mode 100644 index 0000000..65b15ae --- /dev/null +++ b/lib/app/board.class.php @@ -0,0 +1,1101 @@ +DB->tableExists( TB_board_list ); + $this->DB->tableExists( TB_board_contents ); + $this->DB->tableExists( TB_board_attach ); + $this->DB->tableExists( TB_board_opinion ); + $this->DB->tableExists( TB_member ); + $this->board_info = $this->getBoardId($board_id); + } + + function getBoardList($field="*",$where="", $orderby="",$limit=array()){ //게시판 리스트 + if( !$where ){ + $where = new DB_where("and"); + } + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + //$sql = "select brd.{$field}, mem.member_name from ". TB_board_list ." as brd left join ". TB_member ." as mem on brd.board_admin = mem.member_id where {$whereqry}".(($orderby)?" order by {$orderby}":""). $this->DB->_limit($limit[0],$limit[1]); + $sql = $this->DB->addLimit("select brd.{$field}, mem.member_name from ". TB_board_list ." as brd left join ". TB_member ." as mem on brd.board_admin = mem.member_id where {$whereqry}",$orderby,$limit[0],$limit[1]); + $rows = $this->DB->query($sql, $whererow); + return $rows; + } + + function getBoardPage($sqldata="", $where=""){ //게시판 리스트(페이징) + if( !$where ){ + $where = new DB_where("and"); + } + if( $sqldata['stxt'] ){ + $subwhere = $where->sub_where("or"); + if( $sqldata['sfld'] ){ + $subwhere->add("{$sqldata['sfld']} like ?", "%{$sqldata['stxt']}%"); + }else{ + $subwhere->add("board_id like ?", "%{$sqldata['stxt']}%"); + $subwhere->add("board_name like ?", "%{$sqldata['stxt']}%"); + } + } + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $orderby = "board_name asc"; + if( $sqldata['ofld'] && $sqldata['oasc'] ) $orderby = "{$sqldata['ofld']} {$sqldata['oasc']}"; + + $query = array( + "mode" => $sqldata['mode'], + "viewnum" => $sqldata['viewnum']?:20, + "sfld" => $sqldata['sfld'], + "stxt" => $sqldata['stxt'], + "ofld" => $sqldata['ofld'], + "oasc" => $sqldata['oasc'], + ); + + $table = "(select brd.*, mem.member_name from ". TB_board_list ." as brd left join ". TB_member ." as mem on brd.board_admin = mem.member_id) as A"; + + $lists = new clist(); + $lists->fld = "*"; + $lists->where = $whereqry; + $lists->whererow = $whererow; + $lists->orderby = $orderby; + $lists->url = $_SERVER['PHP_SELF']; + $lists->query = $query; + $lists->page = $sqldata['page']?:1; + $lists->linktype = ""; + $lists->viewnum = $query['viewnum']; + $lists->rownum = $sqldata['rownum']?:5; + $lists->getCommonList($table); + + for( $a=0 ; $a<@count($lists->rows) ; $a++ ){ + $lists->rows[$a]['board_id'] = stripslashes($lists->rows[$a]['board_id']); + $lists->rows[$a]['board_name'] = stripslashes($lists->rows[$a]['board_name']); + $lists->rows[$a]['con_num'] = $this->getContentsNum($lists->rows[$a]['board_id']); + } + return $lists; + } + + function getBoard($board_id){ //게시판 불러오기 + return $this->getBoardId($board_id); + } + + function getBoardId($board_id){ //게시판 불러오기 (board_id) + $where = new DB_where("and"); + $where->add("board_id = ?", $board_id); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $sql = "select * from ". TB_board_list ." where {$whereqry}"; + $rst = $this->DB->queryFirstRow($sql, $whererow); + $rst['board_name'] = stripslashes($rst['board_name']); + return $rst; + } + + function putBoard( $sqldata ){ + $sqlrow = array( + "board_id" => $sqldata['board_id']?:"", + "board_name" => $sqldata['board_name']?:"", + "board_admin" => $sqldata['board_admin']?:"", + "board_cate" => $sqldata['board_cate']?:"", + "read_level" => $sqldata['read_level']?:"", + "write_level" => $sqldata['write_level']?:"", + "ness_name" => $sqldata['ness_name']?:"", + "ness_passwd" => $sqldata['ness_passwd']?:"", + "ness_title" => $sqldata['ness_title']?:"", + "ness_homepage" => $sqldata['ness_homepage']?:"", + "ness_mail" => $sqldata['ness_mail']?:"", + "ness_contents" => $sqldata['ness_contents']?:"", + "ness_image" => $sqldata['ness_image']?:"", + "ness_file" => $sqldata['ness_file']?:"", + "use_opinion" => $sqldata['use_opinion']?:"", + "use_spamproof" => $sqldata['use_spamproof']?:"", + "use_webeditor" => $sqldata['use_webeditor']?:"", + "line_num" => $sqldata['line_num']?:"", + "page_num" => $sqldata['page_num']?:"", + "new_num" => $sqldata['new_num']?:1, + "hot_num" => $sqldata['hot_num'], + "skin_name" => $sqldata['skin_name'], + ); + $rst = $this->DB->insert( TB_board_list, $sqlrow ); + if( $rst ){ + return $sqlrow['board_id']; + } + } + + function setBoard( $sqldata ){ + $obrd = $this->getBoard($sqldata['board_id']); + $sqlrow = array( + "board_id" => $sqldata['board_id']?:"", + "board_name" => $sqldata['board_name']?:"", + "board_admin" => $sqldata['board_admin']?:"", + "board_cate" => $sqldata['board_cate']?:"", + "read_level" => $sqldata['read_level']?:"", + "write_level" => $sqldata['write_level']?:"", + "ness_name" => $sqldata['ness_name']?:"", + "ness_passwd" => $sqldata['ness_passwd']?:"", + "ness_title" => $sqldata['ness_title']?:"", + "ness_homepage" => $sqldata['ness_homepage']?:"", + "ness_mail" => $sqldata['ness_mail']?:"", + "ness_contents" => $sqldata['ness_contents']?:"", + "ness_image" => $sqldata['ness_image']?:"", + "ness_file" => $sqldata['ness_file']?:"", + "use_opinion" => $sqldata['use_opinion']?:"", + "use_spamproof" => $sqldata['use_spamproof']?:"", + "use_webeditor" => $sqldata['use_webeditor']?:"", + "line_num" => $sqldata['line_num']?:"", + "page_num" => $sqldata['page_num']?:"", + "new_num" => $sqldata['new_num']?:1, + "hot_num" => $sqldata['hot_num'], + "skin_name" => $sqldata['skin_name'], + ); + $where = new DB_where("and"); + $where->add("board_id = ?", $sqldata['board_id']); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $rst = $this->DB->update( TB_board_list, $sqlrow, $whereqry, $whererow); + if( $rst ){ + return $sqldata['board_id']; + } + return 0; + } + + function delBoard( $board_id ){ + $where = new DB_where("and"); + $where->add("board_id = ?", $board_id); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $rst = $this->DB->delete( TB_board_list, $whereqry, $whererow); + $rst = $rst && $this->DB->delete( TB_board_contents, $whereqry, $whererow); + $rst = $rst && $this->DB->delete( TB_board_opinion, $whereqry, $whererow); + + if( $rst ){ + $this->delFiles( "board", array("board_id"=>$board_id) ); + return 1; + } + return 0; + } + + function getContentsList($field="*", $where="", $orderby="", $limit=array(), $dmode=""){ //게시물 리스트 + if( !$where ){ + $where = new DB_where("and"); + } + + if( $dmode != "all" ){ //전체 게시물 리스트 아니면 + $where->add("board_id = ?", $this->board_info['board_id']); + } + + if( !$this->isAdmin() ){ + $where->add("state = ?", 1); + } + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + //$sql = "select {$field} from (select brc.*, brl.board_name from ". TB_board_contents ." as brc inner join ". TB_board_list ." as brl on brc.board_id = brl.board_id) as brd where {$whereqry} ".(($orderby)?"order by {$orderby}":""). $this->DB->_limit($limit[0],$limit[1]); + $sql = $this->DB->addLimit("select {$field} from (select brc.*, brl.board_name from ". TB_board_contents ." as brc inner join ". TB_board_list ." as brl on brc.board_id = brl.board_id) as brd where {$whereqry}",$orderby,$limit[0],$limit[1]); + $rst = $this->DB->qry($sql, $whererow); + $rows = array(); + while( $tmp = $this->DB->fetch_array($rst) ){ + $tmp = $this->getContentsInfo($tmp); + + if( !$this->isAdmin() ){ + unset($tmp['ip_addr']); + } + $rows[] = $tmp; + } + return $rows; + } + + function getContentsPage($sqldata="", $where=""){ //게시물 리스트(페이징) + if( !$where ){ + $where = new DB_where("and"); + } + + if( $sqldata['dmode'] != "all" ){ //전체 게시물 리스트 아니면 + $where->add("board_id = ?", $this->board_info['board_id']); + } + + if( $sqldata['gubun'] ){ + $where->add("gubun = ?", $sqldata['gubun']); + } + if( $sqldata['board_id'] ){ + $where->add("board_id = ?", $sqldata['board_id']); + } + if( !$this->isAdmin() ){ + $where->add("state = ?", 1); + } + if( $sqldata['stxt'] ){ + $subwhere = $where->sub_where("or"); + if( $sqldata['sfld'] ){ + $subwhere->add("{$sqldata['sfld']} like ?", "%{$sqldata['stxt']}%"); + }else{ + $subwhere->add("title like ?", "%{$sqldata['stxt']}%"); + $subwhere->add("contents like ?", "%{$sqldata['stxt']}%"); + } + } + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $orderby = "cid desc"; + if( $sqldata['ofld'] && $sqldata['oasc'] ) $orderby = "{$sqldata['ofld']} {$sqldata['oasc']}"; + + $query = array( + "mode" => $sqldata['mode'], + "board_id" => $sqldata['board_id'], + "gubun" => $sqldata['gubun'], + "viewnum" => $sqldata['viewnum']?:$this->board_info['line_num']?:30, + "sfld" => $sqldata['sfld'], + "stxt" => $sqldata['stxt'], + "ofld" => $sqldata['ofld'], + "oasc" => $sqldata['oasc'], + ); + + $table = "(select brc.*, brl.board_name from ". TB_board_contents ." as brc inner join ". TB_board_list ." as brl on brc.board_id = brl.board_id) as brd"; + $lists = new clist(); + $lists->fld = "*"; + $lists->where = $whereqry; + $lists->whererow = $whererow; + $lists->orderby = $orderby; + $lists->url = $_SERVER['PHP_SELF']; + $lists->query = $query; + $lists->page = $sqldata['page']?:1; + $lists->linktype = ""; + $lists->viewnum = $query['viewnum']; + $lists->rownum = $this->board_info['page_num']?:10; + $lists->getCommonList($table); + + for( $a=0 ; $a<@count($lists->rows) ; $a++ ){ $tmp = $lists->rows[$a]; + $tmp = $this->getContentsInfo($tmp); + + if( !$this->isAdmin() ){ + unset($tmp['ip_addr']); + } + $lists->rows[$a] = $tmp; + } + return $lists; + } + + function getAllContentsList($field="*" ,$where="", $orderby="", $limit=array()){ //전체 게시물 리스트 + return $this->getContentsList($field, $where, $orderby, $limit, "all"); + } + + function getAllContentsPage($sqldata="", $where=""){ //전체 게시물 리스트(페이징) + $sqldata['dmode'] = "all"; + return $this->getContentsPage($sqldata,$where); + } + + function getContents( $cid ){ //게시물 불러오기 + if( !$cid ) return 0; + + $where = new DB_where("and"); + $where->add("board_id = ?", $this->board_info['board_id']); + + $where->add("cid = ?", $cid); + if( !$this->isAdmin() ){ + $where->add("state != ?", 2); + } + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $sql = "select * from ". TB_board_contents ." where {$whereqry}"; + $row = $this->DB->queryFirstRow( $sql, $whererow); + $row = $this->getContentsInfo($row); + + if( !$this->isAdmin() ){ + unset($row['ip_addr']); + } + return $row; + } + + function getContentsInfo( $row ){ + if( !$row['secret'] || $this->chkSecretAuth($row) ){ + $row['title'] = stripslashes($row['title']); + $row['contents'] = stripslashes($row['contents']); + switch( $this->board_info['use_webeditor'] ){ + case "Tinymce" : break; + default : $row['contents'] = nl2br($row['contents']); + } + $row['contents_txt'] = strip_tags($row['contents']); + $row['uname'] = stripslashes($row['uname']); + $row['homepage'] = stripslashes($row['homepage']); + $row['mail'] = $this->lcrypt->dec_secure($row['mail']); + $row['mobile'] = $this->lcrypt->dec_secure($row['mobile']); + }else{ + $row['title'] = "비밀글 입니다."; + $row['contents'] = "비밀글 입니다."; + $row['uname'] = "비밀글"; + $row['homepage'] = "http://xxx.xxx.xxx"; + $row['mail'] = "xxx@xxx.xxx"; + $row['mobile'] = "xxx-xxxx-xxxx"; + } + return $row; + } + + function putContents( $sqldata ){ //게시물 등록 + $sqlrow = array( + "board_id" => $this->board_info['board_id'], + "gubun" => $sqldata['gubun'], + "title" => $sqldata['title'], + "contents" => $sqldata['contents'], + "notice" => $sqldata['notice']?:"", + "views" => 0, + "good" => 0, + "nogood" => 0, + "onum" => 0, + "secret" => $sqldata['secret']?:"", + "markup" => $sqldata['markup']?:"", + "state" => $sqldata['state']?:1, + "member_id" => $GLOBALS['_Umem']['member_id'], + "uname" => $sqldata['uname'], + "passwd" => $this->lcrypt->pw_make($sqldata['passwd']), + "homepage" => $sqldata['homepage'], + "mail" => $sqldata['mail']?$this->lcrypt->enc_secure($sqldata['mail']):"", + "mobile" => $sqldata['mobile']?$this->lcrypt->enc_secure($sqldata['mobile']):"", + "ip_addr" => get_ip(), + "reg_date" => $this->DB->sqleval("getdate()"), + "mod_date" => $this->DB->sqleval("getdate()"), + ); + $rst = $this->DB->insert( TB_board_contents, $sqlrow ); + if( $rst ){ + $cid = $this->DB->insertId(TB_board_contents); + $sqldata['cid'] = $cid; + $this->putFiles( $sqldata ); + return $cid; + } + } + + function setContents( $sqldata ){ //게시물 수정 + $sqlrow = array( + "gubun" => $sqldata['gubun'], + "title" => $sqldata['title'], + "contents" => $sqldata['contents'], + "uname" => $sqldata['uname'], + "homepage" => $sqldata['homepage'], + "mail" => $sqldata['mail']?$this->lcrypt->enc_secure($sqldata['mail']):"", + "mobile" => $sqldata['mobile']?$this->lcrypt->enc_secure($sqldata['mobile']):"", + "mod_date" => $this->DB->sqleval("getdate()"), + ); + + if( $sqldata['state'] ) $sqlrow['state'] = $sqldata['state']; + if( $sqldata['notice'] ) $sqlrow['notice'] = $sqldata['notice']; + if( $sqldata['secret'] ) $sqlrow['secret'] = $sqldata['secret']; + if( $sqldata['markup'] ) $sqlrow['markup'] = $sqldata['markup']; + + $where = new DB_where("and"); + $where->add("board_id = ?", $this->board_info['board_id']); + $where->add("cid = ?", $sqldata['cid']); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $rst = $this->DB->update( TB_board_contents, $sqlrow, $whereqry, $whererow ); + if( $rst ){ + $this->delFiles( "file", array("cid"=>$sqldata['cid'], "aid" => $sqldata['DEL_ATTFILES']) ); + $this->putFiles( $sqldata ); + return $sqldata['cid']; + } + return 0; + } + + function delContents( $cid ){ //게시물 삭제 + $where = new DB_where("and"); + $where->add("board_id = ?", $this->board_info['board_id']); + + if( is_array($cid) ){ + $subwhere = $where->sub_where("or"); + foreach( (array)$cid as $v ){ + $subwhere->add("cid = ?", $v); + } + }else{ + $where->add("cid = ?", $cid); + } + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $rst = 1; + $rst = $rst && $this->DB->delete( TB_board_contents, $whereqry, $whererow); + $rst = $rst && $this->DB->delete( TB_board_opinion, $whereqry, $whererow); + if( $rst ){ + $this->delFiles( "contents", array("cid"=>$cid) ); + unset($_SESSION['board_read_'.$this->board_info['board_id']."_".$cid]); + unset($_SESSION['board_secret_'.$this->board_info['board_id']."_".$cid]); + return 1; + } + return 0; + } + + function getContentsNum( $board_id ){ + $where = new DB_where("and"); + $where->add("board_id = ?", $board_id); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $sql = "select count(*) from ". TB_board_contents ." where {$whereqry}"; + $con_num = $this->DB->queryFirstField($sql, $whererow); + + return $con_num?:0; + } + + function getOpinionList($cid, $limit=array()){ //게시물 리스트 + $where = new DB_where("and"); + $where->add("board_id= ?", $this->board_info['board_id']); + $where->add("cid = ?", $cid); + +// if( !$this->isAdmin() ){ +// $where->add("state = %i", 1); +// } + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + //$sql = "select A.*, B.snum from ". TB_board_opinion ." as A left join (select uid as sid, count(*)-1 as snum from ". TB_board_opinion ." group by uid) as B on A.oid = B.sid where {$whereqry} order by uid asc, oid asc ". $this->DB->_limit($limit[0],$limit[1]); + $sql = $this->DB->addLimit("select A.*, B.snum from ". TB_board_opinion ." as A left join (select uid as sid, count(*)-1 as snum from ". TB_board_opinion ." group by uid) as B on A.oid = B.sid where {$whereqry}","uid asc, oid asc",$limit[0],$limit[1]); + $rst = $this->DB->qry($sql, $whererow); + $rows = array(); + while( $tmp = $this->DB->fetch_array($rst) ){ + $rows[] = $this->getFtOpinion($tmp); + } + return $rows; + } + + function getOpinionSubList($cid, $uid){ //게시물 리스트 + $where = new DB_where("and"); + $where->add("board_id = ?", $this->board_info['board_id']); + $where->add("cid = ?", $cid); + $where->add("uid = ?", $uid); + $where->add("oid != uid"); + +// if( !$this->isAdmin() ){ +// $where->add("state = ?", 1); +// } + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $sql = "select * from ". TB_board_opinion ." where {$whereqry} order by uid asc, oid asc"; + $rst = $this->DB->qry($sql, $whererow); + $rows = array(); + while( $tmp = $this->DB->fetch_array($rst) ){ + $rows[] = $this->getFtOpinion($tmp); + } + return $rows; + } + + function getOpinionPage($cid, $page=""){ //게시물 리스트(페이징) + $where = new DB_where("and"); + $where->add("board_id = ?", $this->board_info['board_id']); + $where->add("cid = ?", $cid); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $orderby = "uid asc, oid asc"; + $query = array( + "board_id" => $this->board_info['board_id'], + "cid" => $cid, + "viewnum" => $this->board_info['line_num'], + ); + + $lists = new clist(); + $lists->fld = "*"; + $lists->where = $whereqry; + $lists->whererow = $whererow; + $lists->orderby = $orderby; + $lists->url = $_SERVER['PHP_SELF']; + $lists->query = $query; + $lists->page = $page?:1; + $lists->linktype = ""; + $lists->viewnum = $query['viewnum']; + $lists->rownum = $this->board_info['page_num']; + $lists->getCommonList(TB_board_opinion); + + for( $a=0 ; $a<@count($lists->rows) ; $a++ ){; + $lists->rows[$a] = $this->getFtOpinion($lists->rows[$a]); + } + return $lists; + } + + function getOpinion( $cid, $oid ){ + $where = new DB_where("and"); + $where->add("board_id = ?", $this->board_info['board_id']); + $where->add("cid = ?", $cid); + $where->add("oid = ?", $oid); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $sql = "select * from ". TB_board_opinion ." where {$whereqry}"; + $row = $this->DB->queryFirstRow( $sql, $whererow ); + $row = $this->getFtOpinion($row); + return $row; + } + + function getFtOpinion( $row ){ //삭제 및 제한된 게시물조치 + switch( $row['state'] ){ + case "2" : + $row['opinion'] = "관리규정에 의해 제한 조치 됨"; + $row['uname'] = "None"; + break; + case "3" : + $row['opinion'] = "사용자 삭제"; + $row['uname'] = "None"; + break; + default : + $row['opinion'] = stripslashes($row['opinion']); + $row['uname'] = stripslashes($row['uname']); + break; + } + return $row; + } + + function putOpinion( $sqldata ){ + $sqlrow = array( + "board_id" => $this->board_info['board_id'], + "cid" => $sqldata['cid'], + "uid" => $sqldata['uid']?:0, + "idx" => $sqldata['idx']?:"", + "opinion" => $sqldata['opinion'], + "good" => 0, + "nogood" => 0, + "state" => $sqldata['state']?:1, + "member_id" => $GLOBALS['_Umem']['member_id'], + "uname" => $sqldata['uname'], + "passwd" => $this->lcrypt->pw_make($sqldata['passwd']), + "ip_addr" => get_ip(), + "reg_date" => $this->DB->sqleval("getdate()"), + "mod_date" => $this->DB->sqleval("getdate()"), + ); + + $rst = $this->DB->insert( TB_board_opinion, $sqlrow ); + if( $rst ){ + $oid = $this->DB->insertId(TB_board_opinion); + + /*의견글 갯수 확인*/ + $where = new DB_where("and"); + $where->add("board_id = ?", $this->board_info['board_id']); + $where->add("cid = ?", $sqldata['cid']); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $onum = $this->DB->queryFirstField("select count(*) from ". TB_board_opinion ." where {$whereqry}",$whererow); + + /*상위 의견글이 없으면 자신의 oid 를 상위 의견글로 지정*/ + if( !$sqldata['uid'] ){ + $sqlrow2 = array( + "uid" => $oid, + ); + $where->add("oid = ?", $oid); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $this->DB->update( TB_board_opinion, $sqlrow2, $whereqry, $whererow ); + } + + /*의견글 갯수 수정*/ + $sqlrow3 = array( + "onum" => $onum, + ); + $where = new DB_where("and"); + $where->add("board_id = ?", $this->board_info['board_id']); + $where->add("cid = ?", $sqldata['cid']); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $this->DB->update( TB_board_contents, $sqlrow3, $whereqry, $whererow ); + return $oid; + } + } + + function setOpinion( $sqldata ){ + $sqlrow = array( + "opinion" => $sqldata['opinion'], + "uname" => $sqldata['uname'], + "mod_date" => $this->DB->sqleval("getdate()"), + ); + $where = new DB_where("and"); + $where->add("board_id = ?", $this->board_info['board_id']); + $where->add("cid = ?", $sqldata['cid']); + $where->add("oid = ?", $sqldata['oid']); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $rst = $this->DB->update( TB_board_opinion, $sqlrow, $whereqry, $whererow); + if( $rst ){ + return $sqldata['oid']; + } + } + + function delOpinion( $sqldata ){ + $where = new DB_where("and"); + $where->add("board_id = ?", $this->board_info['board_id']); + $where->add("cid = ?", $sqldata['cid']); + $where->add("oid = ?", $sqldata['oid']); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + switch( $sqldata['mode'] ){ + case "rejOpinion": + $sqlrow = array( + "state" => "2", + ); + break; + case "delOpinion": + $sqlrow = array( + "state" => "3", + ); + break; + } + $rst = $this->DB->update( TB_board_opinion, $sqlrow, $whereqry, $whererow); + + return $rst; + } + + function getFiles( $cid ){ + $where = new DB_where("and"); + $where->add("board_id = ?", $this->board_info['board_id']); + $where->add("cid = ?", $cid); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $sql = "select * from ". TB_board_attach ." where {$whereqry} order by aid asc"; + $rows = $this->DB->query($sql, $whererow); + return $rows; + } + + function putFiles( $sqldata ){ + if( $sqldata['ATTFILES'] ){ + $_SFILES = \Frody\Util\MultiFileUpload::swfFormFileInfo($sqldata['ATTFILES'], _UP_PATH_TMP_, "N"); + $rst = 1; + for( $a = 0 ; $a<@count($_SFILES) ; $a++ ){ + $sqlrow = array( + "board_id" => $this->board_info['board_id'], + "cid" => $sqldata['cid'], + "gubun" => $sqldata['board_id']?:"", + "file_name" => addslashes($_SFILES[$a]['name']), + "file_size" => $_SFILES[$a]['size'], + "file_type" => $_SFILES[$a]['type'], + "file_width" => $_SFILES[$a]['width'], + "file_height" => $_SFILES[$a]['height'], + "reg_date" => $this->DB->sqleval("getdate()"), + ); + $rst = $this->DB->insert(TB_board_attach, $sqlrow); + if( $rst ){ + $aid = $this->DB->insertId(TB_board_attach); + } + + $upload_board_dir = _UP_PATH_."/board"; + if( !file_exists($upload_board_dir) ){ + mkdir($upload_board_dir); + } + $target_dir = $upload_board_dir."/{$this->board_info['board_id']}"; + if( !file_exists($target_dir) ){ + mkdir($target_dir); + } + $file_url = $this->getFileUrl($sqldata['cid'], $aid); + $file_dir = $this->getFileDir($sqldata['cid'], $aid); + + $sqldata['contents'] = preg_replace("/((http).*?){0,1}src_{$_SFILES[$a]['tmp_text']}/ims", $file_url, $sqldata['contents']); + $sqldata['contents'] = str_replace("ctrl_{$_SFILES[$a]['tmp_text']}", "ctrl_{$aid}", $sqldata['contents']); + + \Frody\Util\MultiFileUpload::swfMoveUploadedFile($_SFILES[$a]['tmp_name'], $file_dir); + } + $sqlrow = array( + "board_id" => $sqldata['board_id'], + "cid" => $sqldata['cid'], + "contents" => $sqldata['contents'], + ); + \Frody\Util\MultiFileUpload::swfCleanDir(_UP_PATH_TMP_); + return $this->setContentsParts($sqlrow); + } + } + + function getFileUrl( $cid, $aid ){ + $file_url = _SITE_INC_URL_."/getFile.php?gubun=board&board_id={$this->board_info['board_id']}&cid={$cid}&aid={$aid}"; + return $file_url; + } + + function getFileDir( $cid, $aid ){ + $upload_board_dir = _UP_PATH_."/board"; + if( !file_exists($upload_board_dir) ){ + mkdir($upload_board_dir); + } + $target_dir = $upload_board_dir."/{$this->board_info['board_id']}"; + if( !file_exists($target_dir) ){ + mkdir($target_dir); + } + $file_dir = "{$target_dir}/{$cid}_{$aid}_".strrev(md5("{$cid}_{$aid}")).".data"; + return $file_dir; + } + + function delFiles( $mode, $sqldata="" ){ + $target_dir = _UP_PATH_."/board/{$this->board_info['board_id']}"; + + $where = new DB_where("and"); + $where->add("board_id = ?", $this->board_info['board_id']); + if( $mode == "contents" ){ + $where->add("cid = ?", $sqldata['cid']); + } + if( $mode == "file" ){ + if( is_array($sqldata['aid']) ){ + $subwhere = $where->sub_where("or"); + foreach( (array)$sqldata['aid'] as $v ){ + $subwhere->add("aid = ?", $v); + } + }else{ + $where->add("aid = ?", $sqldata['aid']); + } + } + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $row = $this->DB->query("select * from ". TB_board_attach ." where {$whereqry}",$whererow); + foreach( $row as $val ){ + $tgt_file = "{$target_dir}/{$val['cid']}_{$val['aid']}_".strrev(md5("{$val['cid']}_{$val['aid']}")).".data"; + @unlink($tgt_file); + } + return $this->DB->delete(TB_board_attach, $whereqry, $whererow); + } + + function setCommonState( $sqldata ){ + if( $sqldata['oid'] ){ + return $this->setOpinionState( $sqldata ); + }else if( $sqldata['cid'] ){ + return $this->setContentsState( $sqldata ); + } + return 0; + } + + function addCommonGood( $sqldata ){ + if( $sqldata['oid'] ){ + return $this->addOpinionGood( $sqldata['cid'], $sqldata['oid'] ); + }else if( $sqldata['cid'] ){ + return $this->addContentsGood( $sqldata['cid'] ); + } + return 0; + } + + function addCommonNogood( $sqldata ){ + if( $sqldata['oid'] ){ + return $this->addOpinionNogood( $sqldata['cid'], $sqldata['oid'] ); + }else if( $sqldata['cid'] ){ + return $this->addContentsNogood( $sqldata['cid'] ); + } + return 0; + } + + function setContentsParts( $sqldata ){ + $cid = $sqldata['cid']; + unset($sqldata['cid']); + + $where = new DB_where('and'); + if( !$this->table_mode ){ + $where->add("board_id = ?", $this->board_info['board_id']); + } + $where->add('cid = ?', $cid); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + return $this->DB->update( TB_board_contents, $sqldata, $whereqry, $whererow); + } + + function setContentsState( $sqldata ){ + $sql_row = array( + "cid" => $sqldata['cid'], + "state" => $sqldata['state'], + ); + return $this->setContentsParts($sql_row); + } + + function addContentsViews( $cid ){ //조회수 증가 및 세션 생성 + if( !$_SESSION['board_read_'.$this->board_info['board_id']."_".$cid] ){ + $sql_row = array( + "cid" => $cid, + "views" => $this->DB->sqleval("views + 1"), + ); + + $rst = $this->setContentsParts($sql_row);; + if( $rst ){ + $this->setSessRead($cid); + return $rst; + } + } + return 0; + } + + function addContentsGood( $cid ){ + $sql_row = array( + "cid" => $cid, + "good" => $this->DB->sqleval("good + 1"), + ); + return $this->setContentsParts($sql_row); + } + + function addContentsNogood( $cid ){ + $sql_row = array( + "cid" => $cid, + "nogood" => $this->DB->sqleval("nogood + 1"), + ); + return $this->setContentsParts($sql_row); + } + + function getPrevContents( $cid, $num=1 ){ + $where = new DB_where('and'); + $where->add("board_id = ?", $this->board_info['board_id']); + $where->add('state = ?', 1); + $where->add('cid < ?', $cid); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + //$sql = "select * from ". TB_board_contents ." where {$whereqry} order by nid desc ". $this->DB->_limit(0,$num); + $sql = $this->DB->addLimit("select * from ". TB_board_contents ." where {$whereqry}","nid desc",0,$num); + $row = $this->DB->query($sql, $whererow); + return $row; + } + + function getNextContents( $cid, $num=1 ){ + $where = new DB_where('and'); + $where->add("board_id = ?", $this->board_info['board_id']); + $where->add('state = ?', 1); + $where->add('cid > ?', $cid); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + //$sql = "select * from (select * from ". TB_board_contents ." where {$whereqry} order by nid asc ". $this->DB->_limit(0,$num) .") as T order by nid desc"; + $sql = "select * from (". $this->DB->query("select * from ". TB_board_contents ." where {$whereqry}","nid asc",0,$num) .") as T order by nid desc"; + $row = $this->DB->query($sql, $whererow); + return $row; + } + + function getNearContents( $cid, $num){ + $row1 = $this->getNext( $cid, $num ); + $row2 = $this->getPrev( $cid, $num ); + + return array_merge($row1, $row2); + } + + function setOpinionState( $sqldata ){ + $sql_row = array( + "state" => $sqldata['state'] + ); + $where = new DB_where('and'); + $where->add("board_id = ?", $this->board_info['board_id']); + $where->add('cid = ?', $sqldata['cid']); + $where->add('oid = ?', $sqldata['oid']); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + return $this->DB->update( TB_board_opinion, $sql_row, $whereqry, $whererow); + } + + function addOpinionGood( $cid, $oid ){ + $sql_row = array( + "good" => $this->DB->sqleval("good + 1") + ); + $where = new DB_where('and'); + $where->add("board_id = ?", $this->board_info['board_id']); + $where->add('cid = ?', $cid); + $where->add('oid = ?', $oid); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + return $this->DB->update( TB_board_opinion, $sql_row, $whereqry, $whererow ); + } + + function addOpinionNogood( $cid, $oid ){ + $sql_row = array( + "nogood" => $this->DB->sqleval("nogood + 1") + ); + $where = new DB_where('and'); + $where->add("board_id = ?", $this->board_info['board_id']); + $where->add('cid = ?', $cid); + $where->add('oid = ?', $oid); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + return $this->DB->update( TB_board_opinion, $sql_row, $whereqry, $whererow ); + } + + function isMem(){ //회원권한이 있는지 확인 + return ($this->isMember() || $this->isBoardAdmin() || $this->isAdmin()); + } + + function isAdminAuth(){ //관리자권한이 있는지 확인 + return ($this->isBoardAdmin() || $this->isAdmin()); + } + + function useMemOnly($mode){ //회원전용체크. 권한이 있는 경우 1 리턴 + $mode = "{$mode}_level"; + if( !$this->board_info[$mode] || $this->isMem() ){ + return 1; + } + return 0; + } + + function useAdminOnly($mode){ //관리자전용체크. 권한이 있는 경우 1 리턴 + $mode = "{$mode}_level"; + if( !$this->board_info[$mode] || $this->isAdminAuth() ){ + return 1; + } + return 0; + } + + function chkUseOnly($mode){ //게시판 사용권한 있는지 체크. + switch( $this->board_info["{$mode}_level"] ){ + case "M": + return $this->useMemOnly($mode); + case "A": + return $this->useAdminOnly($mode); + } + return 1; + } + + function isBoardAdmin(){ //게시판 관리자 인지 체크 + if( $this->board_info['board_admin'] && $this->board_info['board_admin'] == $GLOBALS['_Umem']['member_id'] ){ + return 1; + } + return 0; + } + + function chkPasswd( $cid, $passwd ){ //게시물 비밀번호 체크 + $crow = $this->getContents($cid); + if( $this->isBoardAdmin() || $this->isAdmin() || $crow['passwd'] && $this->lcrypt->pw_match( $passwd, $crow['passwd'] ) ){ + $this->setSessSecret($cid); //세션생성 + return 1; + } + return 0; + } + + function chkOpinionPasswd( $cid, $oid, $passwd ){ //의견결 비밀번호 체크 + $orow = $this->getOpinion($cid, $oid); + if( $this->isBoardAdmin() || $this->isAdmin() || $orow['passwd'] && $this->lcrypt->pw_match( $passwd, $orow['passwd'] ) ){ + return 1; + } + return 0; + } + + function chkOpinionAdmin( $cid, $oid ){ //의견글 관리권한 체크 + $orow = $this->getOpinion($cid, $oid); + if( $this->isBoardAdmin() || $this->isAdmin() || $orow['member_id'] === $GLOBALS['_Umem']['member_id'] ){ + return 1; + } + return 0; + } + + function chkSecretAuth($crow){ //게시물 비밀번호 통과 권한이 있는지 체크 (소유자 포함) + if( !$crow ) return 0; + + if( is_numeric($crow) ){ + $crow = $this->getContents($crow); + }else if( is_object($crow) ){ + $crow = (Array)$crow; + } + + if( $_SESSION['board_secret_'.$this->board_info['board_id']."_".$crow['cid']] || $this->isAdminAuth() || $crow['member_id'] && $crow['member_id'] == $GLOBALS['_Umem']['member_id'] ){ + return 1; + } + return 0; + } + + function setSessRead( $cid ){ //게시물 조회 체크 세션 + $_SESSION['board_read_'.$this->board_info['board_id']."_".$cid] = 1; + } + + function setSessSecret( $cid ){ //게시물 비밀번호 체크 세션 + $_SESSION['board_secret_'.$this->board_info['board_id']."_".$cid] = 1; + } + + function chkHasImageFile( $sqldata ){ + if( $sqldata['ATTFILES'] ){ + $_SFILES = \Frody\Util\MultiFileUpload::swfFormFileInfo($sqldata['ATTFILES'], _UP_PATH_TMP_, "N"); + $rst = 1; + for( $a = 0 ; $a<@count($_SFILES) ; $a++ ){ + if( preg_match("/(\.|\/)(gif|jpe?g|png|svg)$/i", $_SFILES[$a]['name']) ){ + return 1; + } + } + } + return 0; + } + + function chkHasFile( $sqldata ){ + if( $sqldata['ATTFILES'] ){ + $_SFILES = \Frody\Util\MultiFileUpload::swfFormFileInfo($sqldata['ATTFILES'], _UP_PATH_TMP_, "N"); + $rst = 1; + for( $a = 0 ; $a<@count($_SFILES) ; $a++ ){ + if( !preg_match("/(\.|\/)(gif|jpe?g|png|svg)$/i", $_SFILES[$a]['name']) ){ + return 1; + } + } + } + return 0; + } + + function isAdmin(){ + if( $GLOBALS['_Umem']['member_auth'] && array_key_exists($GLOBALS['_Umem']['member_auth'], $GLOBALS['_varsAuthAdmin']) ){ + return true; + } + return false; + } + + function isMember(){ + if( $GLOBALS['_Umem']['member_id'] && $GLOBALS['_Umem']['member_status'] == 1 ){ + return true; + } + return false; + } +} \ No newline at end of file diff --git a/lib/app/cust.class.php b/lib/app/cust.class.php new file mode 100644 index 0000000..102ad2f --- /dev/null +++ b/lib/app/cust.class.php @@ -0,0 +1,127 @@ +DB->tableExists(TB_cust_list); + } + + public function getCustList($fields, $where=""){ + if( !$where ){ + $where = new DB_where("and"); + } + $where->add("cust_active = ?", 1); + $orderby="cust_name"; + $limit=array(); + + $rows = $this->getDataList($fields, $where, $orderby, $limit); + for( $a=0 ; $a<@count($rows) ; $a++ ){ + if( $rows[$a]['cust_phone'] ) $rows[$a]['cust_phone'] = $this->lcrypt->dec_secure($rows[$a]['cust_phone']); + if( $rows[$a]['cust_mail'] ) $rows[$a]['cust_mail'] = $this->lcrypt->dec_secure($rows[$a]['cust_mail']); + } + return $rows; + } + + public function getCustSelect($key, $val, $where=""){ + $rows = $this->getDataList("{$key}, {$val}", $where, "{$val} asc"); + $selrows = array(); + foreach( (array)$rows as $row ){ + $selrows[$row[$key]] = $row[$val]; + } + return $selrows; + } + + public function getCustPage($sqldata, $where=""){ + if( !$where ){ + $where = new DB_where("and"); + } + $where->add("cust_active = ?", 1); + + if( $sqldata['stxt'] ){ + $subwhere = $where->sub_where("or"); + if( $sqldata['sfld'] ){ + $subwhere->add("{$sqldata['sfld']} like ?", "%{$sqldata['stxt']}%"); + }else{ + $subwhere->add("cust_id like ?", "%{$sqldata['stxt']}%"); + $subwhere->add("cust_name like ?", "%{$sqldata['stxt']}%"); + $subwhere->add("cust_fullname like ?", "%{$sqldata['stxt']}%"); + $subwhere->add("cust_charger like ?", "%{$sqldata['stxt']}%"); + } + } + if( hasval($sqldata['cust_status']) ){ + $where->add("cust_status = ?", $sqldata['cust_status']); + } + + $orderby = "reg_date desc"; + if( $sqldata['ofld'] && $sqldata['oasc'] ){ + $orderby = "{$sqldata['ofld']} {$sqldata['oasc']}"; + } + + $query = array( + "mode" => $sqldata['mode'], + "viewnum" => $sqldata['viewnum'], + "page" => $sqldata['page'], + "sfld" => $sqldata['sfld'], + "stxt" => $sqldata['stxt'], + "ofld" => $sqldata['ofld'], + "oasc" => $sqldata['oasc'], + + "cust_status" => $sqldata['cust_status'], + ); + + $lists = $this->getDataPage("*", $query, $where ,$orderby); + for( $a=0 ; $a<@count($lists->rows) ; $a++ ){ + if( $lists->rows[$a]['cust_phone'] ) $lists->rows[$a]['cust_phone'] = $this->lcrypt->dec_secure($lists->rows[$a]['cust_phone']); + if( $lists->rows[$a]['cust_mail'] ) $lists->rows[$a]['cust_mail'] = $this->lcrypt->dec_secure($lists->rows[$a]['cust_mail']); + } + return $lists; + } + + public function getCust( $cust_id ){ + $urow = Array("cust_id" => $cust_id); + $where = ""; + $row = $this->getData("*", $urow, $where); + $row['cust_phone'] = $this->lcrypt->dec_secure($row['cust_phone']); + $row['cust_mail'] = $this->lcrypt->dec_secure($row['cust_mail']); + return $row; + } + + public function putCust( $sqldata ) { + if( $sqldata['cust_phone'] ){ + $sqldata['cust_phone'] = $this->lcrypt->enc_secure($sqldata['cust_phone']); + } + if( $sqldata['cust_mail'] ){ + $sqldata['cust_mail'] = $this->lcrypt->enc_secure($sqldata['cust_mail']); + } + return $this->putData($sqldata); + } + + public function setCust( $sqldata ) { + $cinfo = $this->getCust($sqldata['cust_id']); + if( $sqldata['cust_id'] && $cinfo['cust_id'] == $sqldata['cust_id'] ){ + if( $sqldata['cust_phone'] ){ + $sqldata['cust_phone'] = $this->lcrypt->enc_secure($sqldata['cust_phone']); + } + if( $sqldata['cust_mail'] ){ + $sqldata['cust_mail'] = $this->lcrypt->enc_secure($sqldata['cust_mail']); + } + $urow = Array("cust_id" => $sqldata['cust_id']); + $where = ""; + unset($sqldata['cust_id']); + return $this->setData($sqldata, $urow, $where); + }else{ + return $this->putCust( $sqldata ); + } + } + + public function setCustParts( $sqldata, $field="", $row="", $where="" ){ + return $this->setDataParts($sqldata, $field, $row, $where); + } + + public function delCust( $cust_id, $where ){ + $urow = Array("cust_id" => $cust_id); + $where = ""; + return $this->delData($urow, $where); + } + +} \ No newline at end of file diff --git a/lib/app/member.class.php b/lib/app/member.class.php new file mode 100644 index 0000000..bd99e19 --- /dev/null +++ b/lib/app/member.class.php @@ -0,0 +1,612 @@ +DB->tableExists(TB_member); + $this->DB->tableExists(TB_member_log); + $this->DB->tableExists(TB_member_union); + + $this->member_id = $member_id?:(isset($GLOBALS['_Umem']['member_id'])?$GLOBALS['_Umem']['member_id']:""); + + $this->TB = " (select mem.*, meu.cust_id, meu.cust_name from ". TB_member ." as mem left join ". TB_member_union . " as meu on mem.member_id = meu.member_id) as m "; + } + + public function getMemberList( $field="*", $where="", $orderby="", $limit=array() ){ + if( !$where ){ + $where = new DB_where("and"); + } + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + //$sql = "select {$field} from ".$this->TB." where {$whereqry} ".(($orderby)?"order by {$orderby}":""). $this->DB->_limit($limit[0],$limit[1]); + $sql = $this->DB->addLimit("select {$field} from ".$this->TB." where {$whereqry}", $orderby, $limit[0],$limit[1]); + $rst = $this->DB->qry($sql, $whererow); + $row = array(); + while( $tmp = $this->DB->fetch_array($rst) ){ + $row[] = $this->getMemberInfo($tmp); + } + return $row; + } + + public function getMemberSel( $field="*", $where="", $orderby="", $limit=array() ){ + if( !$where ){ + $where = new DB_where("and"); + } + $where->add("member_status = ?",1); + + $mlist = $this->getMemberList("member_id, part_name",$where,"part_name, member_name asc", $limit); + $mem_list = array(); + for( $a=0 ; $a<@count($mlist) ; $a++ ){ + $mem_list[] = array( + "id" => $mlist[$a]['member_id'], + "text" => $mlist[$a]['part_name'], + ); + } + return $mem_list; + } + + public function getMemberSelect($key, $val, $where=""){ + $rows = $this->getMemberList("{$key}, {$val}", $where, "member_name asc"); + $selrows = array(); + foreach( (array)$rows as $row ){ + $selrows[$row[$key]] = $row[$val]; + } + return $selrows; + } + + public function getMemberPage($sqldata=array(), $query=array(), $where=""){ //관리자 리스트 (페이징) + if( !$where ){ + $where = new DB_where("and"); + } + + $where->add("reg_date >= ?", ($sqldata['sdate']?$sqldata['sdate']:_SDATENULL_)." 00:00:00.000"); + $where->add("reg_date <= ?", ($sqldata['fdate']?$sqldata['fdate']:_FDATENULL_)." 23:59:59.999"); + + if( $sqldata['stxt'] ){ + $subwhere = $where->sub_where("or"); + if( $sqldata['sfld'] ){ + $subwhere->add("{$sqldata['sfld']} like ?", "%{$sqldata['stxt']}%"); + }else{ + $subwhere->add("member_id like ?", "%{$sqldata['stxt']}%"); + $subwhere->add("member_name like ?", "%{$sqldata['stxt']}%"); + } + } + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $orderby = "reg_date desc"; + if( $sqldata['ofld'] && $sqldata['oasc'] ){ + $orderby = "{$sqldata['ofld']} {$sqldata['oasc']}"; + } + + $query = array_merge(array( + "mode" => $sqldata['mode'], + "viewnum" => $sqldata['viewnum'], + "sdate" => $sqldata['sdate']?:"", + "fdate" => $sqldata['fdate']?:"", + "sfld" => $sqldata['sfld'], + "stxt" => $sqldata['stxt'], + "ofld" => $sqldata['ofld'], + "oasc" => $sqldata['oasc'], + ), $query); + + $lists = new clist(); + $lists->fld = "*"; + $lists->where = $whereqry; + $lists->whererow = $whererow; + $lists->orderby = $orderby; + $lists->url = $_SERVER['PHP_SELF']; + $lists->query = $query; + $lists->page = $sqldata['page']?:1; + $lists->linktype = ""; + $lists->viewnum = $query['viewnum']?:$GLOBALS['_varsBaseCode']['line_num']; + $lists->rownum = $query['rownum']?:$GLOBALS['_varsBaseCode']['page_num']; + $lists->getCommonList($this->TB); + + for( $a=0 ; $a<@count($lists->rows) ; $a++ ){ + $lists->rows[$a] = $this->getMemberInfo($lists->rows[$a]); + } + + return $lists; + } + + public function getMemberLogList($field="*",$where="", $orderby="",$limit=array()){ //관리자 리스트 + $tbl = "(select L.*, M.member_name, M.company_name from ".TB_member_log." as L left join ".TB_member." as M on L.member_id = M.member_id) as L"; + + if( !$where ){ + $where = new DB_where("and"); + } + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + //$sql = "select {$field} from {$tbl} where {$whereqry} ".(($orderby)?"order by {$orderby}":""). $this->DB->_limit($limit[0],$limit[1]); + $sql = $this->DB->addLimit("select {$field} from {$tbl} where {$whereqry}", $orderby, $limit[0],$limit[1]); + $rst = $this->DB->qry($sql, $whererow); + $row = array(); + while( $tmp = $this->DB->fetch_array($rst) ){ + $tmp['login_date'] = getDT_datetime($tmp['login_date']); + $row[] = $tmp; + } + return $row; + } + + public function getMemberLogPage($sqldata=array(), $query=array(), $where=""){ //관리자 리스트 (페이징) + $tbl = "(select L.*, M.member_name from ".TB_member_log." as L left join ".TB_member." as M on L.member_id = M.member_id) as L"; + + if( !$where ){ + $where = new DB_where("and"); + } + + $where->add("login_date >= ?", ($sqldata['sdate']?$sqldata['sdate']:_SDATENULL_)." 00:00:00.000"); + $where->add("login_date <= ?", ($sqldata['fdate']?$sqldata['fdate']:_FDATENULL_)." 23:59:59.999"); + + if( $sqldata['stxt'] ){ + $subwhere = $where->sub_where("or"); + if( $sqldata['sfld'] ){ + $subwhere->add("{$sqldata['sfld']} like ?", "%{$sqldata['stxt']}%"); + }else{ + $subwhere->add("member_id like ?", "%{$sqldata['stxt']}%"); + $subwhere->add("member_name like ?", "%{$sqldata['stxt']}%"); + $subwhere->add("ip_addr like ?", "%{$sqldata['stxt']}%"); + $subwhere->add("browser like ?", "%{$sqldata['stxt']}%"); + $subwhere->add("con_domain like ?", "%{$sqldata['stxt']}%"); + $subwhere->add("OS like ?", "%{$sqldata['stxt']}%"); + } + } + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $orderby = "login_date desc"; + if( $sqldata['ofld'] && $sqldata['oasc'] ){ + $orderby = "{$sqldata['ofld']} {$sqldata['oasc']}"; + } + + $query = array_merge(array( + "mode" => $sqldata['mode'], + "viewnum" => $sqldata['viewnum'], + "sdate" => $sqldata['sdate']?:"", + "fdate" => $sqldata['fdate']?:"", + "sfld" => $sqldata['sfld'], + "stxt" => $sqldata['stxt'], + "ofld" => $sqldata['ofld'], + "oasc" => $sqldata['oasc'], + ), $query); + + $lists = new clist(); + $lists->fld = "*"; + $lists->where = $whereqry; + $lists->whererow = $whererow; + $lists->orderby = $orderby; + $lists->url = $_SERVER['PHP_SELF']; + $lists->query = $query; + $lists->page = $sqldata['page']?:1; + $lists->linktype = ""; + $lists->viewnum = $query['viewnum']?:$GLOBALS['_varsBaseCode']['line_num']; + $lists->rownum = $query['rownum']?:$GLOBALS['_varsBaseCode']['page_num']; + $lists->getCommonList($tbl); + + for( $a=0 ; $a<@count($lists->rows) ; $a++ ){ + $lists->rows[$a]['login_date'] = getDT_datetime($lists->rows[$a]['login_date']); + } + + return $lists; + } + + public function getMember( $member_id="", $where="" ) { + $member_id = $member_id?:$this->member_id; + + if( !$member_id ) return 0; + + if( !$where ){ + $where = new DB_where("and"); + } + $where->add("member_id = ?",$member_id); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $this->DB->query_record = false; //query log 기록 금지 + + $sql = "select * from ".$this->TB." where {$whereqry}"; + $rst = $this->DB->qry($sql, $whererow); + $row = $this->DB->fetch_array($rst); + $row = $this->getMemberInfo($row); + + $where = new DB_where("and"); + $where->add("member_id = ?",$member_id); + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + if( $this->isAdmin() ){ //관리자의 경우 회원의 마지막 로그인 정보를 주고, 일반회원은 자신의 현재 로그인 이전의 로그인 정보를 준다. + $sql = "select login_date as last_login, ip_addr as last_ip from ".TB_member_log." where {$whereqry} order by login_date desc"; + $rst = $this->DB->qry($sql, $whererow); + $lrow = $this->DB->fetch_array($rst); + $row['login_ip'] = $lrow['last_ip']?:""; + $row['login_date'] = $lrow['last_login']; + } + + $this->DB->query_record = true; //query log 기록 재개 + + return $row; + } + + public function getMemberWhere( $wrow ) { + $where = new DB_where("and"); + foreach( $wrow as $key => $val ){ + $where->add("{$key} = ?",$val); + } + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $sql = "select * from ".$this->TB." where {$whereqry}"; + $rst = $this->DB->qry($sql, $whererow); + $row = $this->getMemberInfo($this->DB->fetch_array($rst)); + + return $row; + } + + public function getMemberInfo( $row ){ + if( isset($row['member_mobile']) && $row['member_mobile'] ) $row['member_mobile'] = $this->lcrypt->dec_secure($row['member_mobile']); + if( isset($row['member_mail']) && $row['member_mail'] ) $row['member_mail'] = $this->lcrypt->dec_secure($row['member_mail']); + if( isset($row['member_phone']) && $row['member_phone'] ) $row['member_phone'] = $this->lcrypt->dec_secure($row['member_phone']); + + return $row; + } + + public function putMember( $sqldata=array() ) { //가입 + if( $this->DB->tableExists( TB_member ) ){ + $sql_row = array( + "member_id" => $sqldata['member_id']?:"", + "member_pw" => $sqldata['member_pw']?$this->lcrypt->pw_make($sqldata['member_pw']):"", + "member_name" => $sqldata['member_name']?:"", + "member_mobile" => $sqldata['member_mobile']?$this->lcrypt->enc_secure($sqldata['member_mobile']):"", + "member_mail" => $sqldata['member_mail']?$this->lcrypt->enc_secure($sqldata['member_mail']):"", + "member_certi_key" => $sqldata['member_certi_key']?:"", + "member_status" => $sqldata['member_status']?:1, + "member_auth" => $sqldata['member_auth']?:"", + "reg_date" => $this->DB->sqleval("getdate()"), + "mod_date" => $this->DB->sqleval("getdate()"), + ); + + return $this->DB->insert( TB_member, $sql_row); + } + return 0; + } + + public function setMember( $sqldata ) { //정보 수정 + if( !$this->isAdmin() ){ + $sqldata['member_id'] = $GLOBALS['_Umem']['member_id']; + } + $sql_row = array( + "member_name" => $sqldata['member_name'], + "member_mobile" => $sqldata['member_mobile']?$this->lcrypt->enc_secure($sqldata['member_mobile']):"", + "member_mail" => $sqldata['member_mail']?$this->lcrypt->enc_secure($sqldata['member_mail']):"", + "mod_date" => $this->DB->sqleval("getdate()"), + ); + if( $this->isAdmin() ){ + if( $sqldata['member_certi_key'] ){ + $sql_row['member_certi_key'] = $sqldata['member_certi_key']; + } + } + if( $sqldata['member_status'] ){ + $sql_row['member_status'] = $sqldata['member_status']; + } + if( $sqldata['member_auth'] ){ + $sql_row['member_auth'] = $sqldata['member_auth']; + } + if( $sqldata['member_pw'] ){ + $sql_row["member_pw"] = $this->lcrypt->pw_make($sqldata['member_pw']); + } + + return $this->DB->update( TB_member, $sql_row, "member_id = ?", array($sqldata['member_id'])); + } + + public function setMemberParts( $sqldata ){ + if( !$sqldata['member_id'] || $GLOBALS['_Umem']['member_id'] && !$this->isAdmin() ){ + $sqldata['member_id'] = $GLOBALS['_Umem']['member_id']; + } + $where = new DB_where("and"); + if( is_array($sqldata['member_id']) ){ + //$where->add("member_id in ?",$sqldata['member_id']); + $subwhere = $where->sub_where("or"); + foreach( $sqldata['member_id'] as $val ){ + $subwhere->add("member_id = ?",$val); + } + }else{ + $where->add("member_id = ?",$sqldata['member_id']); + } + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + unset($sqldata['member_id']); + return $this->DB->update( TB_member, $sqldata, $whereqry, $whererow ); + } + + public function delMember( $member_id ) { //회원 삭제 + if( $this->isAdmin() ){ + $where = new DB_where("and"); + $where->add("member_id = ?",$member_id); + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + return $this->DB->delete( TB_member, $whereqry, $whererow ); + } + return 0; + } + + public function getMemberUnion($member_id, $where=""){ + if( !$where ){ + $where = new DB_where("and"); + } + $where->add("member_id = ?", $member_id); + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $sql = "select * from ".TB_member_union." where {$whereqry}"; + return $this->DB->queryFirstRow($sql, $whererow); + } + + public function putMemberUnion($sqldata){ + $sql_row = Array( + "member_id" => $sqldata['member_id'], + "cust_id" => $sqldata['cust_id']?:"", + "cust_name" => $sqldata['cust_name']?:"", + ); + return $this->DB->insert(TB_member_union, $sql_row); + } + + public function setMemberUnion($sqldata){ + $sql_row = Array( + "member_id" => $sqldata['member_id'], + "cust_id" => $sqldata['cust_id']?:"", + "cust_name" => $sqldata['cust_name']?:"", + ); + + $uinfo = $this->getMemberUnion($sql_row['member_id']); + if( $uinfo['member_id'] && $uinfo['member_id'] == $sql_row['member_id'] ){ + $where = new DB_where("and"); + $where->add("member_id = ?", $sql_row['member_id']); + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + return $this->DB->update(TB_member_union, $sql_row, $whereqry, $whererow); + }else{ + return $this->putMemberUnion($sql_row); + } + } + + public function delMemberUnion($member_id){ + $where = new DB_where("and"); + $where->add("member_id = ?", $member_id); + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + return $this->DB->delete(TB_member_union, $whereqry, $whererow); + } + + public function active( $member_id ) { //활동 + return $this->setMemberParts( array( + "member_id" => $member_id, + "member_status" => 1 + )); + } + + public function pause( $member_id ) { //임시정지 + return $this->setMemberParts( array( + "member_id" => $member_id, + "member_status" => 2 + )); + } + + public function withdraw( $member_id ) { //탈퇴 / 퇴사처리 + return $this->setMemberParts( array( + "member_id" => $member_id, + "member_status" => 3 + )); + } + + public function join( $sqldata ) { //가입 + return $this->putMember( $sqldata ); + } + + public function login($member_id, $member_pw) { // 로그인 + $result = 0; + if( !$member_id || !$member_pw ){ + return $result; + } + + $row = $this->pwCheck($member_id, $member_pw); + if( $row ){ + if( $row['member_status'] == 1 && $row['member_auth'] ){ + $_SESSION['auth_mem_id'] = $member_id; + + // 로그인 시점의 microtime + list ( $usec, $sec ) = explode ( " ", microtime () ); + $rand_no = rand ( 100000, 999999 ); + $login_security_key = str_replace ( '.', '', get_ip() ) . $sec . str_replace ( '.', '', $usec ) . $rand_no; + $_SESSION['auth_login_security_key'] = $login_security_key; + //$result = $row; //가입요청 및 임시중지등 등록된 회원 상태를 알리기 위해 if 밖으로 조정 + + if( class_exists("Visit") && $_SESSION['visit_sess'] ){ //방문세션이 존재하면 방문세션 테이블에 ID를 기록한다. + $vsobj = new Visit(); + $vsobj->setLoginRec(); + } + } + $result = $row; + } + + return $result; + } + + public function loginAforce($member_id) { // 관리자용 회원 강제 로그인 + $result = 0; + if( !$member_id || !$this->isAdmin() ){ + return $result; + } + + $row = $this->getMember($member_id); + if( $row['member_id'] ){ + $where = new DB_where("and"); + $where->add("member_id = ?",$member_id); + $where->add("login_success = ?",1); + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + //$sql = "select login_security_key from ".TB_member_log." where {$whereqry} order by login_date desc ".$this->DB->_limit(0,1); + $sql = $this->DB->addLimit("select login_security_key from ".TB_member_log." where {$whereqry}","login_date desc",0,1); + $login_security_key = $this->DB->queryFirstField($sql,$whererow); + + $_SESSION['auth_mem_id'] = $member_id; + $_SESSION['auth_login_security_key'] = $login_security_key; + + $result = 1; + }else{ + $result = 0; + } + + return $result; + } + + public function pwCheck( $member_id, $member_pw ){ //비밀번호 체크 + $row = $this->getMember($member_id); + if( $row['member_pw'] ){ + if( $this->lcrypt->pw_match($member_pw, $row['member_pw']) ){ + return $row; + } + } + return 0; + } + + public function logout(){ //로그아웃 + //session_destroy(); + $_SESSION['auth_mem_id'] = ""; + $_SESSION['auth_login_security_key'] = ""; + return 1; + } + + public function logRec( $member_id, $login_page, $log_rst ){ //로그인 기록 + $result = 0; + if( $this->DB->tableExists( TB_member_log ) ){ + $where = new DB_where("and"); + $where->add("member_id = ?",$member_id); + $where->add("login_success = ?",1); + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + //자신의 현재 로그인 이전의 로그인 정보를 기록한다. + $crow = $this->DB->queryFirstRow( "select count(*)+1 as login_count from ".TB_member_log." where {$whereqry}", $whererow ); + $lrow = $this->DB->queryFirstRow( "select top 1 login_date, ip_addr as last_ip from ".TB_member_log." where {$whereqry} order by login_date desc", $whererow ); + $sql_row = array( + "member_id" => $member_id, + "login_count" => $crow['login_count']?:0, + "login_ip" => $lrow['last_ip']?:"", + "login_date" => getDT_datetime($lrow['login_date']), + ); + $this->setMemberParts($sql_row); + + $connect_info = parse_user_agent(); + if( is_array($connect_info['browser']) ){ + $connect_info['browser'] = substr(json_encode($connect_info['browser']),0,40); + } + $sql_row = array( + "member_id" => $member_id, + "ip_addr" => get_ip(), + "login_page" => $login_page, + "login_success" => $log_rst?1:0, + "login_date" => $this->DB->sqleval("getdate()"), + "login_security_key" => $_SESSION['auth_login_security_key']?:"", + "sess_file_name" => session_id(), + "browser" => "{$connect_info['browser']} | {$connect_info['version']}", + "con_domain" => $_SERVER['HTTP_HOST']?:"", + "os" => $connect_info['platform']?:"", + "os_bit" => "" + ); + $result = $this->DB->insert( TB_member_log, $sql_row); + } + return $result; + } + + public function loginCheck( $member_id="" ){ //로그인 체크 + $member_id = $member_id?:$_SESSION['auth_mem_id']; + if( $member_id ){ + if( !defined('_SINGLE_LOGIN_') || !_SINGLE_LOGIN_ || _SINGLE_LOGIN_ && $this->multiLoginBlock() ){ + $row = $this->getMember( $member_id ); + unset($row['member_pw']); + return $row; + }else{ + return $this->logout(); + } + } + return 0; + } + + public function multiLoginBlock(){ //멀티 로그인 차단 + $where = new DB_where("and"); + $where->add("member_id = ?",$GLOBALS['_Umem']['member_id']); + $where->add("login_success = ?",1); + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + //$sql = "select login_security_key from ".TB_member_log." where {$whereqry} order by login_date desc ".$this->DB->_limit(0,1); + $sql = $this->DB->addLimit("select login_security_key from ".TB_member_log." where {$whereqry}","login_date desc",0,1); + $match_login_security_key = $this->DB->queryFirstField($sql,$whererow); + + if( $match_login_security_key == $_SESSION['auth_login_security_key'] ){ + return 1; + } + return 0; + } + + public function temp_pw_gen( $len=0 ){ //임시비밀번호 생성 + if( $len < 1 ) $len = 8; + $str = 'abcdefghijklmnopqrstuvwxyz0123456789!@#$%&*ABCDEFGHIJKLMNOPQRSTUVWXYZ'; + $temp_pw = ""; + for($i=0; $i<$len; $i++) { + $temp_pw .= $str[random_int(0, strlen($str)-1)]; + } + return $temp_pw; + } + + public function isAdmin($admin_id="", $suonly=""){ //관리 권한 있는지 확인 + if( !$admin_id || $admin_id && $admin_id == $GLOBALS['_Umem']['member_id'] ){ + $arow = $GLOBALS['_Umem']; + }else{ + $arow = $this->getMember($admin_id); + } + + if( $suonly ){//기준정보에서 SA 코드자체를 변경할수 있으므로 suonly 는 사용에 주의 + $adminrow = array("SA"); + }else{ + if( is_array($GLOBALS['_varsAuthAdmin']) ){ + $adminrow = array_keys($GLOBALS['_varsAuthAdmin']); + }else{ + $adminrow = array("SA","A"); + } + } + + if( in_array($arow['member_auth'], $adminrow) ){ + return true; + }else{ + return false; + } + } +} \ No newline at end of file diff --git a/lib/app/menu.class.php b/lib/app/menu.class.php new file mode 100644 index 0000000..89b6cbf --- /dev/null +++ b/lib/app/menu.class.php @@ -0,0 +1,453 @@ +DB->tableExists(TB_menu_auth_page); + + $this->set_cate_area(); + $this->AUTH = new Auth(); + } + + public function getMenuList($usage="Y"){ + $where = new DB_where("and"); + $where->add("cate.cate_area = ?", $this->cate_area); + if( $usage ){ + $where->add("cate_use = ?", "Y"); + } + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $sql = "select * from {$this->cate_table} where cate_area = '{$this->cate_area}' and cate_use != 'Y'"; + $notuse_row = $this->DB->query($sql); + $use_fld = array(); + foreach( (array)$notuse_row as $nrow ){ + $use_fld[] = " cate.cate_code like '{$nrow['cate_code']}%' "; + } + if( count($use_fld) ){ + $add_fld = implode(" or ", $use_fld); + }else{ + $add_fld = " 1!=1 "; + } + + $sql = "select + cate.cate_area, + cate.cate_id, + cate.cate_code, + cate.cate_name, + case when ({$add_fld}) then 'N' else 'Y' end as cate_use + from {$this->cate_table} as cate + left join (select * from {$this->cate_table} where cate_area = '{$this->cate_area}') pa_cate + on substring(cate.cate_code, 1, len(cate.cate_code)-{$this->dmax}) = pa_cate.cate_code + where {$whereqry} order by cate.cate_code asc"; + + $rst = $this->DB->qry($sql, $whererow); + if( $rst ){ + $rows = array(); + while( $row = $this->DB->fetch_array($rst) ){ + $row['level'] = $this->level_cate($row['cate_code']); + $rows[] = Array( + "id" => $row['cate_id'], + "text" => $row['cate_name'], + "parent" => $row['parent'], + "icon" => "", + "data" => $row, + ); + } + return $rows; + }else{ + return 0; + } + } + + public function getMenuAuthList($usage="Y"){ + $where = new DB_where("and"); + $where->add("cate.cate_area = ?", $this->cate_area); + if( $usage ){ + $where->add("cate_use = ?", "Y"); + } + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + /* + $sql = "select + cate.cate_id as id, + cate.cate_code as data, + ifnull(pa_cate.cate_id, '#') as parent, + cate.cate_name as text, + case cate.cate_auth when 'Y' then '' else '' end as icon + from {$this->cate_table} as cate + left join pa_cate + on substring(cate.cate_code, 1, LENGTH(cate_code)-{$this->dmax}) = pa_cate.cate_code where {$whereqry} order by cate.cate_code asc";*/ + + /* 쿼리 2번 실행 */ + $sql = "select cate_area, cate_id, auth_area, auth_target, auth from ".TB_auth_manage." where cate_area = '{$this->cate_area}'"; + $rows = $this->DB->query($sql); + + $auths = array(); + foreach( (array)$rows as $auth ){ + if( !isset($auths[$auth['cate_id']]) ) $auths[$auth['cate_id']] = array(); + if( !isset($auths[$auth['cate_id']][$auth['auth_area']]) ) $auths[$auth['cate_id']][$auth['auth_area']] = array(); + + $auths[$auth['cate_id']][$auth['auth_area']][$auth['auth_target']] = $auth['auth']; + } + + $sql = "select + cate.cate_area, + cate.cate_id, + cate.cate_code, + cate.cate_name, + cate.cate_data, + cate.cate_exp, + cate.cate_class, + cate.cate_auth, + cate.cate_use, + isnull(pa_cate.cate_id, '#') as parent, + pages.cate_filepath + from {$this->cate_table} as cate + left join (select cate_area, cate_id, stuff(( select char(13)+ tagg.filepath from ".TB_menu_auth_page." as tagg where tagg.cate_area = tmap.cate_area for xml path(''), type).value('.','varchar(max)'),1,1,'') as cate_filepath from ".TB_menu_auth_page." as tmap group by cate_area, cate_id) as pages + on cate.cate_area = pages.cate_area and cate.cate_id = pages.cate_id + left join (select cate_id, cate_code from {$this->cate_table} where cate_area = '{$this->cate_area}') pa_cate + on substring(cate.cate_code, 1, len(cate.cate_code)-{$this->dmax}) = pa_cate.cate_code + where {$whereqry} order by cate.cate_code asc"; + + //string_agg 대체 + //stuff(( select char(13)+ tagg.filepath from ".TB_menu_auth_page." as tagg where tagg.cate_area = tmap.cate_area for xml path(''), type).value('.','varchar(max)'),1,1,'') as cate_filepath + //cate_filepath=stuff(( select char(13)+ tagg.filepath from ".TB_menu_auth_page." as tagg where tagg.cate_area = tmap.cate_area for xml path(''), type).value('.','varchar(max)'),1,1,'') + // + //string_agg(filepath,CHAR(13)) as cate_filepath + + /* 서브쿼리 이용 + $sql = "select + cate.cate_area, + cate.cate_id, + cate.cate_code, + cate.cate_name, + cate.cate_data, + cate.cate_exp, + cate.cate_class, + cate.cate_auth, + isnull(pa_cate.cate_id, '#') as parent + from {$this->cate_table} as cate + left join (select * from {$this->cate_table} where cate_area = '{$this->cate_area}') as pa_cate + on substring(cate.cate_code, 1, len(cate.cate_code)-{$this->dmax}) = pa_cate.cate_code + left join (select cate_area, cate_id, auth_area, string_agg(concat(auth_target,':',auth),',') as auths from ".TB_auth_manage." group by cate_area, cate_id, auth_area ) as auth + on cate.cate_area = auth.cate_area and cate.cate_id = auth.cate_id + where cate.cate_area = '{$this->cate_area}' group by cate.cate_area, cate.cate_id, auth_area order by cate.cate_code asc";*/ + + + $rst = $this->DB->qry($sql, $whererow); + if( $rst ){ + $rows = array(); + while( $row = $this->DB->fetch_array($rst) ){ +// foreach( $GLOBALS['_varsAuthArea'] as $auth_area => $name ){ +// $row['cate_auth_read'][$auth_area] = $authObj->getHasAuthRow($auths[$row['cate_id']][$auth_area], "READ"); +// $row['cate_auth_write'][$auth_area] = $authObj->getHasAuthRow($auths[$row['cate_id']][$auth_area], "WRITE"); +// $row['cate_auth_delete'][$auth_area] = $authObj->getHasAuthRow($auths[$row['cate_id']][$auth_area], "DELETE"); +// } + + $row['auth'] = $auths[$row['cate_id']]; + $rows[] = Array( + "id" => $row['cate_id'], + "text" => $row['cate_name'], + "parent" => $row['parent'], + "icon" => "", + "data" => $row, + ); + } + return $rows; + }else{ + return 0; + } + } + + public function getTreeList($cate_code="", $direct=false){ + $temp_ren = strlen($cate_code) + $this->dmax; + + $where = $this->getAreaQry(); + $where = $this->getShowQry($where); + $where->add("cate_code like ?", "{$cate_code}%"); + $where->add("cate_code != ?", $cate_code); + $where->add("len(cate_code) = ?", $temp_ren); + $where->add("cate.cate_use = ?", "Y"); + $subwhere = $where->sub_where("or"); + $subwhere->add("auth.auth_read = ?", 1); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $tb_auth = "select + cate_id, + cast(sum(auth & 4) as bit) as auth_delete, + cast(sum(auth & 2) as bit) as auth_write, + cast(sum(auth & 1) as bit) as auth_read + from ".TB_auth_manage." + where (auth_area = 'G' and auth_target = '".$GLOBALS['_Umem']['member_auth']."') or (auth_area = 'M' and auth_target = '".$GLOBALS['_Umem']['member_id']."') + group by cate_id"; + + $sql = "select cate.cate_id, cate_code, cate_name, cate_data, cate_exp, cate_class from {$this->cate_table} as cate + left join ({$tb_auth}) as auth on cate.cate_id = auth.cate_id + where {$whereqry} order by cate_code"; + $rst = $this->DB->qry($sql, $whererow); + $i = 0; + $rows = Array(); + while( $row = $this->DB->fetch_array($rst) ){ + if( !$direct ){ + $row['child'] = $this->getTreeList($row['cate_code']); + } + $rows[] = $row; + } + return $rows; + } + + public function getTreeListForTreeView($cate_code="", $now_code=""){ + $temp_ren = strlen($cate_code) + $this->dmax; + + $where = $this->getAreaQry(); + $where = $this->getShowQry($where); + $where->add("cate.cate_code like ?", "{$cate_code}%"); + $where->add("cate.cate_code != ?", $cate_code); + $where->add("len(cate.cate_code) = ?", $temp_ren); + $where->add("cate.cate_use = ?", "Y"); + $subwhere = $where->sub_where("or"); + $subwhere->add("auth.auth_read = ?", 1); + $subwhere->add("'SA' = ?", $GLOBALS['_Umem']['member_auth']); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $tb_auth = "select + cate_id, + cast(sum(auth & 4) as bit) as auth_delete, + cast(sum(auth & 2) as bit) as auth_write, + cast(sum(auth & 1) as bit) as auth_read + from ".TB_auth_manage." + where (auth_area = 'G' and auth_target = '".$GLOBALS['_Umem']['member_auth']."') or (auth_area = 'M' and auth_target = '".$GLOBALS['_Umem']['member_id']."') + group by cate_id"; + + $sql = "select + cate.cate_id, + cate.cate_code, + cate.cate_name, + cate.cate_data, + cate.cate_exp, + cate.cate_class + from {$this->cate_table} as cate + left join ({$tb_auth}) as auth + on cate.cate_id = auth.cate_id + where {$whereqry} order by cate.cate_code"; + $rst = $this->DB->qry($sql, $whererow); + $i = 0; + $rows = Array(); + while( $row = $this->DB->fetch_array($rst) ){ + $children = $this->getTreeListForTreeView($row['cate_code'], $now_code); + $temp = array( + "id" => $row['cate_id'], + "key" => $row['cate_id'],// + "text" => $row['cate_name'], + "title" => $row['cate_name'],// + "href" => $row['cate_data'], + "icon" => $row['cate_class'], + "selectable" => 0, + "state" => array("expanded"=>false), + "tags" => [''], + "nodes" => $children?:"", + "children" => $children?:"",// + "folder" => $children?true:false,// + ); + if( preg_match( "/^{$row['cate_code']}/", $now_code ) ){ + $temp['state']['expanded'] = true; + $temp['expanded'] = true;// + } + if( $row['cate_code'] == $now_code ){ + $temp['state']['selected'] = true; + $temp['active'] = true;// + } + $rows[] = $temp; + } + return $rows; + } + + public function putMenu($sqldata, $auth_area){ + /* 권한 추가 */ + foreach( (array)$this->authDest as $grpcode => $grpname ){ + $readAuth = in_array($grpcode, (array)$sqldata['cate_auth_read']); + $writeAuth = in_array($grpcode, (array)$sqldata['cate_auth_write']); + $deleteAuth = in_array($grpcode, (array)$sqldata['cate_auth_delete']); + + $this->AUTH->putAuth( + $this->cate_area, + $sqldata['cate_id'], + $auth_area, + $grpcode, + $this->AUTH->getAuthToNum($readAuth, $writeAuth, $deleteAuth) + ); + } + + /* 메뉴 등록 */ + $sql_row = Array( + "cate_area" => $this->cate_area, + "cate_id" => $sqldata['cate_id']?:"", + "cate_name" => $sqldata['cate_name']?:"", + "cate_data" => $sqldata['cate_data']?:"", + "cate_exp" => $sqldata['cate_exp']?:"", + "cate_class" => $sqldata['cate_class']?:"", + "cate_auth" => $sqldata['cate_auth']?:"", + "cate_use" => $sqldata['cate_use']?:"", + ); + + $pa_row = $this->cate_info_id($sqldata['parent_id']); + $cate_code = $this->new_cate($pa_row['cate_code']); + $sql_row['cate_code'] = $cate_code; + + $rst = $this->DB->insert($this->cate_table, $sql_row); + if( $rst ){ + $auth_filepath = explode("\n",preg_replace("\r\n","\n",$sqldata['cate_filepath'])); + foreach( (array)$auth_filepath as $path ){ + if( trim($path) ){ + $sql_row = Array( + "cate_area" => $this->cate_area, + "cate_id" => $sqldata['cate_id']?:"", + "filepath" => $path, + ); + $this->DB->insert(TB_menu_auth_page, $sql_row); + } + } + } + return $rst; + } + + public function setMenu($sqldata, $auth_area){ + /* 권한 수정 */ + foreach( (array)$this->authDest as $grpcode => $grpname ){ + $readAuth = in_array($grpcode, (array)$sqldata['cate_auth_read']); + $writeAuth = in_array($grpcode, (array)$sqldata['cate_auth_write']); + $deleteAuth = in_array($grpcode, (array)$sqldata['cate_auth_delete']); + + $this->AUTH->setAuth( + $this->cate_area, + $sqldata['cate_id'], + $auth_area, + $grpcode, + $this->AUTH->getAuthToNum($readAuth, $writeAuth, $deleteAuth), + $sqldata['parent_id'] + ); + } + + + /* 메뉴 수정 */ + $sql_row = Array( + "cate_area" => $this->cate_area, + "cate_id" => $sqldata['cate_id']?:"", + "cate_name" => $sqldata['cate_name']?:"", + "cate_data" => $sqldata['cate_data']?:"", + "cate_exp" => $sqldata['cate_exp']?:"", + "cate_class" => $sqldata['cate_class']?:"", + "cate_auth" => $sqldata['cate_auth']?:"", + "cate_use" => $sqldata['cate_use']?:"", + ); + + $where = $this->getAreaQry(); + $where->add("cate_id = ?",$sqldata['parent_id']); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $rst = $this->DB->update($this->cate_table, $sql_row, $whereqry, $whererow); + if( $rst ){ + $where = new DB_where("and"); + $where->add("cate_area = ?", $this->cate_area); + $where->add("cate_id = ?", $sqldata['cate_id']?:""); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + $this->DB->delete(TB_menu_auth_page, $whereqry, $whererow); + + $auth_filepath = explode("\n",preg_replace("/\r\n/ims","\n",$sqldata['cate_filepath'])); + foreach( (array)$auth_filepath as $path ){ + if( trim($path) ){ + $sql_row = Array( + "cate_area" => $this->cate_area, + "cate_id" => $sqldata['cate_id']?:"", + "filepath" => $path, + ); + $this->DB->insert(TB_menu_auth_page, $sql_row); + } + } + } + return $rst; + } + + public function delMenu($cate_id, $auth_area="", $auth_target=""){ + $caterow = $this->cate_info_id($cate_id); + $rst = $this->drop_cate($caterow['cate_code']); + if( $rst ){ + $rst = $rst && $this->AUTH->delAuth($this->cate_area, $cate_id, $auth_area, $auth_target); + } + return $rst; + } + + public function getMenuIdFromUrl($url){ + $where = new DB_where("and"); + $where->add("cate_area = ?", $this->cate_area); + //$where->add("filepath like ?", "%{$url}%"); + $where->add("CHARINDEX(filepath, ?) <> 0", $url); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $sql = "select cate_id from ".TB_menu_auth_page." where {$whereqry}"; + return $this->DB->queryFirstField($sql,$whererow); + } + + public function hasMenuAuth($auth, $cate_id=""){ + if( !$cate_id ){ + if( $GLOBALS['_Auth_']['cate_id'] ){ + $cate_id = $GLOBALS['_Auth_']['cate_id']; + }else{ + $cate_id = $this->getMenuIdFromUrl($_SERVER['SCRIPT_URI']); + } + } + return $this->AUTH->hasAuth($auth, $this->cate_area, $cate_id); + } + + public function getMenuBrdcom($cate_id){ + $menu_info = $this->cate_info_id($cate_id); + return $this->history_cate($menu_info['cate_code']); + } + + public function set_cate_area($cate_area=""){ + $this->cate_area = $cate_area?:"service"; + $this->authDest = $this->gsetAuthTarget("all"); + } + + public function gsetAuthTarget( $type="", $include_sa="" ){ + switch( $this->cate_area ){ + case "admin": + $authTarget = $GLOBALS['_varsAuthAdmin']; + break; + + case "service": + if( $type == "all" ){ + $authTarget = array_merge($GLOBALS['_varsAuthAdmin'], $GLOBALS['_varsAuthMember']); + }else{ + $authTarget = $GLOBALS['_varsAuthMember']; + } + break; + } + if( !$include_sa ){ + unset($authTarget['SA']); //슈퍼관리자 제외 + } + return $authTarget; + } +} \ No newline at end of file diff --git a/lib/app/mlang.class.php b/lib/app/mlang.class.php new file mode 100644 index 0000000..090bf67 --- /dev/null +++ b/lib/app/mlang.class.php @@ -0,0 +1,200 @@ +TB = TB_comment; + $this->DB->tableExists($this->TB); + $this->DB->tableExists(TB_comment_lang); + $this->LANG = "KR"; + } + + function loadWord( $str, $lang="" ){ + $tran = $this->getWord( $str, $lang ); + if( !$tran ){ + $this->putWord( $str ); + }else{ + return $tran; + } + return $str; + } + + function getTran( $str, $isId="" ){ + $where = new DB_where("and"); + if( $isId ){ + $where->add("TRAN_ID = ?", $str); + }else{ + $where->add("TRAN_TEXT = ?", $str); + } + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $sql = "select * from {$this->TB} where {$whereqry}"; + $this->DB->query_record = false; //query log 기록 금지 + $txt = $this->DB->queryFirstRow($sql, $whererow); + $this->DB->query_record = true; //query log 기록 재개 + + if( $txt ){ + $tran = (Array)json_decode($txt['TRAN_DATA']); + return $tran; + } + return false; + } + + function getWordList($fields, $where=""){ + if( !$where ){ + $where = new DB_where("and"); + } + $orderby="TRAN_TEXT asc"; + $limit=array(); + + $rows = $this->getDataList($fields, $where, $orderby, $limit); + + return $rows; + } + + public function getWordPage($sqldata, $where=""){ + if( !$where ){ + $where = new DB_where("and"); + } + + if( $sqldata['stxt'] ){ + $subwhere = $where->sub_where("or"); + if( $sqldata['sfld'] ){ + $subwhere->add("{$sqldata['sfld']} like ?", "%{$sqldata['stxt']}%"); + }else{ + $subwhere->add("TRAN_TEXT like ?", "%{$sqldata['stxt']}%"); + } + } + + $orderby = "TRAN_TEXT desc"; + if( $sqldata['ofld'] && $sqldata['oasc'] ){ + $orderby = "{$sqldata['ofld']} {$sqldata['oasc']}"; + } + + $query = array( + "mode" => $sqldata['mode'], + "viewnum" => $sqldata['viewnum'], + "sdate" => $sqldata['sdate']?:"", + "fdate" => $sqldata['fdate']?:"", + "page" => $sqldata['page'], + "sfld" => $sqldata['sfld'], + "stxt" => $sqldata['stxt'], + "ofld" => $sqldata['ofld'], + "oasc" => $sqldata['oasc'], + ); + + $lists = $this->getDataPage("*", $query, $where ,$orderby); + return $lists; + } + + function getWord( $str, $lang ){ + $str = $this->getTran($str); + $lang = $lang ?: $this->LANG; + if( $str ){ + return $str[$lang]; + } + return false; + } + + function getWordId( $id, $lang="" ){ + $str = $this->getTran($id, 1); + $lang = $lang ?: $this->LANG; + if( $str ){ + return $str[$lang]; + } + return false; + } + + function putWord( $str ){ + $sqldata = Array( + "TRAN_TEXT" => $str?:"", + "TRAN_DATA" => json_encode(Array("KR"=>$str)), + ); + $this->DB->insert($this->TB, $sqldata); + } + + function setWord( $str, $stran, $isId="" ){ + $tran = $this->getTran( $str, $isId ); + $tran = array_filter(array_merge($tran, $stran)); + + $where = new DB_where("and"); + if( $isId ){ + $where->add("TRAN_ID = ?", $str); + }else{ + $where->add("TRAN_TEXT = ?", $str); + } + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $sqldata = Array( + "TRAN_DATA" => json_encode($tran), + ); + + return $this->DB->update($this->TB, $sqldata, $whereqry, $whererow); + } + + public static function getText( $str, $var=array() ){ + $langObj = new Mlang(); + if( $langObj->TB ){ + $str = $langObj->loadWord( $str ); + } + for( $a=0 ; $a<@count($var) ; $a++ ){ + $str = str_replace("{@".($a+1)."}", $var[$a], $str); + } + return $str; + } + + function getLang ( $slang="" ){ + $where = new DB_where("and"); + $where->add("bc.Bran_Uid = ?", "nation_code"); + $where->add("bc.Code_Uid != ?", "nation_code"); + $where->add("bc.Code_Uid != ?", "KR"); + $where->add("bc.Active = ?", "Y"); + if( $slang ){ + $swhere = $where->sub_where("or"); + foreach( (array)$slang as $lang ){ + $swhere->add("bc.Code_Uid = ?", $lang); + } + } + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $sql = "select bc.Code_Uid, bc.Code_Val from ".TB_basecode." as bc left join ".TB_comment_lang." as cl on bc.Code_Uid = cl.LANG_ID where {$whereqry} order by bc.Code_Val"; + $row = $this->DB->query($sql, $whererow); + return $row; + } + + function setLang($params){ + $sql = "delete from ".TB_comment_lang; + $this->DB->qry($sql); + + $rows = $this->getLang($params); + + foreach( $rows as $lang ){ + $qryrow = Array( + "LANG_ID" => $lang['Code_Uid'], + "LANG_NM" => $lang['Code_Val'], + ); + $this->DB->insert(TB_comment_lang, $qryrow); + } + } +} \ No newline at end of file diff --git a/lib/app/qrylog.class.php b/lib/app/qrylog.class.php new file mode 100644 index 0000000..1ac54cf --- /dev/null +++ b/lib/app/qrylog.class.php @@ -0,0 +1,71 @@ +DB->query_record = false; //query log 기록 금지 + + $this->DB->tableExists(TB_query_log); + } + + public function getQueryList($fields, $where=""){ + if( !$where ){ + $where = new DB_where("and"); + } + $orderby="query_date desc"; + $limit=array(); + + $rows = $this->getDataList($fields, $where, $orderby, $limit); + + return $rows; + } + + public function getQueryPage($sqldata, $where=""){ + if( !$where ){ + $where = new DB_where("and"); + } + + $where->add("query_date >= ?", ($sqldata['sdate']?$sqldata['sdate']:_SDATENULL_)." 00:00:00.000"); + $where->add("query_date <= ?", ($sqldata['fdate']?$sqldata['fdate']:_FDATENULL_)." 23:59:59.999"); + + if( $sqldata['stxt'] ){ + $subwhere = $where->sub_where("or"); + if( $sqldata['sfld'] ){ + $subwhere->add("{$sqldata['sfld']} like ?", "%{$sqldata['stxt']}%"); + }else{ + $subwhere->add("host_name like ?", "%{$sqldata['stxt']}%"); + $subwhere->add("db_name like ?", "%{$sqldata['stxt']}%"); + $subwhere->add("query_string like ?", "%{$sqldata['stxt']}%"); + $subwhere->add("member_id like ?", "%{$sqldata['stxt']}%"); + } + } + + $orderby = "query_date desc"; + if( $sqldata['ofld'] && $sqldata['oasc'] ){ + $orderby = "{$sqldata['ofld']} {$sqldata['oasc']}"; + } + + $query = array( + "mode" => $sqldata['mode'], + "viewnum" => $sqldata['viewnum'], + "sdate" => $sqldata['sdate']?:"", + "fdate" => $sqldata['fdate']?:"", + "page" => $sqldata['page'], + "sfld" => $sqldata['sfld'], + "stxt" => $sqldata['stxt'], + "ofld" => $sqldata['ofld'], + "oasc" => $sqldata['oasc'], + ); + + $lists = $this->getDataPage("*", $query, $where ,$orderby); + return $lists; + } + + public function getQuery( $cust_id ){ + $urow = Array("cust_id" => $cust_id); + $where = ""; + $row = $this->getData("*", $urow, $where); + return $row; + } + +} \ No newline at end of file diff --git a/lib/app/realnameattach.class.php b/lib/app/realnameattach.class.php new file mode 100644 index 0000000..b8e08b4 --- /dev/null +++ b/lib/app/realnameattach.class.php @@ -0,0 +1,327 @@ +DB->query_record = false; //query log 기록 금지 + + $this->DB->tableExists($this->TB); + } + +// public function getFilePath( $gubun, $nid, $sid ){ +// $target_dir = _UP_PATH_."/{$gubun}"; +// if( !file_exists($target_dir) ){ mkdir($target_dir); } +// +// return $target_dir; +// } +// +// public function getLoadFileinfo( $gubun, $nid, $sid ){ +// $target_dir = $this->getFilePath($gubun, $nid, $sid); +// +// $frow = Array( +// "target_dir" => $target_dir, +// "file_name" => "{$nid}_{$sid}.dat", +// "file_path" => "{$target_dir}/{$nid}_{$sid}.dat", +// ); +// return $frow; +// } +// +// public function getSaveFileinfo( $gubun, $nid, $sid, $filename="" ){ +// $target_dir = $this->getFilePath($gubun, $nid, $sid); +// +// $new_filename = "{$nid}_{$sid}.dat"; +// $frow = Array( +// "target_dir" => $target_dir, +// "file_name" => $filename, +// "file_path" => $target_dir."/".$new_filename, +// ); +// return $frow; +// } +// +// public function getConvFileinfo( $gubun, $nid, $sid, $filename="" ){ +// $target_dir = $this->getFilePath($gubun, $nid, $sid); +// +// $frow = Array( +// "target_dir" => $target_dir, +// "file_name" => "{$nid}_{$sid}.dat", +// "file_path" => "{$target_dir}/{$nid}_{$sid}.dat?*", +// ); +// return $frow; +// } + + public function getFilePath( $gubun, $nid, $sid="" ){ + $target_dir = _UP_PATH_."/{$gubun}"; + if( !file_exists($target_dir) ){ mkdir($target_dir); } + + if( !is_array($nid) ){ + $nid = explode("/",$nid); + } + + foreach( $nid as $new_dir ){ + $target_dir .= "/{$new_dir}"; + if( !file_exists($target_dir) ){ mkdir($target_dir); } + } + +// $target_dir .= "/{$sid}"; +// if( !file_exists($target_dir) ){ mkdir($target_dir); } + return $target_dir; + } + + public function getLoadFileinfo( $gubun, $nid, $sid ){ + //$target_dir = $this->getFilePath( $gubun, $nid, $sid ); + $target_dir = _UP_PATH_."/{$gubun}/"; + $frow = $this->getAttach( $gubun, $nid, $sid ); + $target_dir .= $frow['nid']; + $frow['target_dir'] = $target_dir; + $frow['file_path'] = "{$target_dir}/{$frow['file_name']}"; + return $frow; + } + + public function getSaveFileinfo( $gubun, $nid, $sid, $filename="" ){ + $target_dir = $this->getFilePath( $gubun, $nid, $sid ); + + $new_filename = $this->getDupFilename($target_dir, $filename); + $frow = Array( + "target_dir" => $target_dir, + "file_name" => $new_filename, + "file_path" => $target_dir."/".$new_filename, + ); + return $frow; + } + + public function getConvFileinfo( $gubun, $nid, $sid, $filename="" ){ + //$target_dir = $this->getFilePath( $gubun, $nid, $sid ); + $target_dir = _UP_PATH_."/{$gubun}/"; + + $frow = $this->getAttach( $gubun, $nid, $sid ); + $target_dir .= $frow['nid']; + $frow['target_dir'] = $target_dir; + $frow['file_path'] = "{$target_dir}/{$frow['file_name']}?*"; + return $frow; + } + + public function getAttachList($fields, $gubun, $nid="", $adfleld=array(), $orderby=""){ + $where = new DB_where("and"); + if( $gubun ){ + $where->add("gubun = ?", $gubun); + } + if( $nid ){ + $where->add("nid = ?", $this->getNidPath($nid)); + } + + if( $adfleld ){ + if( is_array($adfleld) ){ + foreach( $adfleld as $key => $val ){ + $where->add("{$key} = ?", $val); + } + }else{ + $orderby = $orderby ?: $adfleld; + } + } + + $orderby=$orderby?:"file_id desc"; + $limit=array(); + + $rows = $this->getDataList($fields, $where, $orderby, $limit); + for( $a=0 ; $a $gubun, + //"nid" => $this->getNidPath($nid), + "sid" => $sid, + ); + if( $nid ){ + $whererow["nid"] = $this->getNidPath($nid); + } + $row = $this->getData("*", $whererow); + $row['file_url'] = _SITE_INC_URL_."/getFile.php?gubun={$row['gubun']}&sid={$row['sid']}"; + return $row; + } + public function getAttachId( $file_id ) { + $whererow = Array( + "file_id" => $file_id, + ); + $row = $this->getData("*", $whererow); + $row['file_url'] = _SITE_INC_URL_."/getFile.php?gubun={$row['gubun']}&sid={$row['sid']}"; + return $row; + } + + public function getNidPath( $nid ){ + if( !is_array($nid) ){ + $nid = explode("/",$nid); + } + return implode("/",$nid); + } + + public function putAttach( $upfile, $gubun, $nid, $sid="", $adfield=array(), $upload_user_name="", $code_id="") { + $sfile = $this->getSaveFileinfo($gubun, $nid, $sid, $upfile['name']); + $save_file = $sfile['file_path']; + + $rst = move_uploaded_file($upfile['tmp_name'], $save_file); + if( !$rst ) return false; + + if( strpos($upfile['type'], "image") !== false ){ + $iinfo = getimagesize($save_file); + $upfile['width'] = $iinfo[0]; + $upfile['height'] = $iinfo[1]; + } + + $sid = $sid ?: uniqid(); + + $sqldata = Array( + "gubun" => $gubun?:"", + "nid" => $this->getNidPath($nid)?:"", + "sid" => $sid?:"", + "file_name" => $sfile['file_name']?:$upfile['name'], + "file_size" => $upfile['size']?:0, + "file_type" => $upfile['type']?:"", + "file_width" => $upfile['width']?:"", + "file_height" => $upfile['height']?:"", + "file_remk" => $upfile['file_remk']?:"", + "file_sig_flg" => $upfile['file_sig_flg']?:"", + "upload_user_name"=> $upload_user_name?:"", + "code_id" => $code_id?:"", + "reg_date" => $this->DB->sqleval("getdate()"), + ); + + if( $adfield ) { + $sqldata = array_merge($sqldata, $adfield); + } + + return $this->putData( $sqldata ); + } + + public function putAppAttach($upfile, $sid="", $adfield=array(), $upload_user_name=""){ //앱용 업로드 + $nid = $upfile['nid']; + $gubun = $upfile['gubun']; + $code_id = $upfile['code_id']; + $this->putAttach( $upfile, $gubun, $nid, $sid, $adfield, $upload_user_name, $code_id ); + } + + public function setAttach( $upfile, $gubun, $nid, $sid, $adfield=array(), $upload_user_name="", $code_id="" ) { + $sfile = $this->getSaveFileinfo($gubun, $nid, $sid, $upfile['name']); + $save_file = $sfile['file_path']; + + $rst = move_uploaded_file($upfile['tmp_name'], $save_file); + if( !$rst ) return false; + + if( strpos($upfile['type'], "image") !== false ){ + $iinfo = getimagesize($save_file); + $upfile['width'] = $iinfo[0]; + $upfile['height'] = $iinfo[1]; + } + + $sqldata = Array( + "gubun" => $gubun?:"", + "nid" => $this->getNidPath($nid)?:"", + "sid" => $sid?:"", + "file_name" => $sfile['file_name']?:$upfile['name'], + "file_size" => $upfile['size']?:0, + "file_type" => $upfile['type']?:"", + "file_width" => $upfile['width']?:"", + "file_height" => $upfile['height']?:"", + "file_remk" => $upfile['file_remk']?:"", + "file_sig_flg" => $upfile['file_sig_flg']?:"", + "upload_user_name"=> $upload_user_name?:"", + "code_id" => $code_id?:"", + "reg_date" => $this->DB->sqleval("getdate()"), + ); + + if( $adfield ) { + $sqldata = array_merge($sqldata, $adfield); + } + + $whererow = Array( + "gubun" => $gubun?:"", + "nid" => $this->getNidPath($nid)?:"", + "sid" => $sid?:"", + ); + + return $this->setData( $sqldata, $whererow ); + } + public function setAttachId( $upfile, $file_id, $upload_user_name="" ) { + $ainfo = $this->getAttachId( $file_id ); + if( !$ainfo['file_id'] ) return false; + + return $this->setAttach( $upfile, $ainfo['gubun'], $ainfo['nid'], $ainfo['sid'], $upload_user_name ); + } + + public function delAttach( $gubun, $nid, $sid ){ + $urow = Array(); + $urow['gubun'] = $gubun; + $urow['nid'] = $this->getNidPath($nid); + $urow['sid'] = $sid; + $where = ""; + + $load_finfo = $this->getLoadFileinfo($gubun, $this->getNidPath($nid), $sid); + $conv_finfo = $this->getConvFileinfo($gubun, $this->getNidPath($nid), $sid); + $load_file = $load_finfo['file_path']; + $conv_file = $conv_finfo['file_path']; + + $rst = $this->fileRemove("{$load_file}"); + $rst = $rst && $this->fileRemove("{$conv_file}"); + p($remake); + if( !$rst ) return false; + + return $this->delData($urow, $where); + } + public function delAttachId( $file_id ){ + $ainfo = $this->getAttachId( $file_id ); + return $this->delAttach( $ainfo['gubun'], $ainfo['nid'], $ainfo['sid'] ); + } + + static function fByte($bytes, $precision=2) { + $unit = ["B", "KB", "MB", "GB"]; + $exp = floor(log($bytes, 1024)) ?: 0; + return round($bytes / (pow(1024, $exp)), $precision).$unit[$exp]; + } + + static function fileRemove($filepath, $unremove=""){ + $glob = glob($filepath); + foreach( $glob as $filename ) { + if( !$unremove || $filename != $unremove ){ + @unlink($filename); + } + } + return true; + } + + public function getDupFilename( $target_dir, $oriFilename, $cnt=0 ){ + if( !$oriFilename ) return ""; + + if( $cnt === 0 ){ + $chkFilename = $oriFilename; + }else{ + $orin = explode(".",$oriFilename); + if( count($orin) > 1 ){ + $orin[count($orin)-2] .= "({$cnt})"; + }else{ + $orin[count($orin)-1] .= "({$cnt})"; + } + $chkFilename = implode(".", $orin); + } + if( file_exists("{$target_dir}/{$chkFilename}") ){ + $chkFilename = $this->getDupFilename( $target_dir, $oriFilename, ++$cnt ); + } + return $chkFilename; + } + + public function file_reverse( $upfile ){ + $files = Array(); + if( is_array($upfile['name']) ){ + foreach( $upfile as $key => $val ){ + foreach( $val as $k => $v ){ + $files[$k][$key] = $v; + } + } + }else{ + $files[] = $upfile; + } + return $files; + } +} \ No newline at end of file diff --git a/lib/app/visit.class.php b/lib/app/visit.class.php new file mode 100644 index 0000000..b058959 --- /dev/null +++ b/lib/app/visit.class.php @@ -0,0 +1,325 @@ +DB->query_record = false; //query log 기록 금지 + + $this->DB->tableExists( TB_visit_sess ); + $this->DB->tableExists( TB_visit_sess_count ); + $this->DB->tableExists( TB_visit_log ); + $this->DB->tableExists( TB_visit_log_count ); + } + + function getVisitList( $tb, $field="*", $where="", $orderby="", $limit=array() ){ //방문 리스트 (공통) + if( !$where ){ + $where = new DB_where("and"); + } + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + //$sql = "select {$field} from {$tb} where {$whereqry} ".(($orderby)?"order by {$orderby}":""). $this->DB->_limit($limit[0],$limit[1]); + $sql = $this->DB->addLimit("select {$field} from {$tb} where {$whereqry}",$orderby,$limit[0],$limit[1]); + $rst = $this->DB->qry($sql, $whererow); + $row = array(); + while( $tmp = $this->DB->fetch_array($rst) ){ + $tmp['visit_date'] = getDT_datetime($tmp['visit_date']); + $row[] = $tmp; + } + return $row; + } + + function getVisitPage($tb, $sqldata=array(), $query=array(), $where=""){ //방문 리스트 (공통-페이징) + if( !$where ){ + $where = new DB_where("and"); + } + + $where->add("visit_date >= ?", ($sqldata['sdate']?$sqldata['sdate']:_SDATENULL_)." 00:00:00.000"); + $where->add("visit_date <= ?", ($sqldata['fdate']?$sqldata['fdate']:_FDATENULL_)." 23:59:59.999"); + + if( $sqldata['stxt'] ){ + $subwhere = $where->sub_where("or"); + if( $sqldata['sfld'] ){ + $subwhere->add("{$sqldata['sfld']} like ?", "%{$sqldata['stxt']}%"); + }else{ + $subwhere->add("visit_url like ?", "%{$sqldata['stxt']}%"); + $subwhere->add("visit_ref like ?", "%{$sqldata['stxt']}%"); + $subwhere->add("visit_ip like ?", "%{$sqldata['stxt']}%"); + $subwhere->add("visit_sess like ?", "%{$sqldata['stxt']}%"); + } + } + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $orderby = "nid desc"; + if( $sqldata['ofld'] && $sqldata['oasc'] ) $orderby = "{$sqldata['ofld']} {$sqldata['oasc']}"; + + $query = array_merge(array( + "mode" => $sqldata['mode'], + "viewnum" => $sqldata['viewnum'], + "sdate" => $sqldata['sdate']?:"", + "fdate" => $sqldata['fdate']?:"", + "sfld" => $sqldata['sfld'], + "stxt" => $sqldata['stxt'], + "ofld" => $sqldata['ofld'], + "oasc" => $sqldata['oasc'], + ), $query); + + $lists = new clist(); + $lists->fld = "*"; + $lists->where = $whereqry; + $lists->whererow = $whererow; + $lists->orderby = $orderby; + $lists->url = $_SERVER['PHP_SELF']; + $lists->query = $query; + $lists->page = $sqldata['page']?:1; + $lists->linktype = ""; + $lists->viewnum = $query['viewnum']?:20; + $lists->rownum = $query['rownum']?:5; + $lists->getCommonList($tb); + for( $a=0 ; $a<@count($lists->rows) ; $a++ ){; + $lists->rows[$a]['visit_date'] = getDT_datetime($lists->rows[$a]['visit_date']); + } + return $lists; + } + + function getVisitSessList( $field="*", $where="", $orderby="", $limit=array() ){ //사이트 접근 리스트 + return $this->getVisitList(TB_visit_sess, $field, $where, $orderby, $limit); + } + + function getVisitSessPage( $sqldata=array(), $query=array(), $where="" ){ //사이트 접근 리스트 페이지 + return $this->getVisitPage(TB_visit_sess, $sqldata, $query, $where); + } + + function getVisitLogList( $field="*", $where="", $orderby="", $limit=array() ){ //사이트 조회 리스트 + return $this->getVisitList(TB_visit_log, $field, $where, $orderby, $limit); + } + + function getVisitLogPage( $sqldata=array(), $query=array(), $where="" ){ //사이트 조회 리스트 페이지 + return $this->getVisitPage(TB_visit_log, $sqldata, $query, $where); + } + + function putVisitRec($vtype="",$cate_id=""){ //방문자 로그 기록 + $ip = get_ip(); + $time = time(); + + //세션생성 + if( !$_SESSION['visit_sess'] ){ + $_SESSION['visit_sess'] = md5($time.$ip); + } + + if( + $_SESSION['visit_last_urls'] != $_SERVER['REQUEST_URI'] && $_SESSION['visit_last_ajax'] != $_SERVER['REQUEST_URI'] || //새로고침은 기록 안함 + ($_SESSION['visit_last_time'] + ($GLOBALS['_varsBaseCode']['refresh_time']?:3600)) < time() //새로고침이라 할지라도 일정시간 이내의 새로고침은 기록 + ){ + //로그기록 등록 + $this->putVisitDetailRec($vtype,$cate_id); + } + + //마지막 페이지 접근내역 + if( preg_match("/\.ajax\./i", $_SERVER['REQUEST_URI']) ){ + $_SESSION['visit_last_ajax'] = $_SERVER['REQUEST_URI']; + }else{ + $_SESSION['visit_last_urls'] = $_SERVER['REQUEST_URI']; + } + $_SESSION['visit_last_time'] = $time; + } + + function putVisitDetailRec($vtype="",$cate_id=""){ //로그기록 등록 + if( !$_SESSION['visit_sess'] ) return false; + + //세션 로그기록 등록 + $this->putVisitSessRec($vtype); + + //방문 로그 등록 (페이지뷰) + $this->putVisitLogRec($vtype,$cate_id); + } + + function putVisitSessRec($vtype=""){ //방문 세션 기록 + if( !$_SESSION['visit_sess'] ) return false; + + $where = new DB_where("and"); + $where->add("visit_sess = ?", $_SESSION['visit_sess']); + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + $sql = "select count(*) from ".TB_visit_sess." where {$whereqry}"; + $cnt = $this->DB->queryFirstField($sql,$whererow); + if( !$cnt ){ //최초 세션 등록 + $this->DB->insert( TB_visit_sess, array("visit_sess"=>$_SESSION['visit_sess'], "member_id"=>($GLOBALS['_Umem']['member_id']?:""), "visit_ip"=>get_ip(), "visit_total"=>1) ); //세션 추가 + + $where = new DB_where("and"); + $where->add("visit_date = ?", date("Y-m-d")); + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + $sql = "select count(*) from ".TB_visit_sess_count." where {$whereqry}"; + $cnt = $this->DB->queryFirstField($sql, $whererow); + if( !$cnt ){ //시간별 세션등록통계가 없으면 insert + $this->DB->insert( TB_visit_sess_count, array("visit_week"=>date("w")) ); + } + + $sql = "update ".TB_visit_sess_count." set visit_total = visit_total + 1, h".date("H")." = h".date("H")." + 1 where {$whereqry}"; + $this->DB->qry( $sql, $whererow ); + }else{ //세션이 방문한 페이지수 증가 + $sqladd = ""; + if( $GLOBALS['_Umem']['member_id'] ){ + $sqladd = "member_id = '{$GLOBALS['_Umem']['member_id']}',"; + } + $sql = "update ".TB_visit_sess." set {$sqladd} visit_total = visit_total + 1, visit_fdate = CURRENT_TIMESTAMP where {$whereqry}"; + $this->DB->qry( $sql, $whererow ); + } + } + + function putVisitLogRec($vtype="",$cate_id=""){ //방문페이지(페이지뷰) 기록 + if( !$_SESSION['visit_sess'] ) return false; + + $where = new DB_where("and"); + $where->add("visit_date = ?", date("Y-m-d")); + $where->add("visit_type = ?", $vtype); + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + $sql = "select count(*) from ".TB_visit_log_count." where {$whereqry}"; + $cnt = $this->DB->queryFirstField($sql, $whererow); + if( !$cnt ){ //시간별 페이지뷰통계가 없으면 insert + $this->DB->insert( TB_visit_log_count, array("visit_type"=>$vtype,"visit_week"=>date("w")) ); + } + + //시간별 페이지뷰통계 증가 + $sql = "update ".TB_visit_log_count." set visit_total = visit_total + 1, h".date("H")." = h".date("H")." + 1 where {$whereqry}"; + $this->DB->qry( $sql, $whererow ); + + + $connect_info = parse_user_agent(); + $sql_row = array( + "visit_type" => $vtype, + "cate_id" => $cate_id?:"", + "visit_sess" => $_SESSION['visit_sess']?:"", + "visit_url" => $_SERVER['REQUEST_URI']?:"", + "visit_ref" => $_SERVER['HTTP_REFERER']?:"", + "visit_browser" => "{$connect_info['browser']} | {$connect_info['version']}", + "visit_os" => $connect_info['platform']?:"", + "visit_ip" => get_ip(), + ); + + //개별 페이지 방문 기록 + return $this->DB->insert( TB_visit_log, $sql_row ); + } + + function setLoginRec(){ //로그인시 ID 기록 + $where = new DB_where("and"); + $where->add("visit_sess = ?", $_SESSION['visit_sess']); + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + $sql = "update ".TB_visit_sess." set member_id = ? where {$whereqry}"; + return $this->DB->qry($sql, array_merge(array($_SESSION['auth_mem_id']?:""),$whererow)); + } + + function getVisitData($mode, $type="LOG", $vtype="", $start_day="", $end_day="", $where=""){ + if( !$end_day ) $end_day = date("Y-m-d"); + if( !$start_day ) $start_day = date("Y-m-d",strtotime($end_day." -1 Month +1 day")); + + if( !$where ){ + $where = new DB_where("and"); + } + $where->add("visit_date >= ?", $start_day); + $where->add("visit_date <= ?", $end_day); + + if( $type == "LOG" ){ + $where->add("visit_type = ?", $vtype); + $tbl = TB_visit_log_count; + }else{ + $tbl = TB_visit_sess_count; + } + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $row = array(); + switch( $mode ){ + case "hour": + $h_row = array(); + for( $a=0 ; $a<24 ; $a++ ){ + $h_str = "h".str_pad($a, 2, "0", STR_PAD_LEFT); + $h_row[] = "sum({$h_str}) as {$h_str}"; + } + $sql = "select ".implode(",",$h_row)." from {$tbl} where {$whereqry} "; + $row = $this->DB->queryFirstRow($sql, $whererow); + break; + + case "day": + if( (strtotime($end_day) - strtotime($start_day)) > 31*86400 ) $end_day = date("Y-m-d",strtotime($start_day." +1 Month -1 day")); //1개월이내로 제한 + $days = floor((strtotime($end_day) - strtotime($start_day)) / 86400); + + for( $a=0 ; $a<=$days ; $a++ ){ + $nday = date("Y-m-d", strtotime("{$start_day} +{$a} day")); + $row[$nday] = 0; + } + + $sql = "select visit_date as date, visit_total as visit from {$tbl} where {$whereqry} "; + $rst = $this->DB->qry($sql, $whererow); + + while( $tmp = $this->DB->fetch_array($rst) ){ + $row[getDT_date($tmp['date'])] = $tmp['visit']; + } + break; + + case "dayw": + $days = floor((strtotime($end_day) - strtotime($start_day)) / 86400); + + $sql = "select visit_date as date, visit_total as visit from {$tbl} where {$whereqry} order by visit_date asc"; + $rst = $this->DB->qry($sql, $whererow); + + $trow = array(); + while( $tmp = $this->DB->fetch_array($rst) ){ + $trow[getDT_date($tmp['date'])] = $tmp['visit']; + } + $row = array(); + for( $a=0 ; $a<7 ; $a++ ){ + $dword = date("Y-m-d", strtotime($start_day." +{$a} days")); + $row[] = $trow[$dword] ?: 0; + } + + break; + + case "week": + $h_row = array(); + for( $a=0 ; $a<7 ; $a++ ){ + $h_row[] = "sum(iif(visit_week = {$a}, visit_total, 0)) as w{$a}"; + } + $sql = "select ".implode(",",$h_row)." from {$tbl} where {$whereqry} "; + $row = $this->DB->queryFirstRow($sql, $whererow); + break; + + case "mon": + $sday = explode("-",$start_day); + $eday = explode("-",$end_day); + if( (($eday[0]*12+intval($eday[1])) - ($eday[0]*12+intval($eday[1]))) != 12 ) $start_day = date("Y-m-d",strtotime($end_day." -11 Month")); //12개월이내로 제한 + + $sday = explode("-",$start_day); + $mons = ($eday[0]*12+intval($eday[1])) - ($sday[0]*12+intval($sday[1])); + + $m_row = array(); + for( $a=0 ; $a<=$mons ; $a++ ){ + $m_str = date("Y-m",strtotime("{$sday[0]}-{$sday[1]}-01 +{$a} month")); + $m_row[] = "sum(iif(visit_date like '{$m_str}%', visit_total, 0)) as '{$m_str}'"; + } + $sql = "select ".implode(",",$m_row)." from {$tbl} where {$whereqry} "; + $row = $this->DB->queryFirstRow($sql, $whererow); + break; + } + + return array( + "start_day" => $start_day, + "end_day" => $end_day, + "mons" => $mons, + "days" => $days, + "data" => $row, + ); + } +} \ No newline at end of file diff --git a/lib/base/basecode.class.php b/lib/base/basecode.class.php new file mode 100644 index 0000000..8a2080f --- /dev/null +++ b/lib/base/basecode.class.php @@ -0,0 +1,292 @@ +DB->tableExists(TB_basecode); + } + + public function getAllBaseCodeList($Bran_Uid="", $Group_Uid="", $Code_Uid="", $where=""){ + if( !$where ){ + $where = new DB_where("and"); + } + if( $Bran_Uid !== "" ) $where->add("CD.Bran_Uid = ?", $Bran_Uid); + if( $Group_Uid !== "" ) $where->add("CD.Group_Uid = ?", $Group_Uid); + if( $Code_Uid !== "" ) $where->add("CD.Code_Uid = ?", $Code_Uid); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $sql = "select + CD.Bran_Uid + ,BR.Code_Val as Bran_Val + ,CD.Group_Uid + ,GR.Code_Val as Group_Val + ,CD.Code_Uid + ,CD.Code_Val + ,CD.Code_Exp + ,BR.Code_Idx as Bran_Idx + ,case when CD.Bran_Uid = CD.Code_Uid then -1 else GR.Code_Idx end as Group_Idx + ,CD.Code_Idx + ,case when CD.Bran_Uid = CD.Code_Uid then -1 when CD.Group_Uid = CD.Code_Uid then 0 else CD.Code_Idx end as Code_Idx2 + ,BR.Active as Bran_Active + ,GR.Active as Group_Active + ,CD.Active as Code_Active + from ". TB_basecode ." as CD + inner join ". TB_basecode ." as BR on CD.Bran_Uid = BR.Code_Uid + inner Join ". TB_basecode ." as GR on CD.Bran_Uid = GR.Bran_Uid and CD.Group_Uid = GR.Code_Uid + where {$whereqry} + order by Bran_Idx, Bran_Uid, Group_Idx, Group_Uid, Code_Idx2, Code_Uid"; + + $this->DB->query_record = false; //query log 기록 금지 + $rows = $this->DB->query($sql, $whererow); + $this->DB->query_record = true; //query log 기록 재개 + + return $rows; + } + + public function getBaseCodeList($Bran_Uid="", $Group_Uid="", $Code_Uid="", $where=""){ + if( !$where ){ + $where = new DB_where("and"); + } + $where->add("BR.Active = ?", 'Y'); + $where->add("GR.Active = ?", 'Y'); + $where->add("CD.Active = ?", 'Y'); + + return $this->getAllBaseCodeList($Bran_Uid, $Group_Uid, $Code_Uid, $where); + } + + public function getBaseCode($Bran_Uid="", $Group_Uid="", $Code_Uid="", $where=""){ + if( !$where ){ + $where = new DB_where("and"); + } + if( $Bran_Uid !== "" ) $where->add("Bran_Uid = ?", $Bran_Uid); + if( $Group_Uid !== "" ) $where->add("Group_Uid = ?", $Group_Uid); + if( $Code_Uid !== "" ) $where->add("Code_Uid = ?", $Code_Uid); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $sql = "select * from ". TB_basecode ." where {$whereqry}"; + $row = $this->DB->queryFirstRow($sql, $whererow); + + return $row; + } + + public function putBaseCode($sqldata){ + return $this->DB->insert(TB_basecode, $sqldata); + } + + public function setBaseCode($sqldata, $Bran_Uid="", $Group_Uid="", $Code_Uid="", $where=""){ + if( !$where ){ + $where = new DB_where("and"); + } + if( $Bran_Uid !== "" ) $where->add("Bran_Uid = ?", $Bran_Uid); + if( $Group_Uid !== "" ) $where->add("Group_Uid = ?", $Group_Uid); + if( $Code_Uid !== "" ) $where->add("Code_Uid = ?", $Code_Uid); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + return $this->DB->update(TB_basecode, $sqldata, $whereqry, $whererow); + } + + public function delBaseCode($Bran_Uid="", $Group_Uid="", $Code_Uid="", $where=""){ + if( !$where ){ + $where = new DB_where("and"); + } + if( $Bran_Uid !== "" ) $where->add("Bran_Uid = ?", $Bran_Uid); + if( $Group_Uid !== "" ) $where->add("Group_Uid = ?", $Group_Uid); + if( $Code_Uid !== "" ) $where->add("Code_Uid = ?", $Code_Uid); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + return $this->DB->delete(TB_basecode, $whereqry, $whererow); + } + + public function sortBaseCode($Bran_Uid, $Group_Uid, $Code_Uid, $Code_Idx, $adv=1){ //$incl => 코드 추가시 현 Code_Uid의 Code_idx 값보다 +1 씩 해서 sort 값을 줘야 하나, 삭제시에는 Code_Uid 자리부터 시작하므로 +1 하지 않기 위함. + $Code_Idx = $Code_Idx?:1; + + $where = new DB_where("and"); + $where->add("Code_Uid != ?",$Code_Uid); + $where->add("Code_Idx >= ?",$Code_Idx); + if( $Bran_Uid == $Code_Uid ){ + $where->add("Bran_Uid = ?",$this->DB->sqleval("Code_Uid")); + }else if( $Group_Uid == $Code_Uid ){ + $where->add("Bran_Uid = ?",$Bran_Uid); + $where->add("Group_Uid = ?",$this->DB->sqleval("Code_Uid")); + $where->add("Bran_Uid != ?",$this->DB->sqleval("Code_Uid")); + }else{ + $where->add("Bran_Uid = ?",$Bran_Uid); + $where->add("Group_Uid = ?",$Group_Uid); + $where->add("Bran_Uid != ?",$this->DB->sqleval("Code_Uid")); + $where->add("Group_Uid != ?",$this->DB->sqleval("Code_Uid")); + } + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $sql = "select * from ". TB_basecode ." where {$whereqry} order by Code_Idx"; + $rst = $this->DB->qry($sql, $whererow); + + $sidx = $Code_Idx + $adv; + + $urst = true; + while( $row = $this->DB->fetch_array($rst) ){ + $sqldata = Array("Code_Idx" => $sidx++); + $uwhere = new DB_where("and"); + + $uwhere->add("Bran_Uid = ?", $row['Bran_Uid']); + $uwhere->add("Group_Uid = ?", $row['Group_Uid']); + $uwhere->add("Code_Uid = ?", $row['Code_Uid']); + + $uwqry = $uwhere->get_where(); + $uwhereqry = $uwqry['qry']; + $uwhererow = $uwqry['val']; + + $urst = $urst && $this->DB->update(TB_basecode, $sqldata, $uwhereqry, $uwhererow); + } + return $urst; + } + + public function getMaxBaseCodeIdx($Bran_Uid="", $Group_Uid="", $where=""){ + if( !$where ){ + $where = new DB_where("and"); + } + if( $Bran_Uid !== "" ){ + $where->add("Bran_Uid = ?", $Bran_Uid); + $where->add("Bran_Uid != ?", $this->DB->sqleval("Code_Uid")); + }else{ + $where->add("Bran_Uid = ?", $this->DB->sqleval("Group_Uid")); + } + if( $Group_Uid !== "" ){ + $where->add("Group_Uid = ?", $Group_Uid); + $where->add("Group_Uid != ?", $this->DB->sqleval("Code_Uid")); + }else{ + $where->add("Group_Uid = ?", $this->DB->sqleval("Code_Uid")); + } + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $sql = "select max(Code_Idx) from ". TB_basecode ." where {$whereqry}"; + $maxIdx = $this->DB->queryFirstField($sql, $whererow); + + return $maxIdx; + } + + public function getBaseCodeVars($Bran_Uid="", $Group_Uid=""){ + $Bran_Uid = $Bran_Uid?:$Group_Uid; + + $where = new DB_where("and"); + $where->add("CD.Group_Uid != ?", $this->DB->sqleval("CD.Code_Uid")); + + $row = $this->getBaseCodeList($Bran_Uid, $Group_Uid, "", $where); + + $ret = array(); + foreach( (array)$row as $val ){ + $ret[$val['Code_Uid']] = $val['Code_Val']; + } + return $ret; + } + + public function getBaseGroupVars($Bran_Uid){ + $where = new DB_where("and"); + $where->add("CD.Bran_Uid != ?", $this->DB->sqleval("CD.Code_Uid")); + + $row = $this->getBaseCodeList($Bran_Uid, "", "", $where); + $ret = array(); + foreach( (array)$row as $val ){ + if( $val['Group_Uid'] == $val['Code_Uid'] ){ + $ret[$val['Group_Uid']] = $val; + }else{ + $ret[$val['Group_Uid']]['children'][$val['Code_Uid']] = $val['Code_Val']; + } + } + return $ret; + } + + public function getBaseGCodeVars($Bran_Uid="", $Group_Uid=""){ + $Bran_Uid = $Bran_Uid?:$Group_Uid; + + $where = new DB_where("and"); + $where->add("CD.Group_Uid != ?", $this->DB->sqleval("CD.Code_Uid")); + + $row = $this->getBaseCodeList($Bran_Uid, $Group_Uid, "", $where); + + $ret = array(); + foreach( (array)$row as $val ){ + if( !isset($ret[$val['Group_Uid']]) ){ + $ret[$val['Group_Uid']] = array(); + } + $ret[$val['Group_Uid']][$val['Code_Uid']] = $val['Code_Val']; + } + return $ret; + } + + public function getBaseCodeVarsExp($Bran_Uid="", $Group_Uid=""){ + $Bran_Uid = $Bran_Uid?:$Group_Uid; + + $where = new DB_where("and"); + $where->add("CD.Group_Uid != ?", $this->DB->sqleval("CD.Code_Uid")); + + $row = $this->getBaseCodeList($Bran_Uid, $Group_Uid, "", $where); + + $ret = array(); + foreach( (array)$row as $val ){ + $ret[$val['Code_Uid']] = Array($val['Code_Val'],$val['Code_Exp']); + } + return $ret; + } + + public function getBaseCodeVarsAll($Bran_Uid="", $Group_Uid=""){ + $Bran_Uid = $Bran_Uid?:$Group_Uid; + + $where = new DB_where("and"); + $where->add("CD.Group_Uid != ?", $this->DB->sqleval("CD.Code_Uid")); + + $row = $this->getBaseCodeList($Bran_Uid, $Group_Uid, "", $where); + + $ret = array( + "CODE" =>Array(), + "CODEEXP"=>Array(), + ); + foreach( (array)$row as $val ){ + if( !isset($ret['CODE'][$val['Bran_Uid']]) ){ + $ret['CODE'][$val['Bran_Uid']] = Array(); + $ret['CODEEXP'][$val['Bran_Uid']] = Array(); + } + + $ret['CODE'][$val['Bran_Uid']][$val['Code_Uid']] = $val['Code_Val'];; + $ret['CODEEXP'][$val['Bran_Uid']][$val['Code_Uid']] = Array($val['Code_Val'],$val['Code_Exp']); + } + return $ret; + } + +// public static function val2code( $rows, $val ){ +// foreach( $rows as $key => $vrow ){ +// if( is_array($vrow) && $val == $vrow['val'] || $vrow == $val ){ +// return $key; +// } +// } +// return false; +// } +// +// public static function val2txt( $rows, $val ){ +// foreach( $rows as $key => $vrow ){ +// if( is_array($vrow) && $val == $vrow['val'] ){ +// return $vrow['txt']; +// }else if( $vrow == $val ){ +// return $vrow; +// } +// } +// return false; +// } +} diff --git a/lib/base/clist.class.php b/lib/base/clist.class.php new file mode 100644 index 0000000..dd484ac --- /dev/null +++ b/lib/base/clist.class.php @@ -0,0 +1,179 @@ +rows = array(); + $this->pages = array(); + $this->url = $_SERVER['PHP_SELF']; + $this->fld = "*"; + $this->where = "1=1"; + $this->query = array(); + $this->page = 1; + $this->orderby = "1"; + $this->viewnum = $GLOBALS['_varsBaseCode']['line_num']?:10; + $this->rownum = $GLOBALS['_varsBaseCode']['page_num']?:10; + $this->linktype = ""; + } + + public function getCommonList($tb="",$prt=false){//테이블, 필드, where절, order by절, 메인url, urlquery, 현재페이지, 목록수, 페이지수 + if( $tb ){ + $sql = "select count(*) from {$tb} where {$this->where}"; + //if( $prt ) echo $sql; + $this->allcnt = $this->DB->queryFirstField($sql,$this->whererow,array(),$prt); + } + $pobj = new Pagenation(); + $pgobj = $pobj->get_pagenation($this->allcnt, $this->viewnum, $this->rownum, $this->page); + $this->pagenation = $pgobj; + + $this->line_cnt = $pgobj->total_rows - $this->viewnum*($pgobj->current - 1); + $this->pages = $this->getPages($pgobj); + if( $tb ){ + //$sql = "select {$this->fld} from {$tb} where {$this->where} order by {$this->orderby} ". $this->DB->_limit($pgobj->limit[0],$pgobj->limit[1]); + $sql = $this->DB->addLimit("select {$this->fld} from {$tb} where {$this->where}",$this->orderby,$pgobj->limit[0],$pgobj->limit[1]); + $this->rows = $this->DB->query( $sql, $this->whererow ); + if( !$this->rows ){ + $this->rows = Array(); + } + } + } + + public function getCount($tb,$prt=false){//테이블, 필드, where절, order by절, 메인url, urlquery, 현재페이지, 목록수, 페이지수 + $sql = "select count(*) from {$tb} where {$this->where}"; + //if( $prt ) echo $sql; + $allcnt = $this->DB->queryFirstField($sql, $this->whererow,array(),$prt); + return $allcnt; + } + + private function getHref( $url ){ + if( $this->linktype == "script" ){ + return 'href="###" onclick="common_page_move(\''.$url.'\')"'; + }else{ + return 'href='.$url; + } + } + + private function getPages($pgobj){ + $pagehtml = array(); + $query = $this->getQuery($this->query); + if( $pgobj->pages[0] && $pgobj->pages[0] != 1 ){ + $pagehtml[] = "getHref("{$this->url}?{$query}&page=1").">[<"; + $pagehtml[] = "getHref("{$this->url}?{$query}&page={$pgobj->bprev}")."><"; + } + for( $a=0 ; $apages) ; $a++ ){ + if( $pgobj->current == $pgobj->pages[$a] ){ + $pagehtml[] = "getHref("{$this->url}?{$query}&page={$pgobj->pages[$a]}").">{$pgobj->pages[$a]}"; + }else{ + $pagehtml[] = "getHref("{$this->url}?{$query}&page={$pgobj->pages[$a]}").">{$pgobj->pages[$a]}"; + } + } + if( $pgobj->pages[count($pgobj->pages)-1] != $pgobj->last ){ + $pagehtml[] = "getHref("{$this->url}?{$query}&page={$pgobj->bnext}").">>"; + $pagehtml[] = "getHref("{$this->url}?{$query}&page={$pgobj->last}").">>]"; + } + return $pagehtml; + } + + private function getQuery($qrow, $field="",$value=""){ + if( $field ){ + $qrow[$field] = $value; + } + $query = array(); + if( count($qrow) > 0 ){ + foreach( $qrow as $key => $val ){ + if( hasval($val) ){ + $query[] = "{$key}={$val}"; + } + } + } + return implode("&", $query); + } + + public function getUrl( $chgrow ){ //기존 query 에 $chgrow 부분을 변경/적용하여 url 가져오기 + $qrow = $this->query; + if( count($chgrow) > 0 ){ + foreach( $chgrow as $key => $val ){ + $qrow[$key] = $val; + } + } + return $this->url."?".$this->getQuery($qrow); + } + + public function getOrdUrl($field,$oasc=""){ //기존 query에 order용 변경/적용할 부분을 간소화 + $oasc = $oasc?:($this->query['oasc']=="asc"?"desc":"asc"); + return $this->getUrl(array("ofld"=>$field,"oasc"=>$oasc,"page"=>1)); + } + + public function getEcptUrl($fields){ //기존 query 에 $fields 부분을 제외하고 url 가져오기 + $qrow = $this->query; + if( count($qrow) > 0 ){ + foreach( $qrow as $key => $val ){ + if( is_array($fields) ){ + if( in_array($key, $fields) ) unset($qrow[$key]); + }else{ + if( $key == $fields ) unset($qrow[$key]); + } + } + } + + return $this->url."?".$this->getQuery($qrow); + } + + public function getSearchUrl(){ //기존 query에 정렬부분만 남기고 초기화 하여 url 가져오기 + $qrow = $this->query; + if( count($qrow) > 0 ){ + foreach( $qrow as $key => $val ){ + if( $key != "ofld" && $key != "oasc" ) unset($qrow[$key]); + } + } + return $this->url."?".$this->getQuery($qrow); + } + + public function getOrdQueryRow($field,$oasc=""){ //기존 query에 order용 변경/적용할 부분을 간소화하여 배열로 리턴 + $oasc = $oasc?:($this->query['oasc']=="asc"?"desc":"asc"); + return array("ofld"=>$field,"oasc"=>$oasc,"page"=>1); + } + + public function getEcptQueryRow($fields){ //기존 query 에 $fields 부분을 제외하고 배열로 리턴 + $qrow = $this->query; + if( count($qrow) > 0 ){ + foreach( $qrow as $key => $val ){ + if( is_array($fields) ){ + if( in_array($key, $fields) ) unset($qrow[$key]); + }else{ + if( $key == $fields ) unset($qrow[$key]); + } + } + } + + return $qrow; + } + + public function getSearchQueryRow(){ //기존 query에 정렬부분만 남기고 초기화 하여 배열로 리턴 + $qrow = $this->query; + if( count($qrow) > 0 ){ + foreach( $qrow as $key => $val ){ + if( $key != "ofld" && $key != "oasc" ) unset($qrow[$key]); + } + } + return $qrow; + } +} diff --git a/lib/base/cmanage.class.php b/lib/base/cmanage.class.php new file mode 100644 index 0000000..3bbd644 --- /dev/null +++ b/lib/base/cmanage.class.php @@ -0,0 +1,197 @@ +TB = $table; + } + + public function getDataList( $fields="", $where="", $orderby="", $limit=array() ){ //데이터 리스트 + if( !$fields ) $fields = "*"; + if( !$where ){ + $where = new DB_where("and"); + } + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + //$sql = "select {$fields} from {$this->TB} where {$whereqry} ".(($orderby)?"order by {$orderby}":""). $this->DB->_limit($limit[0],$limit[1]); + $sql = $this->DB->addLimit("select {$fields} from {$this->TB} where {$whereqry}",$orderby,$limit[0],$limit[1]); + $rst = $this->DB->qry($sql, $whererow); + $row = array(); + while( $tmp = $this->DB->fetch_array($rst) ){ + $row[] = $tmp; + } + return $row; + } + + public function getDataPage($fields="", $query=array(), $where="" ,$orderby=""){ //데이터 리스트 (페이징) + $lists = $this->getDataPageCommon($fields, $query, $where, $orderby); + + $lists->url = $_SERVER['PHP_SELF']; + $lists->linktype = ""; + $lists->getCommonList($this->TB); + + return $lists; + } + + public function getDataPageScript($fields="", $query=array(), $where="" ,$orderby="", $url=""){ //데이터 리스트 (페이징) + $lists = $this->getDataPageCommon($fields, $query, $where, $orderby); + + $lists->linktype = "script"; + $lists->url = $url?:$_SERVER['PHP_SELF']; + $lists->getCommonList($this->TB); + + return $lists; + } + + public function getDataPageCommon($fields="", $sqldata=array(), $where="" ,$orderby=""){ //데이터 리스트 (페이징) + if( !$fields ) $fields = "*"; + if( !$where ){ + $where = new DB_where("and"); + } + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $query = array_merge(array( + "mode" => $sqldata['mode']?:"", + "viewnum" => $sqldata['viewnum']?:"", + "sfld" => $sqldata['sfld']?:"", + "stxt" => $sqldata['stxt']?:"", + "ofld" => $sqldata['ofld']?:"", + "oasc" => $sqldata['oasc']?:"", + ), $sqldata); + + $page = $sqldata['page']?:1; + unset($query['page']); + + $lists = new clist(); + $lists->DB->query_print = $this->DB->query_print; + $lists->DB->query_record = $this->DB->query_record; + $lists->fld = $fields; + $lists->where = $whereqry; + $lists->whererow = $whererow; + $lists->orderby = $orderby; + $lists->url = $_SERVER['PHP_SELF']; + $lists->query = $query; + $lists->page = $page; + $lists->viewnum = $query['viewnum']?:$GLOBALS['_varsBaseCode']['line_num']; + $lists->rownum = $query['rownum']?:$GLOBALS['_varsBaseCode']['page_num']; + return $lists; + } + + public function getData( $fields="", $urow="", $where="", $orderby="" ) { + if( !$fields ) $fields = "*"; + if( gettype($urow) == "object" && get_class($urow) == "DB_where" ){ + $where = $urow; + } + if( !$where ){ + $where = new DB_where("and"); + } + if( gettype($urow) == "array" ){ + foreach((array)$urow as $key => $val){ + if( $key ){ + $where->add("{$key} = ?",$val); + } + } + } + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $sql = "select {$fields} from ".$this->TB." where {$whereqry}". ($orderby?" order by {$orderby}":""); + return $this->DB->queryFirstRow($sql, $whererow); + } + + public function putData( $sqldata ) { //데이터 등록 + if( $this->DB->tableExists( $this->TB ) ){ + return $this->DB->insert( $this->TB, $sqldata); + } + return 0; + } + + public function setData( $sqldata, $urow="", $where="" ) { //데이터 수정 + if( gettype($urow) == "object" && get_class($urow) == "DB_where" ){ + $where = $urow; + } + if( !$where ){ + $where = new DB_where("and"); + } + if( gettype($urow) == "array" ){ + foreach((array)$urow as $key => $val){ + if( $key ){ + $where->add("{$key} = ?",$val); + } + } + } + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + return $this->DB->update( $this->TB, $sqldata, $whereqry, $whererow ); + } + + public function setDataParts( $sqldata, $field="", $urow="", $where=""){ //데이터 일괄 수정 + $fld = ""; + $arr = array(); + $wre = new DB_where("and"); + + if( gettype($field) == "object" && get_class($field) == "DB_where" ){ + $wre = $field; + }else if( gettype($urow) == "object" && get_class($urow) == "DB_where" ){ + $wre = $urow; + }else if( $where ){ + $wre = $where; + } + + if( gettype($field) == "array" ){ + $arr = $field; + }else if( gettype($urow) == "array" ){ + $arr = $urow; + } + + if( gettype($field) == "string" ){ + $fld = $field; + } + + if( @count($arr) > 0 ){ + $subwhere = $wre->sub_where("or"); + foreach((array)$arr as $key => $val){ + $subwhere->add( ($fld?:$key)." = ?",$val); + } + } + + $wqry = $wre->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + return $this->DB->update( $this->TB, $sqldata, $whereqry, $whererow ); + } + + public function delData( $urow="", $where="" ) { //데이터 삭제 + if( gettype($urow) == "object" && get_class($urow) == "DB_where" ){ + $where = $urow; + } + if( !$where ){ + $where = new DB_where("and"); + } + if( gettype($urow) == "array" ){ + foreach((array)$urow as $key => $val){ + if( $key ){ + $where->add("{$key} = ?",$val); + } + } + } + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + return $this->DB->delete( $this->TB, $whereqry, $whererow ); + } +} \ No newline at end of file diff --git a/lib/base/kcate.class.php b/lib/base/kcate.class.php new file mode 100644 index 0000000..e240d48 --- /dev/null +++ b/lib/base/kcate.class.php @@ -0,0 +1,624 @@ +DB->query_record = false; //query log 기록 금지 + + if( $cate_table ){ + $this->cate_table = $cate_table; + }else{ + $this->cate_table = TB_cate; + } + $this->dmax = 4; + $this->cate_area = ""; + $this->cate_auth = array(""); + + $this->DB->tableExists($this->cate_table); + } + + public function set_cate_area($cate_area){ + $this->cate_area = $cate_area; + } + + public function get_cate_area(){ + return $this->cate_area; + } + + public function getAreaQry($where=""){ + if( !$where ){ + $where = new DB_where("and"); + } + if( $this->cate_area ){ + $where->add("cate_area = ?", $this->cate_area); + } + return $where; + } + + public function getShowQry($where=""){ + if( !$where ){ + $where = new DB_where("and"); + } + + if( $this->cate_auth ){ + $subwhere = $where->sub_where("or"); + foreach( (array)$this->cate_auth as $val ){ + $subwhere->add("cate_auth = ?", $val); + } + } + + return $where; + + /* + switch( $auth ){ + case "1" : + $valrow = Array("Y","M","S","A"); + break; + case "2" : + $valrow = Array("Y","M","S"); + break; + case "3" : + $valrow = Array("Y","M"); + break; + default : + $valrow = Array("Y"); + break; + } + return " and cate_auth in ('".implode("','",$valrow)."') "; + */ + } + + public function new_cate($pa_code, $where=""){ //새 카테고리 추가 + //상위카테고리의 오류확인 + $pa_code = (string)$pa_code; + $new_pa_code = $pa_code; + if( $pa_code != 0 && $pa_code != "" && $pa_code != "0" && strlen($pa_code) % $this->dmax != 0 ){ + for( $i = 0 ; $i < $this->dmax - ( strlen($pa_code) % $this->dmax ) ; $i++ ){ + $new_pa_code = "0{$new_pa_code}"; + } + } + + if( !$where ){ + $where = $this->getAreaQry(); + } + $where->add("cate_code like ?", "{$new_pa_code}%"); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + //주어진 카테고리의 1단계 아래 카테고리 중 최대값 찾음 + $next_len = strlen($new_pa_code) + $this->dmax; + + $sql = "select max(SUBSTRING(cate_code,1,$next_len)) from {$this->cate_table} where {$whereqry}"; + $pre_cate = $this->DB->queryFirstField($sql, $whererow); + if( !$pre_cate ){ + $pre_cate = $new_pa_code; + } + + //1단계 아래 카테고리가 없을때-Y, 있을-N + if( $pre_cate == $new_pa_code ){ + for( $i = 0 ; $i < $this->dmax ; $i++ ){ + $pre_cate = $pre_cate."0"; + } + + $last_up = (string)( (int)substr($pre_cate, -$this->dmax) + 1 ); + $forlen = $this->dmax - ( strlen($last_up) % $this->dmax ); + for( $i = 0 ; $i < $forlen ; $i++ ){ + $last_up = "0".$last_up; + } + + $pre_cate = substr($pre_cate, 0, -$this->dmax).$last_up; + $forlen = ( $this->dmax - ( strlen($pre_cate) % $this->dmax ) ) % $this->dmax; + for( $i = 0 ; $i < $forlen ; $i++ ){ + $pre_cate = "0".$pre_cate; + } + return $pre_cate; + }else{ + $last_up = (int)substr($pre_cate, -$this->dmax) + 1; + if( $last_up < pow(10, $this->dmax) ){ + $last_up = (string)$last_up; + $cnt = $this->dmax - strlen($last_up); + for( $i = 0 ; $i < $cnt ; $i++ ){ + $last_up = "0".$last_up; + } + + $pre_cate = substr($pre_cate, 0, -$this->dmax).$last_up; + return $pre_cate; + }else{ + alert("카테고리 허용한도가 초과되었습니다."); + return false; + } + } + } + + public function up_cate($cate_code){ // 상위카테고리 리턴 + return substr($cate_code, 0, strlen($cate_code) - $this->dmax); + } + + public function sub_cate($cate_code){ // 하위카테고리 배열 리턴 + $where = $this->getAreaQry(); + $where = $this->getShowQry($where); + $where->add("cate_code like ?", "{$cate_code}%"); + $where->add("cate_code != ?", $cate_code?:""); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $sql = "select * from {$this->cate_table} where {$whereqry} order by cate_code"; + $rst = $this->DB->qry($sql, $whererow); + $i = 0; + $re_row = Array(); + + while( $sub_obj = $this->DB->fetch_array($rst) ){ + foreach( (array)$sub_obj as $key => $val ){ + $re_row[$key][$i] = $val; + } + $i++; + } + return $re_row; + } + + public function sub_direct_cate($cate_code){ // 1단계아래의 하위카테고리 배열만 리턴 + $temp_ren = strlen($cate_code) + $this->dmax; + + $where = $this->getAreaQry(); + $where = $this->getShowQry($where); + $where->add("cate_code like ?", "{$cate_code}%"); + $where->add("cate_code != ?", $cate_code); + $where->add("len(cate_code) = ?", $temp_ren); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $sql = "select * from {$this->cate_table} where {$whereqry} order by cate_code"; + $rst = $this->DB->qry($sql, $whererow); + $i = 0; + $re_row = Array(); + while( $sub_obj = $this->DB->fetch_array($rst) ){ + foreach( $sub_obj as $key => $val ){ + $re_row[$key][$i] = $val; + } + $i++; + } + return $re_row; + } + + public function history_cate($cate_code){ // $cate_code 의 상위 카테고리 배열 리턴 + $floor = strlen($cate_code) / $this->dmax; + for( $i = $floor ; $i > 0 ; $i-- ){ + $info = $this->cate_info(substr($cate_code, 0, $this->dmax * $i)); + if($info) foreach( $info as $key => $val ){ + $re_row[$key][$i - 1] = $val; + } + } + return $re_row; + } + + public function cate_info($cate_code, $where=""){ // 카테고리정보 리턴 + if( !$where ){ + $where = new DB_where("and"); + } + $where = $this->getAreaQry($where); + $where->add("cate_code = ?", $cate_code); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $sql = "select * from {$this->cate_table} where {$whereqry}"; + $row = $this->DB->queryFirstRow($sql, $whererow); + return $row; + } + + public function cate_info_id($cate_id, $where=""){ // 카테고리정보 리턴 id + if( !$where ){ + $where = new DB_where("and"); + } + $where = $this->getAreaQry($where); + $where->add("cate_id = ?", $cate_id); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $sql = "select * from {$this->cate_table} where {$whereqry}"; + $row = $this->DB->queryFirstRow($sql, $whererow); + return $row; + } + + public function cate_info_data(){ // 카테고리정보 리턴 url + if( $_SERVER['REQUEST_URI'] != "/" ){ + $where = $this->getAreaQry(); + $where->add("charindex(?, cate_data) != 0", $_SERVER['REQUEST_URI']); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + //$sql = "select * from {$this->cate_table} where cate_data is not null and cate_data != '' and {$whereqry} order by cate_code desc ".$this->DB->_limit(0,1); + $sql = $this->DB->addLimit("select * from {$this->cate_table} where cate_data is not null and cate_data != '' and {$whereqry}","cate_code desc",0,1); + $row = $this->DB->queryFirstRow($sql, $whererow); + return $row; + } + } + + public function cate_name($cate_code, $field_name="cate_name"){ // 카테고리명 리턴 + $where = $this->getAreaQry(); + $where->add("cate_code = ?", $cate_code); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $sql = "select {$field_name} from {$this->cate_table} where {$whereqry}"; + return $this->DB->queryFirstField($sql, $whererow); + } + + public function move_cate($cate_code, $dest_upcode){ // 카테고리 이동 (단순) + $temp_ren = strlen($cate_code)+1; + $new_code = $this->new_cate($dest_upcode); + $params = Array( + //"cate_code" => $this->DB->sqleval( "CONCAT('{$new_code}',SUBSTRING(cate_code,{$temp_ren},1000))" ), + "cate_code" => $this->DB->sqleval( "'{$new_code}' + SUBSTRING(cate_code,{$temp_ren},1000)" ), + ); + + $where = $this->getAreaQry(); + $where->add("cate_code like ?", "{$cate_code}%"); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + return $this->DB->update($this->cate_table, $params, $whereqry, $whererow); + } + + public function move_target_cate_id($cate_id,$dest_id,$pos_num){ // 카테고리 이동 _ id + $cinfo = $this->cate_info_id($cate_id); + $dinfo = $this->cate_info_id($dest_id); + $cate_code = $cinfo['cate_code']; + $dest_code = $dinfo['cate_code']; + + //if( $this->up_cate($cate_code) == $dest_code && substr($cate_code,-$this->dmax) <= $pos_num ){ $pos_num++; } + + return $this->move_target_cate($cate_code, $dest_code, $pos_num); + } + + public function move_target_cate($cate_code,$dest_upcode,$pos_num){ // 카테고리 이동 + $code_len = strlen($cate_code); //코드길이 + $code_parent = substr($cate_code,0,-$this->dmax); //부모코드 + $code_parlen = strlen($code_parent); //부모코드길이 + $dest_len = strlen($dest_upcode); //대상코드길이 + $dest_chilen = strlen($dest_upcode)+$this->dmax; //대상자식코드길이 + + $where = $this->getAreaQry(); + $where->add("cate_code != ?", "{$cate_code}"); + $where->add("cate_code != ?", "{$dest_upcode}"); + $where->add("cate_code like ?", "{$dest_upcode}%"); + $where->add("len(cate_code) = ?", strlen($dest_upcode)+$this->dmax); + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + //$sql = "select cate_code from {$this->cate_table} where {$whereqry} order by cate_code asc ".$this->DB->_limit($pos_num,1); + $sql = $this->DB->addLimit("select cate_code from {$this->cate_table} where {$whereqry}","cate_code asc",$pos_num,1); + $dest_code = $this->DB->queryFirstField($sql, $whererow); + if( $dest_code ){ //대상위치에 존재하는 코드가 있으면 + $tgt_num = (int)substr($dest_code,-$this->dmax); + }else{ //대상위치에 존재하는 코드가 없으면 마지막 코드 +1 + $sql = $this->DB->addLimit("select cate_code from {$this->cate_table} where {$whereqry}","cate_code desc",0,1); + $dest_code = $this->DB->queryFirstField($sql, $whererow); + $tgt_num = (int)substr($dest_code,-$this->dmax) + 1; + } + + if( strpos( $dest_upcode, $code_parent ) !== false && $dest_code > $cate_code ){ //같은 레벨 이동이거나 아래로 이동일 경우. (자신이 빠진것 만큼, 대상 부모의 자신의 레벨 부분을, -1만큼 보상해줘야 함.) + if( $dest_upcode == $code_parent ){ //같은 레벨 이동은 $tgt_num 이 바뀌고, 하위레벨로의 이동은 upcode 가 바뀐다. + $tgt_num--; + }else{ + $code1 = substr($dest_upcode, 0, $code_len); + $code2 = substr($dest_upcode, $code_len); + $dest_upcode = substr($code1,0,-$this->dmax) . addzero((int)substr($code1,-$this->dmax) - 1, $this->dmax) . $code2; + } + } + $new_part = $dest_upcode.addzero($tgt_num,$this->dmax); + $params = Array( + //"cate_code" => $this->DB->sqleval( "CONCAT('xxxxxxxxxx',SUBSTRING(cate_code,".($code_len+1).",1000))" ), + "cate_code" => $this->DB->sqleval( "'xxxxxxxxxx' + SUBSTRING(cate_code,".($code_len+1).",1000)" ), + ); + $where = $this->getAreaQry(); + $where->add("cate_code like ?", "{$cate_code}%"); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $this->DB->update($this->cate_table, $params, $whereqry, $whererow); //대상 임시보관 + + + $params = Array( + //"cate_code" => $this->DB->sqleval( "CONCAT(SUBSTRING(cate_code,1,{$code_parlen}),REPLICATE('0',".$this->dmax."-LEN(CONVERT(VARCHAR,SUBSTRING(cate_code,".($code_parlen+1).",".$this->dmax.")-1)))+CONVERT(VARCHAR,SUBSTRING(cate_code,".($code_parlen+1).",".$this->dmax.")-1),SUBSTRING(cate_code,".($code_len+1).",1000))" ), + "cate_code" => $this->DB->sqleval( "SUBSTRING(cate_code,1,{$code_parlen}) + REPLICATE('0',".$this->dmax."-LEN(CONVERT(VARCHAR,SUBSTRING(cate_code,".($code_parlen+1).",".$this->dmax.")-1)))+CONVERT(VARCHAR,SUBSTRING(cate_code,".($code_parlen+1).",".$this->dmax.")-1) + SUBSTRING(cate_code,".($code_len+1).",1000)" ), + ); + $where = $this->getAreaQry(); + $where->add("cate_code like ?", "{$code_parent}%"); + $where->add("cate_code > ?", $cate_code); + $where->add("cate_code not like ?", "{$cate_code}%"); + $where->add("cate_code not like ?", "xxxxxxxxxx%"); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $this->DB->update($this->cate_table, $params, $whereqry, $whererow); //원본 위치의 빠진공간 메움 + + + $params = Array( + //"cate_code" => $this->DB->sqleval( "CONCAT(SUBSTRING(cate_code,1,{$dest_len}), REPLICATE('0', ".$this->dmax."-LEN(CONVERT(VARCHAR,SUBSTRING(cate_code,".($dest_len+1).",".$this->dmax.")+1)))+CONVERT(VARCHAR,SUBSTRING(cate_code,".($dest_len+1).",".$this->dmax.")+1), SUBSTRING(cate_code,".($dest_chilen+1).",1000))" ), + "cate_code" => $this->DB->sqleval( "SUBSTRING(cate_code,1,{$dest_len}) + REPLICATE('0', ".$this->dmax."-LEN(CONVERT(VARCHAR,SUBSTRING(cate_code,".($dest_len+1).",".$this->dmax.")+1)))+CONVERT(VARCHAR,SUBSTRING(cate_code,".($dest_len+1).",".$this->dmax.")+1) + SUBSTRING(cate_code,".($dest_chilen+1).",1000)" ), + ); + $where = $this->getAreaQry(); + $where->add("cate_code like ?", "{$dest_upcode}%"); + $where->add("cate_code >= ?", $new_part); + $where->add("cate_code not like ?", "xxxxxxxxxx%"); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $this->DB->update($this->cate_table, $params, $whereqry, $whererow); //대상 위치의 공간확보 + + + + $params = Array( + //"cate_code" => $this->DB->sqleval( "CONCAT('{$dest_upcode}','{$new_part}',SUBSTRING(cate_code,11,1000))" ), + "cate_code" => $this->DB->sqleval( "'{$new_part}' + SUBSTRING(cate_code,11,1000)" ), + ); + $where = $this->getAreaQry(); + $where->add("cate_code like ?", "xxxxxxxxxx%"); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + return $this->DB->update($this->cate_table, $params, $whereqry, $whererow); //대상 위치로 이동 + } + + public function drop_cate($cate_code, $cate_save_dir=""){ // 카테고리 삭제 + $where = $this->getAreaQry(); + $where->add("cate_code like ?", "{$cate_code}%"); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + return $this->DB->delete($this->cate_table, $whereqry, $whererow); + } + + public function level_cate($cate_code){ // 카테고리 레벨 - 몇번째 카테고리인지 리턴 + return strlen($cate_code) / $this->dmax; + } + + public function max_level_cate(){ // 최고카테고리 레벨 + $where = $this->getAreaQry(); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $sql = "select max(len(cate_code)) from {$this->cate_table} where {$whereqry}"; + return $this->DB->queryFirstField($sql, $whererow) / $this->dmax; + } + + public function tree_cate($cate_code){ // 카테고리 트리배열 리턴 + $where = $this->getAreaQry(); + $where = $this->getShowQry($where); + $where->add("cate_code like ?", "{$cate_code}%"); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $sql = "select * from {$this->cate_table} where {$whereqry} order by cate_code"; + $rst = $this->DB->qry($sql, $whererow); + return $this->tree_cate_exe($rst); + } + + public function tree_cate_all($cate_code){ // 카테고리 트리배열 리턴. 조회방식과 무관 + $where = $this->getAreaQry(); + $where->add("cate_code like ?", "{$cate_code}%"); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $sql = "select * from {$this->cate_table} where {$whereqry} order by cate_code"; + $rst = $this->DB->qry($sql, $whererow); + return $this->tree_cate_exe($rst); + } + + public function tree_cate_exe($rst){ + $i = 0; + $tree_row = Array(); + while( $cate_obj = $this->DB->fetch_array($rst) ){ + $sub_row = $this->sub_cate($cate_obj['cate_code']); + foreach( $cate_obj as $key => $val ){ + $tree_row[$key][$i] = $val; + } + $tree_row['level'][$i] = $this->level_cate($cate_obj['cate_code']); + $tree_row['sub'][$i] = count((Array)$sub_row['cate_code']); + $i++; + } + return $tree_row; + } + + public function draw_cate_all($cate_code, $page_url=""){ // 전체 카테고리 트리 작성 + if( !$page_url ){ + $page_url = $_SERVER['PHP_SELF']; + } + + $tree_row = $this->tree_cate(""); + $history_row = $this->history_cate($cate_code); + + $all_num = count($tree_row['cate_code']); + $pre_level = 0; + $tree_html = "
최상위
"; + + for( $i = 0 ; $i < $all_num ; $i++ ){ + if( $pre_level >= $tree_row['level'][$i] ){ + for( $k = 0 ; $k <= ( $pre_level - $tree_row['level'][$i] ) ; $k++ ){ + $tree_html .= "\r\n"; + } + } + + if( $cate_code == $tree_row['cate_code'][$i] or @in_array($tree_row['cate_code'][$i], $history_row['cate_code']) ){ + $view_conv = ""; + }else{ + $view_conv = "none"; + } + + if( count($this->sub_direct_cate($tree_row['cate_code'][$i])) > 0 ){ + $plus_img = "line_plus.gif"; + }else{ + $plus_img = "line_minus.gif"; + } + + if( $cate_code == $tree_row['cate_code'][$i] ){ + $open_folder = "folder_o.gif"; + $fg_col = 'font-weight:bold;color:#003366'; + }else{ + $open_folder = "folder_c.gif"; + $fg_col = ""; + } + + $tree_html .= "\r\n
"; + for( $ks = 0 ; $ks < $tree_row['level'][$i] ; $ks++ ){ + $tree_html .= ""; + } + $tree_html .= "{$tree_row['cate_name'][$i]}
"; + $tree_html .= "\r\n
"; + $pre_level = $tree_row['level'][$i]; + } + + for( $i = 0 ; $i < $pre_level ; $i++ ){ + $tree_html .= "\r\n
"; + } + + return $tree_html; + } + + public function draw_cate_script($cate_code){ // 전체 카테고리 트리 작성(스크립트) + $tree_row = $this->tree_cate(""); + $history_row = $this->history_cate($cate_code); + + $all_num = count($tree_row['cate_code']); + $pre_level = 0; + $tree_html = ""; + + for( $i = 0 ; $i < $all_num ; $i++ ){ + if( $pre_level >= $tree_row['level'][$i] ){ + for( $k = 0 ; $k <= ( $pre_level - $tree_row['level'][$i] ) ; $k++ ){ + $tree_html .= "\r\n"; + } + } + + if( $cate_code == $tree_row['cate_code'][$i] or @in_array($tree_row['cate_code'][$i], $history_row['cate_code']) ){ + $view_conv = ""; + }else{ + $view_conv = "none"; + } + + if( count($this->sub_direct_cate($tree_row['cate_code'][$i])) > 0 ){ + $plus_img = "line_plus.gif"; + }else{ + $plus_img = "line_minus.gif"; + } + + if( $cate_code == $tree_row['cate_code'][$i] ){ + $open_folder = "folder_o.gif"; + $fg_col = 'font-weight:bold;color:#003366'; + }else{ + $open_folder = "folder_c.gif"; + $fg_col = ""; + } + + $tree_html .= "\r\n
"; + for( $ks = 0 ; $ks < $tree_row['level'][$i] ; $ks++ ){ + $tree_html .= ""; + } + $tree_html .= "{$tree_row['cate_name'][$i]}
"; + $tree_html .= "\r\n
"; + $pre_level = $tree_row['level'][$i]; + } + + for( $i = 0 ; $i < $pre_level ; $i++ ){ + $tree_html .= "\r\n
"; + } + + return $tree_html; + } + + public function list_cate($cate_code, $url, $spr){ + $word = "최상위"; + + $his_row = $this->history_cate($cate_code); + for( $i = 0 ; $i < count($his_row['cate_code']) ; $i++ ){ + $word .= "{$spr}{$his_row['menu_name'][$i]}"; + } + return $word; + } + + public function get_cate($menu_id=""){ + global $cmenu_id, $cmenu_cate, $d1n, $d2n, $d3n, $d4n; + if($menu_id){ + $row = $this->cate_info_id($menu_id); + return $row['cate_code']; + }else if( $cmenu_id ){ + $row = $this->cate_info_id($cmenu_id); + return $row['cate_code']; + }else if( $cmenu_cate ){ + return $cmenu_cate; + }else if( $d1n ){/*이전방식 호환용*/ + return ( ( $d1n )?addzero($d1n, $this->dmax):"" ).( ( $d2n )?addzero($d2n, $this->dmax):"" ).( ( $d3n )?addzero($d3n, $this->dmax):"" ).( ( $d4n )?addzero($d4n, $this->dmax):"" ); + }else{ + $row = $this->cate_info_data(); + return $row['cate_code']; + } + } + + function tree_by_parent( $row, $cd_fld, $pcd_fld, $pcd_val ){ + $nrow = array_filter($row, function($v) use ($pcd_val, $pcd_fld, $cd_fld) { + return $pcd_val == $v[$pcd_fld] && !!$v[$cd_fld]; + }); + + $arr = Array(); + foreach( (Array)$nrow as $ar ){ + $ar['children'] = $this->tree_by_parent($row, $cd_fld, $pcd_fld, $ar[$cd_fld]); + $arr[] = $ar; + } + return $arr; + } + + public function __get($name){ + $method = "get_{$name}"; + if( method_exists($this, $method) ){ + return $this->$method(); + } + + return false; + } + + public function __set($name, $value){ + $method = "set_{$name}"; + if( method_exists($this, $method) ){ + return $this->$method( $value ); + } + return false; + } +} diff --git a/lib/base/lcrypt.class.php b/lib/base/lcrypt.class.php new file mode 100644 index 0000000..eee9401 --- /dev/null +++ b/lib/base/lcrypt.class.php @@ -0,0 +1,125 @@ +pwHash ){ + $site_pw = hash ( "sha256", base64_encode ( strtolower ( $pass ) . $this->pwOpt ) ); + $site_pw = password_hash( $site_pw, PASSWORD_DEFAULT); + }else{ + $site_pw = hash ( "sha256", strtolower ( $pass ) . $this->pwOpt, true ); //Binary + } + return $site_pw; + } + + public function pw_match($pass, $db_pass) { // 패스워드 체킹 + if( $this->pwHash ){ + $site_pw = hash ( "sha256", base64_encode ( strtolower ( $pass ) . $this->pwOpt ) ); + $pwd = password_verify( $site_pw, $db_pass ); + }else{ + $site_pw = hash ( "sha256", strtolower ( $pass ) . $this->pwOpt, true ); //Binary + $pwd = ($site_pw == $db_pass); + } + + if( $pwd ){ + return true; + } + return false; + } + + public function setPwOpt($pw_opt){ + $this->pwOpt = $pw_opt; + } + + public function setPwHash($bool){ + $this->pwHash = !!$bool; + } + + //암복호화 함수 + public function enc_secure($sdata) { + $enc_key = $this -> hex2bin( md5($this->pwOpt, TRUE) ); + $iv = $this -> hex2bin( md5($this->pwOpt, TRUE) ); + $encrypted = $this -> encrypt ($enc_key, $iv, $sdata); + $encrypted = str_replace('+', '+', $encrypted); + return $encrypted?:''; + } + + public function dec_secure($sdata) { + $sdata = str_replace('+', '+', $sdata); + $enc_key = $this -> hex2bin( md5($this->pwOpt, TRUE) ); + $iv = $this -> hex2bin( md5($this->pwOpt, TRUE) ); + $decrypted = $this -> decrypt ($enc_key, $iv, $sdata); + return $decrypted?:''; + } + + public function hex2bin($hexdata){ + return $hexdata; + $bindata = ""; + for( $i = 0 ; $i < strlen($hexdata) ; $i += 2 ){ + $bindata .= chr(hexdec(substr($hexdata, $i, 2))); + } + return $bindata; + } + + public function encrypt($key, $iv, $value){ + if( is_null($value) ){ + $value = ""; + } + if( function_exists("mcrypt_encrypt") ){ + $value = $this->toPkcs7($value); + $output = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $value, MCRYPT_MODE_CBC, $iv); + }else{ + $output = openssl_encrypt($value, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv); + } + return base64_encode($output); + } + + public function decrypt($key, $iv, $value){ + if( is_null($value) ){ + $value = ""; + } + $value = base64_decode($value); + if( function_exists("mcrypt_encrypt") ){ + $output = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $value, MCRYPT_MODE_CBC, $iv); + $output = $this->fromPkcs7($output); + }else{ + $output = openssl_decrypt($value, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv); + } + return $output; + } + + private function toPkcs7($value){ + if( is_null($value) ){ + $value = ""; + } + $padSize = 16 - intval(strlen($value) % 16); + return $value.str_repeat(chr($padSize), $padSize); + } + + private function fromPkcs7($value){ + $valueLen = strlen($value); + if( $valueLen % 16 > 0 ){ + $value = ""; + } + $padSize = ord($value[$valueLen - 1]); + if( ( $padSize < 1 ) or ( $padSize > 16 ) ){ + $value = ""; + } + // Check padding. + for( $i = 0 ; $i < $padSize ; $i++ ){ + if( ord($value[$valueLen - $i - 1]) != $padSize ){ + $value = ""; + } + } + return substr($value, 0, $valueLen - $padSize); + } +} \ No newline at end of file diff --git a/lib/base/pagenation.class.php b/lib/base/pagenation.class.php new file mode 100644 index 0000000..6b243fc --- /dev/null +++ b/lib/base/pagenation.class.php @@ -0,0 +1,68 @@ +total_rows = $total_rows; + $last_page = ceil($total_rows / $rows_per_page); + $page_num = (int) $page_num; + if ($page_num < 1) { + $page_num = 1; + } + $upto = ($page_num - 1) * $rows_per_page; + if( $upto < 0 ){ + $upto = 0; + } + $pages->limit = array($upto, $rows_per_page); + $pages->current = $page_num; + if ($page_num == 1){ + $pages->prev = $page_num; + } else { + $pages->prev = $page_num - 1; + } + if ($page_num == $last_page) { + $pages->next = $last_page; + } else { + $pages->next = $page_num + 1; + } + $bprev = ceil(($page_num-$show_pages)/$show_pages) * $show_pages; + if( $bprev < 1 ){ + $pages->bprev = 1; + }else{ + $pages->bprev = $bprev; + } + $bnext = ceil($page_num/$show_pages) * $show_pages + 1; + if( $bnext > $last_page ){ + $pages->bnext = $last_page; + }else{ + $pages->bnext = $bnext; + } + $pages->last = $last_page; + $pages->info = "Page ({$page_num} of {$last_page})"; + $pages->pages = $this->get_pages($page_num, $last_page, $pages->next, $show_pages); + return $pages; + } + public function get_pages($page_num, $last_page, $next, $show_pages) { + $arr = array(); + + $start = floor(($page_num-1) / $show_pages)*$show_pages;//주석대신 추가부분 + $end = $start + $show_pages; //주석대신 추가부분 + + if ($start < 0) { + $start = 0; $end = $show_pages; + } + for ($i = $start; $i < $end; $i++) { + if ($i == $last_page){ + break; + } + array_push($arr, $i + 1); + } + return $arr; + } +} \ No newline at end of file diff --git a/lib/base/token.class.php b/lib/base/token.class.php new file mode 100644 index 0000000..1afcac3 --- /dev/null +++ b/lib/base/token.class.php @@ -0,0 +1,231 @@ + 3600, //토큰 유효시간 - 1시간 + "expire_time" => 3600 * 24 * 3, //토큰 재발행 유효시간 3일. 이후 재로그인 + "logging_time" => 3600 * 24 * 31 * 3, //로그보관 시간 3달 (현재미사용 - 나중에 로그쌓이는것 보고 사용여부 결정) + ); + private const SpareTime = 120; + + public function __construct( $cate_table="" ){ + parent::__construct(); + + $this->DB->tableExists(TB_token_log); + } + + + /** + * putToken => 토큰 저장 + * @param string $member_id : 로그인된 사용자 아이디 + * @param string $auth : 인증코드. 각각의 로그인의 Unique세션으로 사용되며 Default는 요청마다 랜덤으로 새로 생성되지만, 인증키를 사용자 아이디로 고정으로 지정하면 중복접속 방지용으로 사용가능(Single Sign On) + * @param array $config : 기본설정 대체환경 + */ + public function putToken( $member_id, $auth="", $config=Array() ){ //$auth 를 ID로 잡으면 Single Sign On, 그냥두면 Multi login + $member_id = trim($member_id); + if( !$member_id ) return false; + + if( defined('_SINGLE_LOGIN_') && _SINGLE_LOGIN_ ){ //Single Sign On 적용 + $auth = $member_id; + }else{ + $auth = $auth ?: bin2hex(openssl_random_pseudo_bytes(self::RdByte)); //인증키 랜덤생성 + } + $token = md5(self::Ezconst . $auth . uniqid()); //토큰생성 + $config = $config + self::$Config; + + $valid_time = time() + $config['valid_time']; + $exprie_time = time() + $config['expire_time']; + + $this->retireToken($auth); + + //$sql = "INSERT INTO ". TB_token_log ." (member_id, auth, token, valid_time, expire_time, active, ip) VALUES (?, ?, ?, ?, ?, ?, ?)"; + $sqlrow = Array( + "member_id" => $member_id, + "auth" => $auth, + "token" => $token, + "valid_time" => $valid_time, + "expire_time" => $exprie_time, + "Active" => "Y", + "ip" => get_ip() + ); + $rst = $this->DB->insert(TB_token_log, $sqlrow); + if( $rst ){ + return $token; + } + return false; + } + + + + + /** + * retireToken => 토큰 무효화. 비정상 접근시 사용 + * @param string $auth : 인증코드. 해당 인증코드로 생성된 모든 토큰 무효화. + */ + public function retireToken( $auth ){//모든 $auth 비활성화 처리 + //$sql = "UPDATE TB_token_log SET Active = 'N' WHERE Auth = ?"; + $sqlrow = Array( + "active" => "N", + ); + $where = new DB_where("and"); + $where->add("auth = ?", $auth); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + return $this->DB->update(TB_token_log, $sqlrow, $whereqry, $whererow); + } + + + + /** + * getFromToken => DB에서 토큰 관련정보 획득 + * @param string $token : 사용자가 제출한 토큰. + */ + public function getFromToken( $token ){//Token 정보 Load + //$sql = "SELECT USER_ID, Auth, Valid_Time, Expire_Time, Active FROM TB_token_log WHERE Token = ?"; + $where = new DB_where("and"); + $where->add("token = ?", $token); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $this->DB->query_record = false; //query log 기록 금지 + $sql = "select member_id, auth, valid_time, expire_time, active from ". TB_token_log ." where {$whereqry}"; + $row = $this->DB->queryFirstRow($sql, $whererow ); + $this->DB->query_record = true; //query log 기록 + + return $row; + } + + + + /** + * getLastToken => DB에서 Auth 관련 최종정보 획득 + * @param string $auth : 요청 인증. + */ + public function getLastAuth( $auth ){//Token 정보 Load + //$sql = "SELECT USER_ID, Auth, Valid_Time, Expire_Time, Active FROM TB_token_log WHERE Token = ?"; + $where = new DB_where("and"); + $where->add("auth = ?", $auth); + $where->add("active = ?", "Y"); + + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $this->DB->query_record = false; //query log 기록 금지 + $sql = "select top 1 member_id, auth, valid_time, expire_time, active from ". TB_token_log ." where {$whereqry} order by valid_time desc"; + $row = $this->DB->queryFirstRow($sql, $whererow ); + $this->DB->query_record = true; //query log 기록 + + return $row; + } + + + + + /** + * statusToken => Token의 현재상태 판단 + * @param array|string $token_info : 토큰 또는 토큰 정보 + * @return string + * Y: 인증성공 + * N: 인증실패 + * E: 연장필요 새로운 Token 발행 + * F: 의심되는 접근. 전체 인증 Token 비활성화 + */ + public function statusToken( $token_info ){//Token 상태 (Y:인증성공) + if( !is_array($token_info) ) $token_info = $this->getFromToken($token_info); + + if( !$token_info['auth'] ) return 'N'; + + $now = time(); + + switch( true ){ + case ( $token_info['expire_time'] < $now ) : //세션만료 + return 'N'; //인증실패 + case ( $token_info['valid_time'] >= $now ) : //유효시간 이내 + if( trim($token_info['active']) != "Y" ) return "F"; //인증 비활성 필요 + return 'Y'; //인증성공 + case ( $token_info['expire_time'] >= $now ) : + if( trim($token_info['active']) != "Y" ){ + if( ($token_info['expire_time'] + self::SpareTime) >= $now ){ + return 'Y'; //동시 신호용 인증성공 $spare_time 초간 인정 + }else{ + return "F"; //인증 비활성 필요 + } + } + return 'E'; //연장요청 + } + + return 'N'; + } + + + public function chkToken( $token ){ + + //$fp = fopen(_UP_PATH_."/token_2t.txt", "a+"); + + //$fptxt = "=======================".PHP_EOL; + //$fptxt .= "NOW=> ".time().PHP_EOL; + //$fptxt .= "REQ=> ".print_r($_REQUEST,true).PHP_EOL; + + $token_info = $this->getFromToken( $token ); + $token_stauts = $this->statusToken($token_info); + //$fptxt .= "STATUS=> ".$token_stauts.PHP_EOL; + switch( $token_stauts ){ + case "E" : //토큰 연장 + $chk_token = $this->getLastAuth($token_info['auth']); + if( $token_info['token'] == $chk_token['token'] ){ + $new_token = $this->putToken($token_info['member_id'], $token_info['auth']); + } + case "Y" : //토큰 유효 + $_SESSION['auth_mem_id'] = $token_info['member_id']; + break; + + // 토큰 연장처리 되어 새로운 토큰($new_token) 이 발행되었는데도 갱신하지 않고, + // 예전 토큰 그대로 사용하면 중복 인증요청으로 무효토큰 처리되니 + // 새로운 토큰이 발행되면 다음 요청시엔 꼭 새로운 토큰으로 교체하는 과정이 필요. + // APP 에서 요청할때 응답이 필요한 요청이외의 단순 요청부분까지 응답을 필수 확인하여 $new_token 값이 있는지 점검후 교체하는 로직 필수!! + + case "F" : //토큰 비활성 + $this->retireToken( $token_info['auth'] ); + case "N" : //토큰 무효 + unset($_SESSION['auth_mem_id']); + break; + } + //fputs($fp, $fptxt); + //fclose($fp); + return $new_token; + } + + + /* + public static function getTokenLogin( $token, $config=Array() ){//Token 처리 + $token_info = self::getToken($token); + $status = self::stateToken($token_info); + + switch( $status ){ + case "Y" : + $retval = $member; + break; + case "N" : + $retval = false; + break; + case "E" : + $token = self::putToken($token_info['member_id'], $token_info['auth'], $config); + $retval = $token; + break; + case "F" : + self::retireToken( $token_info['auth'] ); + $retval = false; + break; + } + } + */ +} \ No newline at end of file diff --git a/lib/base/upload.class.php b/lib/base/upload.class.php new file mode 100644 index 0000000..34479ba --- /dev/null +++ b/lib/base/upload.class.php @@ -0,0 +1,381 @@ + $fileid ) { + if (file_exists($target_dir . $fileid . ".info")) { + $fp = fopen($target_dir . $fileid . ".info", "r"); + while (($line = fgets($fp, 4096)) !== false) { + $tmp = explode(":", $line); + $upfiles[$k][$tmp[0]] = chop($tmp[1]); + } + if( $upfiles[$k]['error'] ){ //등록시 오류가 발생한 경우 제외 + unset($upfiles[$k]); + continue; + } + $upfiles[$k]['tmp_text'] = $fileid; + $upfiles[$k]['tmp_name'] = $target_dir . $fileid; + fclose($fp); + $k++; + if ($info_unlink == "D") { // 같은 자리에서 계속 등록을 할 경우 중복등록 방지용으로 삭제를 한다. + unlink($target_dir . $fileid . ".info"); + } + } + } + return $upfiles; + } + + static function swfInfoSaveFile($ufile){ + $fileinfo["tmp_name"] = $ufile["tmp_name"]; + $fileinfo["name"] = $ufile["name"]; + $fileinfo["size"] = $ufile["size"]; + $fileinfo["type"] = $ufile["type"]; + $fileinfo['width'] = 0; + $fileinfo['height'] = 0; + $fileinfo["error"] = $ufile["error"]; + if( strpos($ufile['type'], "image") !== false ){ + $iinfo = getimagesize($ufile["tmp_name"]); + $fileinfo['width'] = $iinfo[0]; + $fileinfo['height'] = $iinfo[1]; + } + return $fileinfo; + } + + static function swfFormSaveFile($ufile, $target_dir, $temp_id=""){ + if( !preg_match("/\/$/",$target_dir) ) { + $target_dir = $target_dir . "/"; + } + if( $temp_id ){ + $fileid = $temp_id; + }else{ + $fileid = uniqid("tmpfile_"); + } + @move_uploaded_file($ufile["tmp_name"], $target_dir . $fileid); + $ufile['width'] = 0; + $ufile['height'] = 0; + if( strpos($ufile['type'], "image") !== false ){ + $iinfo = getimagesize($target_dir . $fileid); + $ufile['width'] = $iinfo[0]; + $ufile['height'] = $iinfo[1]; + } + $fp = fopen($target_dir . $fileid . ".info","w+"); + fputs($fp, "name:". $ufile["name"]."\r\n"); + fputs($fp, "size:". $ufile["size"]."\r\n"); + fputs($fp, "type:". $ufile["type"]."\r\n"); + fputs($fp, "width:". $ufile["width"]."\r\n"); + fputs($fp, "height:". $ufile["height"]."\r\n"); + fputs($fp, "error:". $ufile["error"]."\r\n"); + fclose($fp); + return $fileid; + } + + static function swfMoveUploadedFile($src, $tgt){ + rename($src, $tgt); + } + + static function swfSaveFile($ufile, $sfile){ + @move_uploaded_file($ufile["tmp_name"], $sfile); + $upfiles['name'] = $ufile['name']; + $upfiles['size'] = $ufile['size']; + return json_encode($upfiles); + } + + static function swfCleanDir($target_dir){ + if( !is_dir($target_dir) ) return; + $dp = opendir($target_dir); + if( !preg_match("/\/$/",$target_dir) ) { + $target_dir = $target_dir . "/"; + } + while(false !== ($file = readdir($dp))) { + if ($file != "." && $file != "..") { + $ftime = filectime($target_dir.$file); + if( $ftime < time()-3600*24 ){ + @unlink($target_dir.$file); + } + } + } + } + + static public function mime_type( $file_ext ){ + switch ( $file_ext ) + { + case "doc" : $mime_type = "application/msword"; + break; + case "xls" : + case "xlw" : + case "xla" : + case "xlc" : + case "xlm" : + case "xlt" : $mime_type= "application/vnd.ms-excel"; + break; + case "ppt" : + case "pps" : + case "pot" : $mime_type= "application/vnd.ms-powerpoint"; + break; + case "mpp" : $mime_type= "application/vnd.ms-project"; + break; + case "mdb" : $mime_type= "application/x-msaccess"; + break; + case "pub" : $mime_type= "application/x-mspublisher"; + break; + case "scd" : $mime_type= "application/x-msschedule"; + break; + case "hlp" : $mime_type= "application/winhlp"; + break; + case "crd" : $mime_type= "application/x-mscardfile"; + break; + case "clp" : $mime_type= "application/x-msclip"; + break; + case "m13" : + case "m14" : $mime_type= "application/x-msmediaview "; + break; + case "wmf" : $mime_type= "application/x-msmetafile"; + break; + case "mny" : $mime_type= "application/x-msmoney"; + break; + case "trm" : $mime_type= "application/x-msterminal"; + break; + case "wri" : $mime_type= "application/x-mswrite"; + break; + case "bin" : + case "exe" : + case "com" : $mime_type= "application/octet-stream"; + break; + case "asd" : + case "asn" : $mime_type= "application/astound"; + break; + case "lcc" : $mime_type= "application/fastman"; + break; + case "hqx" : $mime_type= "application/mac-binhex40"; + break; + case "mbd" : $mime_type= "application/mbedlet"; + break; + case "oda" : $mime_type= "application/oda"; + break; + case "pdf" : $mime_type= "application/pdf"; + break; + case "ai" : + case "eps" : + case "ps" : $mime_type= "application/postscript"; + break; + case "rtf" : $mime_type= "application/rtf"; + break; + case "smp" : $mime_type= "application/studiom"; + break; + case "tbt" : $mime_type= "application/timbuktu"; + break; + case "js" : $mime_type= "application/x-javascript"; + break; + case "asp" : $mime_type= "application/x-asap"; + break; + case "csh" : $mime_type= "application/x-csh"; + break; + case "dot" : $mime_type= "application/x-dot"; + break; + case "dvi" : $mime_type= "application/x-dvi"; + break; + case "etc" : $mime_type= "application/x-earthtime"; + break; + case "evy" : $mime_type= "application/x-envoy"; + break; + case "xll" : $mime_type= "application/x-excel"; + break; + case "gtar" : $mime_type= "application/x-gtar"; + break; + case "hdf" : $mime_type= "application/x-hdf"; + break; + case "latex" : $mime_type= "application/x-latex"; + break; + case "fm" : $mime_type= "application/x-maker"; + break; + case "mi" : + case "mif" : $mime_type= "application/x-mif"; + break; + case "mocha" : + case "moc" : $mime_type= "application/x-mocha"; + break; + case "ins" : $mime_type= "application/x-NET-Install"; + break; + case "nc" : + case "cdf" : $mime_type= "application/x-netcdf"; + break; + case "proxy" : $mime_type= "application/x-ns-proxy-autoconfig"; + break; + case "css" : $mime_type= "application/x-pointplus"; + break; + case "slc" : $mime_type= "application/x-salsa"; + break; + case "sh" : $mime_type= "application/x-sh"; + break; + case "shar" : $mime_type= "application/x-shar"; + break; + case "spr" : + case "sprite" : $mime_type= "application/x-sprite"; + break; + case "tar" : $mime_type= "application/x-tar"; + break; + case "tcl" : $mime_type= "application/x-tcl"; + break; + case "tex" : $mime_type= "application/x-tex"; + break; + case "texi" : + case "texinfo" : $mime_type= "application/x-texinfo"; + break; + case "tbp" : $mime_type= "application/x-timbuktu"; + break; + case "tki" : + case "tkined" : $mime_type= "application/x-tkined"; + break; + case "man" : $mime_type= "application/x-troff-man"; + break; + case "me" : $mime_type= "application/x-troff-me"; + break; + case "ms" : $mime_type= "application/x-troff-ms"; + break; + case "t" : + case "tr" : + case "roff" : $mime_type= "application/x-troff"; + break; + case "src" : $mime_type= "application/x-wais-source"; + break; + case "zip" : $mime_type= "application/zip"; + break; + case "hwp" : $mime_type= "application/hwp"; + break; + case "au" : + case "snd" : $mime_type= "audio/basic"; + break; + case "es" : + case "esl" : $mime_type= "audio/echospeech"; + break; + case "midi" : + case "mid" : $mime_type= "audio/midi"; + break; + case "aif" : + case "aiff" : + case "aifc" : $mime_type= "audio/x-aiff"; + break; + case "wav" : $mime_type= "audio/x-wav"; + break; + case "ra" : + case "ram" : $mime_type= "audio/x-pn-realaudio"; + break; + case "pac" : $mime_type= "audio/x-pac"; + break; + case "pae" : $mime_type= "audio/x-epac"; + break; + case "fif" : $mime_type= "image/fif"; + break; + case "gif" : $mime_type= "image/gif"; + break; + case "ief" : $mime_type= "image/ief"; + break; + case "ifs" : $mime_type= "image/ifs"; + break; + case "jpg" : + case "jpe" : + case "jpeg" : $mime_type= "image/jpeg"; + break; + case "png" : $mime_type= "image/png"; + break; + case "tif" : + case "tiff" : $mime_type= "image/tiff"; + break; + case "dwg" : + case "svf" : $mime_type= "image/vnd"; + break; + case "wi" : $mime_type= "image/wavelet"; + break; + case "bmp" : $mime_type= "image/bmp"; + break; + case "ras" : $mime_type= "image/x-cmu-raster"; + break; + case "pnm" : $mime_type= "image/x-portable-anymap"; + break; + case "pbm" : $mime_type= "image/x-portable-bitmap"; + break; + case "pgm" : $mime_type= "image/x-portable-graymap"; + break; + case "ppm" : $mime_type= "image/x-portable-pixmap"; + break; + case "rgb" : $mime_type= "image/x-rgb"; + break; + case "xbm" : $mime_type= "image/x-xbitmap"; + break; + case "xpm" : $mime_type= "image/x-xpixmap"; + break; + case "xwd" : $mime_type= "image/x-xwindowdump"; + break; + + case "htm" : + case "html" : $mime_type= "text/html"; + break; + case "txt" : $mime_type= "text/plain"; + break; + case "rtx" : $mime_type= "text/richtext"; + break; + case "tsv" : $mime_type= "text/tab-separated-values"; + break; + case "etx" : $mime_type= "text/x-setext"; + break; + case "talk" : $mime_type= "text/x-speech"; + break; + case "fvi" : $mime_type= "video/isivideo"; + break; + case "mpg" : + case "mpe" : + case "mpeg" : $mime_type= "video/mpeg"; + break; + case "avi" : $mime_type= "video/msvideo"; + break; + case "qt" : + case "mov" : $mime_type= "video/quicktime"; + break; + case "viv" : + case "vivo" : $mime_type= "video/vivo"; + break; + case "wv" : $mime_type= "video/wavelet"; + break; + case "movie" : $mime_type= "video/x-sgi-movie"; + break; + case "svr" : $mime_type= "x-world/x-svr"; + break; + case "wrl" : $mime_type= "x-world/x-vrml"; + break; + case "vrt" : $mime_type= "x-world/x-vrt"; + break; + + case "ice" : $mime_type= "x-conference/x-cooltalk"; + break; + case "gz" : $mime_type= "x-gzip"; + break; + case "z" : $mime_type= "x-compress"; + break; + case "uue" : + case "uu" : $mime_type= "x-uuencode"; + break; + case "map" : $mime_type= "magnus-internal/imagemap"; + break; + case "shtml" : $mime_type= "magnus-internal/parsed-html"; + break; + case "bat" : + case "cgi" : $mime_type= "magnus-internal/cgi"; + break; + default : + $mime_type= "application/octet-stream"; + } + return $mime_type; + } +} +?> \ No newline at end of file diff --git a/lib/base/usr_func.php b/lib/base/usr_func.php new file mode 100644 index 0000000..3b29bfe --- /dev/null +++ b/lib/base/usr_func.php @@ -0,0 +1,735 @@ +".PHP_EOL; + } + if( is_array($val) || is_object($val) ){ + print_r($val); + }else{ + echo $val; + } + if( $title ){ + echo PHP_EOL."
== {$title} --==
".PHP_EOL; + } +} + +function pp( $val, $title="" ){ + echo "
";
+  if( $title ){
+    echo "==-- {$title} ==".PHP_EOL;
+  }
+  if( is_array($val) || is_object($val) ){
+    print_r($val);
+  }else{
+    echo $val;
+  }
+  if( $title ){
+    echo PHP_EOL."== {$title} --==".PHP_EOL;
+  }
+  echo "
"; +} + +function alert($mesg, $url=""){ + echo ""; + if( $url ){ + move_page($url); + exit; + } +} + +function move_page($url, $mesg=""){ + if( $mesg ){ + alert($mesg); + } + echo ""; + exit; +} + +function hback($mesg=""){ + if( $mesg ){ + alert($mesg); + } + echo ""; + exit; +} + +function is_mobile(){ + if(preg_match('/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i',$_SERVER['HTTP_USER_AGENT'])||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i',substr($_SERVER['HTTP_USER_AGENT'],0,4))){ + return true; + } + return false; +} + +function strpos_arr($haystack, $needle) { + if(!is_array($needle)) $needle = array($needle); + foreach($needle as $what) { + if(($pos = strpos($haystack, $what))!==false) return $pos; + } + return false; +} + +function referer_check(){//이전페이지 체크. 보안용 + $refer = preg_replace("/https?:\/\//","",$_SERVER['HTTP_REFERER']); + $refer = substr($refer,0,strpos($refer,"/")); + return preg_match( "/".preg_quote($_SERVER['HTTP_HOST'],"/")."/i", $refer ) === 0; +} + +function getDT_datetime( $dt, $format="Y-m-d H:i:s" ){ + if( is_object($dt) && get_class($dt) == "DateTime" ){ + return $dt->format($format); + }else if( $dt ){ + return date($format,strtotime($dt)); + } + return ""; +} +function getDT_date( $dt, $format="Y-m-d" ){ + if( is_object($dt) && get_class($dt) == "DateTime" ){ + return $dt->format($format); + }else if( $dt ){ + return date($format,strtotime($dt)); + } + return ""; +} +function strtodate( $str, $format="Y-m-d" ){ + if( $str ){ + return date($format, strtotime($str)); + } + return ""; +} +function ndate( $seconds, $format="Y-m-d" ){ + if( (int)$seconds ){ + return date($format, $seconds); + } + return ""; +} + +function hidden_input($key, $val){ + return ''.PHP_EOL; +} + +function csrf_input($mode){ + $name = '_CSRF_check_'.$mode; + $sess = uniqid($mode); + if( !isset($_SESSION[$name]) || count($_SESSION[$name]) > 1000 ){ + $_SESSION[$name] = Array(); + } + $_SESSION[$name][] = $sess; + return ''.PHP_EOL; +} + +function csrf_check($mode, $del=false){ //찾을수 없으면 true 리턴 + $name = '_CSRF_check_'.$mode; + if( is_array($_SESSION[$name] ) ){ + $key = array_search($_REQUEST[$name],$_SESSION[$name]); + if( hasval($key) ){ + if( $del ){ + csrf_remove($mode); + } + return false; + } + } + return true; +} + +function csrf_remove($mode){ + $name = '_CSRF_check_'.$mode; + $key = array_search($_REQUEST[$name],$_SESSION[$name]); + if( hasval($key) ){ + unset($_SESSION[$name][$key]); + } +} + +function image_thumb($src_img, $dest_img, $dest_w, $dest_h, $stretch="N", $force="N", $dest_ext=""){//이미지 변환 - 아이구 지겨워 재미없음.. + $src_image = @getimagesize($src_img); + $src_w = $src_image[0]; + $src_h = $src_image[1]; + $src_ext = $src_image[2]; + + $img_size = image_size($src_w, $src_h, $dest_w, $dest_h, $stretch, $force); + $dest_w = $img_size['width']; + $dest_h = $img_size['height']; + + switch($src_ext){ + case 1 : + $src_image_stream = @imagecreatefromgif($src_img); + break; + case 2 : + $src_image_stream = @imagecreatefromjpeg($src_img); + break; + case 3 : + $src_image_stream = @imagecreatefrompng($src_img); + break; + case 15 : + $src_image_stream = @imagecreatefromwbmp($src_img); + break; + default : + echo ""; + return false; + } + +// $dest_image_stream = imagecreate($dest_w, $dest_h); // GD 2.0 이상 지원시 이것을 사용 + $dest_image_stream = @imagecreatetruecolor($dest_w, $dest_h); +// imagecolorallocate($dest_image_stream, 255, 255, 255); +// @imagecopyresized($dest_image_stream, $src_image_stream, 0, 0, 0, 0, $dest_w, $dest_h, $src_w, $src_h); + imagecopyresampled($dest_image_stream, $src_image_stream, 0, 0, 0, 0, $dest_w, $dest_h, $src_w, $src_h); //<-php4.0이후 + + if( $dest_ext ){ + switch($dest_ext) { + case 1 : + @imagegif($dest_image_stream,$dest_img); + break; + case 2 : + @imagejpeg($dest_image_stream,$dest_img,100); + break; + case 3 : + @imagepng($dest_image_stream,$dest_img); + break; + case 15 : + @imagewbmp($dest_image_stream,$dest_img); + break; + default : + echo ""; + return false; + } + }else{ + switch($src_ext){ + case 1 : + @imagegif($dest_image_stream,$dest_img); + break; + case 2 : + @imagejpeg($dest_image_stream,$dest_img,100); + break; + case 3 : + @imagepng($dest_image_stream,$dest_img); + break; + case 15 : + @imagewbmp($dest_image_stream,$dest_img); + break; + default : + echo ""; + return false; + } + } +} + +function image_cthumb($src_img, $dest_img, $dest_w, $dest_h){//이미지 크기 맞춤 이외삭제 + $src_image = @getimagesize($src_img); + $src_w = $src_image[0]; + $src_h = $src_image[1]; + $src_ext = $src_image[2]; + + if( $src_w < $dest_w || $src_h < $dest_h ){ + return image_thumb($src_img, $dest_img, $dest_w, $dest_h); + } + + if( ($src_w - $dest_w) > ($src_h - $dest_h) ){ + $last_w = $dest_w * $src_h/$dest_h; + $last_h = $src_h; + }else{ + $last_w = $src_w; + $last_h = $dest_h * $src_w/$dest_w; + } + + switch($src_ext){ + case 1 : + $src_image_stream = @imagecreatefromgif($src_img); + break; + case 2 : + $src_image_stream = @imagecreatefromjpeg($src_img); + break; + case 3 : + $src_image_stream = @imagecreatefrompng($src_img); + break; + case 15 : + $src_image_stream = @imagecreatefromwbmp($src_img); + break; + default : + echo ""; + return false; + } + + $dest_image_stream = @imagecreatetruecolor($dest_w, $dest_h); + imagecopyresampled($dest_image_stream, $src_image_stream, 0, 0, ($src_w-$last_w)/2, ($src_h-$last_h)/2, $dest_w, $dest_h, $last_w, $last_h); + @imagejpeg($dest_image_stream,$dest_img,100); +} + +function image_size($s_wd, $s_ht, $d_wd, $d_ht, $stretch = "N", $force = "N"){//stretch 늘이기, force 대상크기로 강제맞춤(이미지변형) + if( !$s_wd or !$s_ht or !$d_wd and !$d_ht ){ + echo "Error : image_size function parameter error"; + } + + if( $d_wd and !$d_ht ){ + $d_ht = $s_ht * $d_wd / $s_wd; + }else if( !$d_wd and $d_ht ){ + $d_wd = $s_wd * $d_ht / $s_ht; + } + + if( $force == "Y" ){ + if( $stretch == "Y" ){ + $size['width'] = $d_wd; + $size['height'] = $d_ht; + }else{ + if( $s_wd < $d_wd ){ + $size['width'] = $s_wd; + }else{ + $size['width'] = $d_wd; + } + + if( $s_ht < $d_ht ){ + $size['height'] = $s_ht; + }else{ + $size['height'] = $d_ht; + } + } + }else{ + if( ($s_wd/$d_wd) > ($s_ht/$d_ht) ){ + if( $stretch == "N" and $s_wd < $d_wd ){ + $d_wd = $s_wd; + } + + $size['width'] = $d_wd; + $size['height'] = $s_ht * $d_wd / $s_wd; + }else{ + if( $stretch == "N" and $s_ht < $d_ht ){ + $d_ht = $s_ht; + } + + $size['width'] = $s_wd * $d_ht / $s_ht; + $size['height'] = $d_ht; + } + } + + return $size; +} + +function file_remove($filepath, $unremove=""){ + $glob = glob($filepath); + $rst = true; + foreach( $glob as $filename ) { + if( !$unremove || $filename != $unremove ){ + $rst = $rst && @unlink($filename); + } + } + return $rst; +} + +function oldfile_remove($filepath, $day=1, $unremove=""){ + $glob = glob($filepath); + $rmday = $day * 86400; + $rst = true; + foreach( $glob as $filename ) { + if( fileatime($filename) < time()-$rmday && ( !$unremove || $filename != $unremove && substr(strrchr($filename,'/'),1) != $unremove ) ){ + $rst = $rst && @unlink($filename); + } + } + return $rst; +} + +function get_ip(){ + switch(true){ + case (!empty($_SERVER['HTTP_X_REAL_IP'])) : + $real_ip = $_SERVER['HTTP_X_REAL_IP']; break; + case (!empty($_SERVER['HTTP_CLIENT_IP'])) : + $real_ip = $_SERVER['HTTP_CLIENT_IP']; break; + case (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) : + $real_ip = $_SERVER['HTTP_X_FORWARDED_FOR']; break; + default : + $real_ip = $_SERVER['REMOTE_ADDR']; + } + $real_ip = explode(":",$real_ip); + return $real_ip[0]; +} + +function getRefRow($fields=array()){ //HTTP_REFERER 를 배열로 변경, $fields가 존재하면 그부분 제외 + $query= explode("?",$_SERVER['HTTP_REFERER']); + $query= explode("&",$query[1]); + $qrow = Array(); + if( count($query) > 0 ){ + foreach( $query as $val ){ + $temp = explode("=",$val); + if( !in_array($temp[0], $fields) ){ + $qrow[$temp[0]] = $temp[1]; + } + } + } + return $qrow; +} + +function getQuery($qrow, $addrow=array()){ + if( count($addrow) > 0 ){ + $qrow = array_merge($qrow, $addrow); + } + $query = array(); + if( count($qrow) > 0 ){ + foreach( $qrow as $key => $val ){ + if( hasval($val) ){ + $query[] = "{$key}={$val}"; + } + } + } + return implode("&", $query); +} + +function base64url_encode($data){ + $base64 = base64_encode($data); + + if ($base64 === false) { + return false; + } + $url = strtr($base64, '+/', '-_'); + return rtrim($url, '='); +} + +function base64url_decode($data, $strict = false){ + $b64 = strtr($data, '-_', '+/'); + return base64_decode($b64, $strict); +} + +function cval($key){ + if( isset($$key) ){ + return $$key; + } + return ""; +} + +function crowval($row, $key, $dval=""){ + if( isset($row[$key]) ){ + return $row[$key]; + } + return $dval; +} + +function hasval( $val ){ + if( isset($val) && ($val || $val === 0 || $val === "0") ){ + return true; + } + return false; +} + +function array_merge_static( $row1, $row2 ){ + foreach( (array)$row2 as $k => $v ){ + $row1[$k] = $v; + } + return $row1; +} + +/** getSelectOptions + * @param $row : 선택값 + * @param string $emptv : 빈값추가 + * @param array $exck : 선택값중 제외(기준키) + * @param array $excv : 선택값중 제외(기준값) + * @return string + */ +function getSelectOptions( $row, $emptv="", $defval="", $exck=array(), $excv=array() ){ + $reopt = array(); + if( $emptv ){ + $reopt[] = ""; + } + foreach( (array)$row as $key => $val ){ + if( in_array($key, (array)$exck) ) continue; + if( in_array($val, (array)$excv) ) continue; + $selected = false; + if( $defval ){ + if( is_array($defval) && in_array( $key, $defval ) ){ + $selected = true; + }else if( $key == $defval ){ + $selected = true; + } + } + $reopt[] = ""; + } + return implode(PHP_EOL,$reopt); +} +function getSelectOptionsExp( $row, $emptv="", $defval="", $exck=array(), $excv=array() ){ + $reopt = array(); + if( $emptv ){ + $reopt[] = ""; + } + foreach( (array)$row as $key => $val ){ + if( in_array($key, (array)$exck) ) continue; + if( in_array($val[0], (array)$excv) ) continue; + $selected = false; + if( $defval ){ + if( is_array($defval) && in_array( $key, $defval ) ){ + $selected = true; + }else if( $key == $defval ){ + $selected = true; + } + } + $reopt[] = ""; + } + return implode(PHP_EOL,$reopt); +} + +/** getCheckboxes + * @param $name : name Attr + * @param $vrow : 선택값 + * @param string $defval : default 값 + * @param string $cls1 : 클래스1 label 용 + * @param string $cls2 : 클래스2 input 용 + * @return string + */ +function getCheckboxes( $name, $vrow, $defval="", $cls1="", $cls2="" ){ + $reopt = array(); + $checked = false; + foreach( (array)$vrow as $key => $val ){ + if( $defval ){ + if( is_array($defval) && in_array( $key, $defval ) ){ + $checked = true; + }else if( $key == $defval ){ + $checked = true; + } + } + //$reopt[] = " {$val}"; + $reopt[] = " {$val}"; + } + return implode(PHP_EOL,$reopt); +} + + +/** getRadios + * @param $name : name Attr + * @param $vrow : 선택값 + * @param string $defval : default 값 + * @param string $cls1 : 클래스1 label 용 + * @param string $cls2 : 클래스2 input 용 + * @return string + */ +function getRadios( $name, $vrow, $defval='', $cls1='', $cls2='' ){ + $reopt = array(); + foreach( (array)$vrow as $key => $val ){ + if( is_object($defval) || is_array($defval) ){ + $defval = json_encode($defval); + } + //$reopt[] = " {$val}"; + $reopt[] = " {$val}"; + } + return implode(PHP_EOL,$reopt); +} + +function chkValiMail( $email ){ + if( !$email || preg_match("/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/", $email) ){ + return true; + } + return false; +} + +function chkValiDomain( $domain ){ + if( !$domain || preg_match("/(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]/", $domain) ){ + return true; + } + return false; +} + +function chkValiUrl( $url ){ + if( !$url || preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i", $url) ){ + return true; + } + return false; +} + +function chkValiPhone( $phone ){ + if( !$phone || preg_match("/^\d{2,3}-\d{3,4}-\d{4}$/", $phone) ){ + return true; + } + return false; +} + +function chkValiDate( $date ){ + if( !$date || preg_match("/^(19|20)\d\d([-])(0[1-9]|1[012])\2(0[1-9]|[12][0-9]|3[01])$/", $date) ){ + return true; + } + return false; +} + +function chkValiAaSpNum( $str ){ + if( !$str || preg_match("/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]$/im", $str) ){ + return true; + } + return false; +} + +function chkValiAaSp( $str ){ + if( !$str || preg_match("/^(?=.*[a-z])(?=.*[A-Z])(?=.*[@$!%*?&])[A-Za-z@$!%*?&]$/im", $str) ){ + return true; + } + return false; +} + +function chkValiAaNum( $str ){ + if( !$str || preg_match("/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[A-Za-z\d]$/im", $str) ){ + return true; + } + return false; +} + +function chkValiSpNum( $str ){ + if( !$str || preg_match("/^(?=.*[a-z])(?=.*\d)(?=.*[@$!%*?&])[a-z\d@$!%*?&]$/im", $str) ){ + return true; + } + return false; +} + +function addzero($num, $dan){ + return str_pad($num,$dan,'0',STR_PAD_LEFT); +} + +function _notAuth( $auth, &$rval="", $cate_id="", $msg="" ){ //단축형... 귀찮아서 + global $retval; + if( !$rval ) $rval = &$retval['mesg']; + if( !$GLOBALS['_Auth_']['menuObj']->hasMenuAuth( $auth, $cate_id ) ){ + $rval = $msg?:$GLOBALS['_Auth_']['deny_mesg']; + return true; + } + return false; +} + +function file_size($bytes, $precision=2){ + $unit = ["B", "KB", "MB", "GB"]; + $exp = floor(log($bytes, 1024)) ?: 0; + return round($bytes / (pow(1024, $exp)), $precision).$unit[$exp]; +} + +function get_encode_base64_str($en_word, $charset="UTF-8"){ + return "=?" . strtolower($charset) . "?B?" . base64_encode($en_word) . "?="; +} + + +/* + * javascript : btoa(encodeURIComponent(JSON.stringify(data))) 의 역, 배열처리 + * */ +function decode_Post($pval){ + return json_decode(urldecode(base64_decode($pval)),true); +} + +function curl_request( $access_url, $query="", $method="GET", $headers="", $options="", $cookie="", $retm="body" ){ + if( is_array($query) ){ + $strquery = http_build_query($query); + }else{ + $strquery = $query; + } + $ch = curl_init(); + switch( strtoupper($method) ){ + case "POST" : + curl_setopt( $ch, CURLOPT_POST, 1); + curl_setopt( $ch, CURLOPT_POSTFIELDS, $strquery); + break; + + case "GET" : + if( $strquery ){ + $access_url = $access_url."?".$strquery; + } + break; + + case "PUT" : + curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, "PUT"); + curl_setopt( $ch, CURLOPT_POSTFIELDS, $strquery); + break; + + case "DELETE" : + curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, "DELETE"); + curl_setopt( $ch, CURLOPT_POSTFIELDS, $strquery); + break; + + case "RAW" : + if( is_array($query) ){ + $strquery = json_encode( $query ); + }; + curl_setopt( $ch, CURLOPT_POST, 1); + curl_setopt( $ch, CURLOPT_POSTFIELDS, $strquery); + + if( $headers ){ + if( !is_array($headers) ){ + $headers = Array($headers); + } + }else{ + $headers = array(); + } + $headers[] = 'Content-Type: application/json'; + break; + } + + if( $headers ) { //(e.g., array("fruit: apple", "colour: red") + curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); + } + + if( $options ) { //(e.g., array("fruit"=>"apple", "colour"=>"red") + curl_setopt_array($ch, $options); + } + + curl_setopt( $ch, CURLOPT_URL, $access_url); + curl_setopt( $ch, CURLOPT_USERAGENT, "Kuls Api" ); + curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1); + curl_setopt( $ch, CURLOPT_HEADER, 1); + curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1); + + if( $cookie ){ //(e.g., "fruit=apple; colour=red") + curl_setopt( $ch, CURLOPT_COOKIE, $cookie); + } + + $curl_result = curl_exec( $ch ); + curl_close( $ch ); + + list( $header, $response ) = explode("\r\n\r\n", $curl_result, 2); + $header = get_http_header_as_array($header); + + switch( $retm ){ + case "all": + return Array( + "header" => $header, + "response" => $response, + ); + case "header": + return $header; + case "body": + default: + return $response; + } +} + +function get_http_header_as_array($rawheader){ + $header_array = array(); + $header_rows = explode("\n",$rawheader); + for($i=0;$iDB->dbconn; \ No newline at end of file diff --git a/lib/db/db_where.class.php b/lib/db/db_where.class.php new file mode 100644 index 0000000..c190a50 --- /dev/null +++ b/lib/db/db_where.class.php @@ -0,0 +1,75 @@ +where_obj = new stdClass(); + $this->where_obj->com = $com; + $this->where_obj->row = array(); + switch( $com ){ + case "and": + $this->add("1=?",1); break; + case "or": + $this->add("1<>?",1); break; + } + } + + public function add($qry, $val="EMPTY"){ + if( is_array($val) ){ + foreach( $val as $v ){ + $this->where_obj->row[] = array("qry"=>$qry,"val"=>$v); + } + }else{ + $this->where_obj->row[] = array("qry"=>$qry,"val"=>$val); + } + } + + public function sub_where($com){ + $sub_where = new DB_where($com); + $this->where_obj->row[] = $sub_where; + return $sub_where; + } + + public function get_where(){ + $qryrow = array(); + $valrow = array(); + foreach( (array)$this->where_obj->row as $wval ){ + if( is_object($wval) ){ + $subs = $wval->get_where(); + $qryrow[] = "( {$subs['qry']} )"; + $valrow = array_merge($valrow, $subs['val']); + }else{ + if( $wval['val'] == "EMPTY" ) { + $qryrow[] = "{$wval['qry']}"; + }else{ + if ($this->chkeval($wval['val'])) { + $qryrow[] = str_replace("?", $this->valeval($wval['val']), $wval['qry']); + } else { + $qryrow[] = "{$wval['qry']}"; + array_push($valrow, $wval['val']); + } + } + } + } + return array( + 'qry' => implode( " {$this->where_obj->com} ", $qryrow ), + 'val' => $valrow, + ); + } + + public function sqleval($str){ + return chr(27).$str; + } + + public function chkeval($str){ + if( preg_match("/^".chr(27)."/ims",$str) ){ + return true; + } + return false; + } + + public function valeval($str,$val=""){ + return preg_replace("/^".chr(27)."/ims",$val,$str); + } +} \ No newline at end of file diff --git a/lib/db/mssql.class.php b/lib/db/mssql.class.php new file mode 100644 index 0000000..e298cc3 --- /dev/null +++ b/lib/db/mssql.class.php @@ -0,0 +1,508 @@ +dboption = $db_option ?: $_config_db_option; + + if( !$db_option && $__dbconn__ ) { //기본 Connection을 이용 + $this->dbconn = $__dbconn__; + }else{ //전용 Connection을 이용 + $this->dbConn($db_option); + } + } + + public function dbConn($db_option=""){ + $_config_db_option = @parse_ini_file("db_config.php"); + if( !$_config_db_option ){ + $_config_db_option = @parse_ini_file(_ROOT_PATH_."/config/db_config.php"); + } + if( !$db_option ) $db_option = array(); + + /*위에 있어서 필요없는 코드*/ + $db_option["database_type"] = $db_option["database_type"] ?: $_config_db_option["database_type"]; + $db_option["database_host"] = $db_option["database_host"] ?: $_config_db_option["database_host"]; + $db_option["database_port"] = $db_option["database_port"] ?: $_config_db_option["database_port"]; + $db_option["database_name"] = $db_option["database_name"] ?: $_config_db_option["database_name"]; + $db_option["database_user"] = $db_option["database_user"] ?: $_config_db_option["database_user"]; + $db_option["database_pass"] = $db_option["database_pass"] ?: $_config_db_option["database_pass"]; + $db_option["database_encode"] = $db_option["database_encode"] ?: $_config_db_option["database_encode"]; + $db_option["database_charset"] = $db_option["database_charset"] ?: $_config_db_option["database_charset"]; + $db_option["database_old"] = $db_option["database_old"] ?: $_config_db_option["database_old"]; + + if( !$this->dboption ){ + $this->dboption = $db_option; + } + $addr = "{$db_option['database_host']},{$db_option['database_port']}"; + $option = Array( + "Database" => $db_option['database_name'], + "Uid" => $db_option['database_user'], + "PWD" => $db_option['database_pass'], + "CharacterSet" => $db_option['database_encode'], + "TrustServerCertificate" => "yes", + "ConnectionPooling" => 0, + ); + $conn = sqlsrv_connect( $addr, $option); + if( $conn ){ + $this->dbconn = $conn; + if( defined("TB_query_log") ){ + $this->tableExists(TB_query_log); + } + return $conn; + + }else{ + die('Could not connect: ' . print_r(sqlsrv_errors(), true)); + } + } + + public function qry($sql, $sqlrow="", $options="", $print=""){ + return $this->cqry($sql, $sqlrow, $options, $print); + } + + public function cqry($sql, $sqlrow="", $options="", $print="", $rev=1){ + if( $rev === 1 ){ + $anrow = $this->anqry($sqlrow); + $params = $anrow['params']; + }else{ + $params = $sqlrow; + } + if( $print || $this->query_print ){ + echo $this->mkstr($sql,$params?:Array()); + } + if( $print ){exit;} + $stmt = @sqlsrv_query($this->dbconn, $sql, $params?:Array(), $options?:Array()); + if( $stmt ){ + $result = "SUCCESS"; + $rst = $stmt; + }else{ + $bpage = debug_backtrace(); + $fname = $bpage[count($bpage)-1]['file']; + + if( !$GLOBALS['NO_SQL_ERR'] ){ + $result = print_r(sqlsrv_errors(), true); + echo "
{$fname}".PHP_EOL.$sql.PHP_EOL.print_r($params?:Array(),1).PHP_EOL.PHP_EOL.print_r(sqlsrv_errors(), true)."
"; + }else{ + $result = "NO_SQL_ERROR"; + } + $rst = false; + } + if( $this->query_record ){ + $this->putQueryLog( $sql, $params, $result ); + } + return $rst; + } + + public function query($sql, $params="", $options="", $print=""){ + $stmt = $this->qry($sql, $params?:Array(), $options?:Array(), $print); + if( !$stmt ) return false; + + $rows = Array(); + while( $row = $this->fetch_array($stmt) ){ + $rows[] = $row; + } + return $rows; + } + + public function call( $procedure, $params=array() ){ + $anrow = $this->anqry($params); + $sql = "{CALL {$procedure} (".implode(",",$anrow['val']).")}"; + return $this->qry($sql, $params); + } + + public function call_output( $procedure, $params=array() ){ + $anrow = $this->anqry($params); + $sql = "{CALL {$procedure} ".implode(",",$anrow['val']).")}"; + return $this->cqry($sql, $params,"","",2); + } + + public function call_next( $stmt ){ + return @sqlsrv_next_result($stmt); + } + + public function call_all( $procedure, $params=array() ){ + $rst = $this->call( $procedure, $params ); + if( $rst ){ + $rows = Array(); + while( $row = $this->fetch_array($rst) ){ + $rows[] = $row; + } + return $rows; + } + return $rst; + } + + public function exec( $procedure, $params=array() ){ + $anrow = $this->anqry($params); + $sql = "EXEC {$procedure} ".implode(",",$anrow['val']).""; + return $this->qry($sql, $params); + } + + public function exec_output( $procedure, $params=array() ){ //$params => 숫자키 배열 + $anrow = $this->anqry($params); + $sql = "EXEC {$procedure} ".implode(",",$anrow['val']).""; + return $this->cqry($sql, $params,"","",2); + } + + public function exec_output_merge( $procedure, $params=array() ){ //$params => 문자 키 배열. output요소가 array(array("값",SQLSRV_PARAM_OUT)) 가 되어야 한다. + $oparams = Array(); + foreach( $params as $val ){ + $oparams[] = $val; + } + + $anrow = $this->anqry($oparams); + $sql = "EXEC {$procedure} ".implode(",",$anrow['val']).""; + return $this->cqry($sql, $oparams,"","",2); + } + + public function exec_next( $stmt ){ + return @sqlsrv_next_result($stmt); + } + + public function exec_all( $procedure, $params=array() ){ + $rst = $this->exec( $procedure, $params ); + if( $rst ){ + $rows = Array(); + while( $row = $this->fetch_array($rst) ){ + $rows[] = $row; + } + return $rows; + } + return $rst; + } + + public function queryFirstField($sql, $params="", $options="", $print=""){ + $stmt = $this->qry($sql, $params?:Array(), $options?:Array(), $print); + + if( !$stmt ) return false; + + return $this->result($stmt,0,0); + } + + public function queryFirstRow($sql, $params="", $options="", $print=""){ + $stmt = $this->qry($sql, $params?:Array(), $options?:Array(), $print); + + if( !$stmt ) return false; + + return $this->fetch_array($stmt); + } + + public function pqry($sql, $params="", $options=""){ + return $this->qry($sql, $params?:Array(), $options?:Array(), 1); + } + + public function pquery($sql, $params="", $options=""){ + return $this->query($sql, $params?:Array(), $options?:Array(), 1); + } + + public function fetch_row($stmt){ + if( $stmt ){ + return @sqlsrv_fetch_array($stmt, 1); + } + return "sqlsrv_fetch_array Error #1"; + } + + public function fetch_array($stmt){ + if( $stmt ){ + return @sqlsrv_fetch_array($stmt, 2); + } + echo "sqlsrv_fetch_array Error #2"; + } + + public function fetch_object($stmt){ + if( $stmt ){ + return @sqlsrv_fetch_object($stmt, 2); + } + echo "sqlsrv_fetch_object Error #2"; + } + + public function num_rows($stmt){ + if( $stmt ){ + return @sqlsrv_num_rows($stmt); + } + echo "sqlsrv_num_rows Error"; + } + + public function select_count($tb, $where="", $whererow="", $print=""){ + $where = $where?:"1=1"; + $sql = "select count(*) from {$tb} where {$where}"; + return $this->queryFirstField($sql, $whererow?:array(), $print); + } + + public function insert($tb, $row, $print=""){ + $anrow = $this->anqry($row); + $sql = "insert into {$tb} (".implode(",",$anrow['fld']).") values (".implode(",",$anrow['val']).")"; + $rst = $this->qry($sql, $anrow['params'], "", $print); + return (bool)$rst; + } + + public function update($tb, $row, $where="", $whererow="", $print=""){ + $where = $where?:"1=1"; + $anrow = $this->anqry($row); + $sql = "update {$tb} set "; + + $setrow = array(); + foreach( (array)$anrow['fld'] as $k => $v ){ + $setrow[] = " {$v} = {$anrow['val'][$k]} "; + } + $sql.= implode(",",$setrow)." where {$where}"; + foreach( (array)$whererow as $k => $v ){ + $anrow['params'][] = $v; + } + $rst = $this->qry($sql, $anrow['params'], "", $print); + return (bool)$rst; + } + + public function insertupdate($tb, $ins_row, $upt_row, $where="", $whererow="", $print=""){ + $where = $where?:"1=1"; + $ins_anrow = $this->anqry($ins_row); + $upt_anrow = $this->anqry($upt_row); + $setrow = array(); + foreach( (array)$upt_anrow['fld'] as $k => $v ){ + $setrow[] = " {$v} = {$upt_anrow['val'][$k]} "; + } + + $sql = "merge into {$tb} as A using (select 1 as dual) as B on ({$where}) "; + $sql.= "when matched then "; + $sql.= "update set ".implode(",",$setrow)." "; + $sql.= "when not matched then "; + $sql.= "insert (".implode(",",$ins_anrow['fld']).") values (".implode(",",$ins_anrow['val']).");"; + + $params = array_merge($whererow, $upt_anrow['params'], $ins_anrow['params']); + + $rst = $this->qry($sql, $params?:Array(), "", $print); + return (bool)$rst; + } + + public function delete($tb, $where, $whererow="", $print=""){ + $where = $where?:"1=1"; + $sql = "delete from {$tb} where {$where}"; + $rst = $this->qry($sql, $whererow?:Array(), "", $print); + return (bool)$rst; + } + + public function insertId($tb){ + if( $tb ){ + $sql = "select ident_current(?)"; + return $this->queryFirstField($sql,array($tb)); + }else{ + $sql = "select @@identity"; + return $this->queryFirstField($sql); + } + //@@IDENTITY 현재 세션의 테이블에서 생성된 마지막 ID 값을 반환합니다. --// 현재 세션내 모든 테이블에서 발생하는 ID값중 마지막 + //SCOPE_IDENTITY() 현재 세션의 테이블에서 생성된 마지막 ID 값을 반환합니다. --// 현재 세션내 특 + //IDENT_CURRENT() 임의 세션 및 범위에 있는 특정 테이블에 생성된 값을 반환합니다. + } + + public function anqry($row){ // 필드와 값 분리 + assign value + $fld = array(); + $val = array(); + $params = array(); + foreach( (array)$row as $k => $v ){ + $fld[] = $k; + if( $this->chkeval($v) ){ + $val[] = $this->valeval($v); + }else{ + $val[] = "?"; + $params[] = $v; + } + } + return Array( "fld"=>$fld, "val"=>$val, "params"=>$params ); + } + + public function result($stmt, $rows=0, $cols=0){ + $rows = intval($rows); + for( $a=0 ; $a<=$rows ; $a++ ){ + if( is_int($cols) ){ + $arr = $this->fetch_row($stmt); + }else{ + $arr = $this->fetch_array($stmt); + } + } + return is_array($arr)?$arr[$cols]:$arr; + } + + public function mkstr( $sql, $params="" ){ //쿼리 출력 + $params = $params?:Array(); + $str = $sql; + for( $a=0 ; $a < substr_count($sql, "?") ; $a++ ){ + $str = $this->str_freplace("?","'{$params[$a]}'",$str); + } + return $str; + } + + public function str_freplace( $needle, $replace, $str ){ + $pos = strpos($str, $needle); + if( $pos !== false ){ + $nstr = substr_replace($str, $replace, $pos, strlen($needle)); + } + return $nstr; + } + + public function limit($start, $length){ + if( $length > 0 ){ + return " offset {$start} rows fetch next {$length} rows only "; + } + return ''; + } + + public function addLimit($sql, $ordby, $start, $length){ + $ordby = $ordby?:1; + $start = $start?:0; + $length = $length?:999999999998; + + if( $this->dboption["database_version"] && $this->dboption["database_version"] <= "2008" ){ + $start = $start+1; + $length = $start+$length-1; + $sql = "select * from ( select *, row_number() over(order by {$ordby}) as ROWNUM from ({$sql}) as tblsub ) as tblmain where ROWNUM between {$start} and {$length}"; + }else { + $sql = "{$sql} order by {$ordby} offset {$start} rows fetch next {$length} rows only "; + } + + return $sql; + } + + public function sqleval($str){ + return chr(27).$str; + } + + public function chkeval($str){ + if( !is_array($str) && preg_match("/^".chr(27)."/ims",$str) ){ + return true; + } + return false; + } + + public function valeval($str,$val=""){ + return preg_replace("/^".chr(27)."/ims",$val,$str); + } + + public function tableExists( $table ){ + if( !$table ) return false; + + $tbl = explode(".",$table); + if( !$tbl[1] ){ + $database = "dbo"; + $table = $tbl[0]; + }else{ + $database = $tbl[0]; + $table = $tbl[1]; + } + $cnt = $this->queryFirstField("select 1 from Information_schema.tables where TABLE_TYPE = ? and TABLE_NAME = ?", array( + "BASE TABLE", + $table + )); + if( $cnt ){ + return true; + }else{ + if( !( $fs = fopen( TB_schema_file, "r") ) ) return false; + + while( $rw = fgets($fs, 255) ){ + $tbname = defined("TB_HEAD")?preg_replace("/^".TB_HEAD."/","",$table):$table; + + if( chop($rw) == "[{$tbname}]" ) break; + } + + $query = "create table {$database}.{$table} "; + while( $rw = fgets($fs, 255) ){ + if( chop($rw) != "-end-" ){ + $rw = preg_replace("/ comment[ \=].*\'.*\'/ims","",$rw); + $rw = preg_replace("/CONSTRAINT pk\_/ims","CONSTRAINT pk_".TB_HEAD,$rw); + $rw = preg_replace("/CONSTRAINT fk\_/ims","CONSTRAINT fk_".TB_HEAD,$rw); + $rw = preg_replace("/CONSTRAINT uk\_/ims","CONSTRAINT uk_".TB_HEAD,$rw); + $rw = preg_replace("/CONSTRAINT ik\_/ims","CONSTRAINT ik_".TB_HEAD,$rw); + $query .= $rw; + }else{ + break; + } + } + fclose($fs); + $rst = $this->qry($query); + if( $rst ){ + include TB_data_file; + if( isset($table_base_data[$tbname]) ){ + foreach( $table_base_data[$tbname] as $val ){ + $this->insert($table, $val); + } + } + } + return $rst; + } + } + + public function putQueryLog( $save_sql, $save_params, $result ){ + global $__dbconn__; + if( !defined("TB_query_log") ) return false; + if( preg_match("/Information_schema.tables/ims", $save_sql) ) return false; + + $this->delQueryLog(1); + + $qryrow = Array( + "query_date" => $this->sqleval("CURRENT_TIMESTAMP"), + "query_result" => $result, + "host_name" => $this->dboption["database_host"], + "db_name" => $this->dboption["database_name"], + "query_string" => $save_sql, + "query_params" => @print_r($save_params, true), + "visit_sess" => $_SESSION['visit_sess'], + "member_id" => $GLOBALS['_Umem']['member_id'], + ); + + $anrow = $this->anqry($qryrow); + $sql = "insert into ".TB_query_log." (".implode(",",$anrow['fld']).") values (".implode(",",$anrow['val']).")"; + return @sqlsrv_query($__dbconn__, $sql, $anrow['params']); + } + + public function delQueryLog( $month = 6 ){ + global $__dbconn__; + + if( rand(1,100) === 50 ){ // 1% 확률로 삭제 + $month= -1*abs($month); + $sql = "delete from ".TB_query_log." where query_date < dateadd(month, {$month}, getdate()) "; + return @sqlsrv_query($__dbconn__, $sql); + } + return false; + } + + public function callTransaction(){ + return sqlsrv_begin_transaction( $this->dbconn ); + } + + public function callCommit(){ + return sqlsrv_commit( $this->dbconn ); + } + + public function callRollBack(){ + return sqlsrv_rollback( $this->dbconn ); + } + + public function setPrint(){ + $this->query_print = true; + } + + public function resetPrint(){ + $this->query_print = false; + } + + public function setRecord(){ + $this->query_record = true; + } + + public function resetRecord(){ + $this->query_record = false; + } +} + +class BaseDB { + public $DB; + public $lcrypt; + public function __construct($db_option=""){ + $this->DB = new DB_Mssql($db_option); + $this->lcrypt = new lcrypt(); + } +} \ No newline at end of file diff --git a/lib/db/mssql_lib.php b/lib/db/mssql_lib.php new file mode 100644 index 0000000..ebcdeba --- /dev/null +++ b/lib/db/mssql_lib.php @@ -0,0 +1,31 @@ + $db_option['database_name'], + "Uid" => $db_option['database_user'], + "PWD" => $db_option['database_pass'], + "CharacterSet" => $db_option['database_encode'], + ); + if( $db_option['database_old'] ){ + $option['Encrypt'] = "yes"; + $option['TrustServerCertificate'] = "yes"; + } + $conn = sqlsrv_connect( $addr, $option); + if( $conn ){ + return $conn; + }else{ + die('Could not connect: ' . print_r(sqlsrv_errors(), true)); + } +} + +function sqlsrv_qry($conn, $tsql, $params=Array(), $options=Array()){ + $stmt = @sqlsrv_query($conn, $tsql, $params, $options); + if( $stmt ) return $stmt; + else { + echo "
".print_r(sqlsrv_errors(), true)."
"; + return false; + } +} + +//에러 처리용으로 하나만 만들고 기본 예약함수만 쓴다. \ No newline at end of file diff --git a/lib/db/mysql.class.php b/lib/db/mysql.class.php new file mode 100644 index 0000000..a814366 --- /dev/null +++ b/lib/db/mysql.class.php @@ -0,0 +1 @@ +getFromToken($_REQUEST['member_token']); + $token_stauts = $tkObj->statusToken($token_info); + switch( $token_stauts ){ + case "E" : //토큰 연장 + $new_token = $tkObj->putToken($token_info['member_id'], $token_info['auth']); + case "Y" : //토큰 유효 + $_SESSION['auth_mem_id'] = $token_info['member_id']; + break; + + // 토큰 연장처리 되어 새로운 토큰($new_token) 이 발행되었는데도 갱신하지 않고, + // 예전 토큰 그대로 사용하면 중복 인증요청으로 무효토큰 처리되니 + // 새로운 토큰이 발행되면 다음 요청시엔 꼭 새로운 토큰으로 교체하는 과정이 필요. + // APP 에서 요청할때 응답이 필요한 요청이외의 단순 요청부분까지 응답을 필수 확인하여 $new_token 값이 있는지 점검후 교체하는 로직 필수!! + + case "F" : //토큰 비활성 + $tkObj->retireToken( $token_info['auth'] ); + case "N" : //토큰 무효 + unset($_SESSION['auth_mem_id']); + break; + } +} + +$GLOBALS['week_word'] = Array( + "eng" => Array( + "sun", + "mon", + "the", + "wed", + "thu", + "fri", + "sat", + ), + "kor" => Array( + "일", + "월", + "화", + "수", + "목", + "금", + "토", + ) +); +$GLOBALS['mon_word'] = Array( + "eng" => Array( + "jan", + "feb", + "mar", + "apr", + "may", + "jun", + "jul", + "aug", + "sep", + "oct", + "nov", + "dec", + ), + "kor" => Array( + "01월", + "02월", + "03월", + "04월", + "05월", + "06월", + "07월", + "08월", + "09월", + "10월", + "11월", + "12월", + ) +); + +$baseObj = new Member(); +$GLOBALS['_Umem'] = $baseObj->loginCheck($_SESSION['auth_mem_id']); + +$GLOBALS['_varsBaseCode'] = Array( //기본변수 + "line_num" => 20, //기본 라인수 + "page_num" => 5, //기본 페이지 출력수 + "id_len" => 6, //아이디 길이 + "pw_len" => 6, //비밀번호 길이 + "cate_depth" => 4, //카테고리 분류 최대 자리수. 4자리는 0001 ~ 9999 까지 레벨당 총 9999개 Child를 가지게 된다. +); + +$GLOBALS['_varsMemStatus'] = Array( //회원상태 + 1 => "활동중", + 2 => "승인대기", + 3 => "정지", +); + +$GLOBALS['_varsLoginResult'] = Array( //로그인결과 + 0 => "실패", + 1 => "성공", +); + +$GLOBALS['_varsMenuArea'] = Array( //사용 페이지구분 + "service" => "사용자/실무자 화면", + "partner" => "고객사 관리화면", + "admin" => "관리자 화면" +); + +$GLOBALS['_varsAuthArea'] = Array( //권한대상 + "G" => "그룹권한", + "M" => "개별권한", +); + +$GLOBALS['_varsAuthAdmin'] = Array( //관리자구분 + "SA" => "슈퍼관리자", + "A" => "일반관리자", +); + +$GLOBALS['_varsAuthMember'] = Array( //회원구분 + "SM" => "특별회원", + "M" => "일반회원", + "Y" => "게스트", +); + +$GLOBALS['_varsCommonStatus'] = Array( //공통 상태허용 + "0" => "정지", + "1" => "활동중", +); + +$GLOBALS['_varsBoardEditor'] = Array( //웹에디터 선택 + "tinymce" => "웹에디터", + "text" => "텍스트", +); + +$GLOBALS['_varsPagingList'] = Array("5"=>5,"10"=>10,"20"=>20,"50"=>50,"100"=>100,"200"=>200,"500"=>500,"1000"=>1000,"2000"=>2000,"5000"=>5000,"10000"=>10000); + +/* 디폴트 값을 기준정보 관리와 매칭 시켜야 한다. */ +//$GLOBALS['_varsBaseCode'] = array_merge_static($GLOBALS['_varsBaseCode'], $baseObj->getBaseCodeVars("cm_var","cm_var")); +//$GLOBALS['_varsMemStatus'] = $baseObj->getBaseCodeVars("mem_status","mem_status") ?: $GLOBALS['_varsMemStatus']; +//$GLOBALS['_varsLoginResult'] = $baseObj->getBaseCodeVars("login_result","login_result") ?: $GLOBALS['_varsLoginResult']; +//$GLOBALS['_varsMenuArea'] = $baseObj->getBaseCodeVars("menu_area","menu_area") ?: $GLOBALS['_varsMenuArea']; +//$GLOBALS['_varsAuthArea'] = $baseObj->getBaseCodeVars("auth_area","auth_area") ?: $GLOBALS['_varsAuthArea']; +//$GLOBALS['_varsAuthAdmin'] = $baseObj->getBaseCodeVars("auth_admin","auth_admin") ?: $GLOBALS['_varsAuthAdmin']; +//$GLOBALS['_varsAuthMember'] = $baseObj->getBaseCodeVars("auth_member","auth_member") ?: $GLOBALS['_varsAuthMember']; +//$GLOBALS['_varsCommonStatus'] = $baseObj->getBaseCodeVars("common_status","common_status") ?: $GLOBALS['_varsCommonStatus']; +//$GLOBALS['_varsBoardEditor'] = $baseObj->getBaseCodeVars("board_editor","board_editor") ?: $GLOBALS['_varsBoardEditor']; +//$GLOBALS['_varsPosition'] = $baseObj->getBaseCodeVars("position","position") ?: $GLOBALS['_varsPosition']; +//$GLOBALS['_varsJobrole'] = $baseObj->getBaseCodeVars("JOB_ROLE","JOB_ROLE") ?: $GLOBALS['_varsJobrole']; +//$GLOBALS['_varsJobfunc'] = $baseObj->getBaseCodeVars("JOB_FUNC","JOB_FUNC") ?: $GLOBALS['_varsJobfunc']; +//$GLOBALS['_varsEmptype'] = $baseObj->getBaseCodeVars("EMP_TYPE","EMP_TYPE") ?: $GLOBALS['_varsEmptype']; +//$GLOBALS['_varsNations'] = $baseObj->getBaseCodeVars("nation_code","nation_code") ?: $GLOBALS['_varsNations']; +//$GLOBALS['_varsCurrency'] = $baseObj->getBaseCodeVars("currency","currency") ?: $GLOBALS['_varsCurrency']; +//$GLOBALS['_varsCurrencyExp'] = $baseObj->getBaseCodeVarsExp("currency","currency") ?: $GLOBALS['_varsCurrency']; +//$GLOBALS['_WH_TYPE'] = $baseObj->getBaseCodeVars("WH_TYPE","WH_TYPE") ?: $GLOBALS['_WH_TYPE']; +//$GLOBALS['_ITEM_GRP'] = $baseObj->getBaseCodeVars("ITEM_GRP","ITEM_GRP") ?: $GLOBALS['_ITEM_GRP']; +//$GLOBALS['_SHAPE_GRP'] = $baseObj->getBaseGroupVars("SHAPE_TYPE") ?: $GLOBALS['_SHAPE_TYPE']; +//$GLOBALS['_SHAPE_TYPE'] = $baseObj->getBaseCodeVars("SHAPE_TYPE") ?: $GLOBALS['_SHAPE_TYPE']; +//$GLOBALS['_ITEM_ACCNT'] = $baseObj->getBaseCodeVars("ITEM_ACCNT","ITEM_ACCNT") ?: $GLOBALS['_ITEM_ACCNT']; +//$GLOBALS['_LOCATION_TYPE'] = $baseObj->getBaseCodeVars("LOCATION_TYPE","LOCATION_TYPE") ?: $GLOBALS['_LOCATION_TYPE']; +//$GLOBALS['_OP_GRP'] = $baseObj->getBaseCodeVars("OP_GRP","OP_GRP") ?: $GLOBALS['_OP_GRP']; +//$GLOBALS['_ITEM_SPEC'] = $baseObj->getBaseCodeVars("ITEM_SPEC","ITEM_SPEC") ?: $GLOBALS['_ITEM_SPEC']; +//$GLOBALS['_INSP_ITEM'] = $baseObj->getBaseCodeVars("INSP_ITEM","INSP_ITEM") ?: $GLOBALS['_INSP_ITEM']; +//$GLOBALS['_SALES_GRP'] = $baseObj->getBaseCodeVars("SALES_GRP","SALES_GRP") ?: $GLOBALS['_SALES_GRP']; +//$GLOBALS['_DEAL_TYPE'] = $baseObj->getBaseCodeVars("DEAL_TYPE","DEAL_TYPE") ?: $GLOBALS['_DEAL_TYPE']; +//$GLOBALS['_PAY_METH'] = $baseObj->getBaseCodeVars("PAY_METH","PAY_METH") ?: $GLOBALS['_PAY_METH']; +//$GLOBALS['_UNIT'] = $baseObj->getBaseCodeVars("UNIT","UNIT") ?: $GLOBALS['_UNIT']; +//$GLOBALS['_SHIFT_ID'] = $baseObj->getBaseCodeVars("SHIFT_ID","SHIFT_ID") ?: $GLOBALS['_SHIFT_ID']; +//$GLOBALS['_SHIFT_TYPE'] = $baseObj->getBaseCodeVars("SHIFT_TYPE","SHIFT_TYPE") ?: $GLOBALS['_SHIFT_TYPE']; +//$GLOBALS['_TM_TYPE'] = $baseObj->getBaseCodeVars("TM_TYPE","TM_TYPE") ?: $GLOBALS['_TM_TYPE']; +//$GLOBALS['_FACLT_TYPE'] = $baseObj->getBaseCodeVars("FACLT_TYPE","FACLT_TYPE") ?: $GLOBALS['_FACLT_TYPE']; +//$GLOBALS['_FACLT_TYPE_EXP'] = $baseObj->getBaseCodeVarsExp("FACLT_TYPE","FACLT_TYPE") ?: $GLOBALS['_FACLT_TYPE']; +//$GLOBALS['_IN_TYPE'] = $baseObj->getBaseCodeVars("IN_TYPE","IN_TYPE") ?: $GLOBALS['_IN_TYPE']; +//$GLOBALS['_EXPEN_TYPE'] = $baseObj->getBaseCodeVars("EXPEN_TYPE","EXPEN_TYPE") ?: $GLOBALS['_EXPEN_TYPE']; +//$GLOBALS['_OP_PART'] = $baseObj->getBaseCodeVars("OP_PART","OP_PART") ?: $GLOBALS['_OP_PART']; +//$GLOBALS['_RUNSTOP_GB'] = $baseObj->getBaseCodeVars("RUNSTOP_GB","RUNSTOP_GB") ?: $GLOBALS['_RUNSTOP_GB']; +//$GLOBALS['_ITEN_STATUS'] = $baseObj->getBaseCodeVars("ITEN_STATUS","ITEN_STATUS") ?: $GLOBALS['_ITEN_STATUS']; +//$GLOBALS['_PROD_STATUS'] = $baseObj->getBaseCodeVars("PROD_STATUS","PROD_STATUS") ?: $GLOBALS['_PROD_STATUS']; +//$GLOBALS['_FOUND_TYPE'] = $baseObj->getBaseCodeVars("FOUND_TYPE","FOUND_TYPE") ?: $GLOBALS['_FOUND_TYPE']; +//$GLOBALS['_JUDG_CD'] = $baseObj->getBaseCodeVars("JUDG_CD","JUDG_CD") ?: $GLOBALS['_JUDG_CD']; +//$GLOBALS['_LOAD_TYPE'] = $baseObj->getBaseCodeVars("LOAD_TYPE","LOAD_TYPE") ?: $GLOBALS['_LOAD_TYPE']; +//$GLOBALS['_REQ_INSP_ITEM'] = $baseObj->getBaseCodeVars("REQ_INSP_ITEM","REQ_INSP_ITEM") ?: $GLOBALS['_REQ_INSP_ITEM']; + +$GLOBALS['_ALL_BASE'] = $baseObj->getBaseCodeVarsAll("","") ?: ""; + +$GLOBALS['_varsBaseCode'] = array_merge_static($GLOBALS['_varsBaseCode'], $GLOBALS['_ALL_BASE']['CODE']['cm_var']); +$GLOBALS['_SHAPE_GRP'] = $baseObj->getBaseGroupVars("SHAPE_TYPE") ?: $GLOBALS['_SHAPE_TYPE']; +$GLOBALS['_varsMemStatus'] = $GLOBALS['_ALL_BASE']['CODE']['mem_status'] ?: $GLOBALS['_varsMemStatus']; +$GLOBALS['_varsLoginResult'] = $GLOBALS['_ALL_BASE']['CODE']['login_result'] ?: $GLOBALS['_varsLoginResult']; +$GLOBALS['_varsMenuArea'] = $GLOBALS['_ALL_BASE']['CODE']['menu_area'] ?: $GLOBALS['_varsMenuArea']; +$GLOBALS['_varsAuthArea'] = $GLOBALS['_ALL_BASE']['CODE']['auth_area'] ?: $GLOBALS['_varsAuthArea']; +$GLOBALS['_varsAuthAdmin'] = $GLOBALS['_ALL_BASE']['CODE']['auth_admin'] ?: $GLOBALS['_varsAuthAdmin']; +$GLOBALS['_varsAuthMember'] = $GLOBALS['_ALL_BASE']['CODE']['auth_member'] ?: $GLOBALS['_varsAuthMember']; +$GLOBALS['_varsCommonStatus'] = $GLOBALS['_ALL_BASE']['CODE']['common_status'] ?: $GLOBALS['_varsCommonStatus']; +// $GLOBALS['_varsBoardEditor'] = $GLOBALS['_ALL_BASE']['CODE']['board_editor'] ?: $GLOBALS['_varsBoardEditor']; +$GLOBALS['_varsPosition'] = $GLOBALS['_ALL_BASE']['CODE']['position'] ?: $GLOBALS['_varsPosition']; +$GLOBALS['_varsJobrole'] = $GLOBALS['_ALL_BASE']['CODE']['JOB_ROLE'] ?: $GLOBALS['_varsJobrole']; +$GLOBALS['_varsJobfunc'] = $GLOBALS['_ALL_BASE']['CODE']['JOB_FUNC'] ?: $GLOBALS['_varsJobfunc']; +$GLOBALS['_varsEmptype'] = $GLOBALS['_ALL_BASE']['CODE']['EMP_TYPE'] ?: $GLOBALS['_varsEmptype']; +$GLOBALS['_varsNations'] = $GLOBALS['_ALL_BASE']['CODE']['nation_code'] ?: $GLOBALS['_varsNations']; +$GLOBALS['_varsCurrency'] = $GLOBALS['_ALL_BASE']['CODE']['currency'] ?: $GLOBALS['_varsCurrency']; +$GLOBALS['_varsCurrencyExp'] = $GLOBALS['_ALL_BASE']['CODEEXP']['currency'] ?: $GLOBALS['_varsCurrency']; +$GLOBALS['_WH_TYPE'] = $GLOBALS['_ALL_BASE']['CODE']['WH_TYPE'] ?: $GLOBALS['_WH_TYPE']; +$GLOBALS['_ITEM_GRP'] = $GLOBALS['_ALL_BASE']['CODE']['ITEM_GRP'] ?: $GLOBALS['_ITEM_GRP']; +$GLOBALS['_SHAPE_TYPE'] = $GLOBALS['_ALL_BASE']['CODE']['SHAPE_TYPE'] ?: $GLOBALS['_SHAPE_TYPE']; +$GLOBALS['_ITEM_ACCNT'] = $GLOBALS['_ALL_BASE']['CODE']['ITEM_ACCNT'] ?: $GLOBALS['_ITEM_ACCNT']; +$GLOBALS['_LOCATION_TYPE'] = $GLOBALS['_ALL_BASE']['CODE']['LOCATION_TYPE'] ?: $GLOBALS['_LOCATION_TYPE']; +$GLOBALS['_OP_GRP'] = $GLOBALS['_ALL_BASE']['CODE']['OP_GRP'] ?: $GLOBALS['_OP_GRP']; +$GLOBALS['_ITEM_SPEC'] = $GLOBALS['_ALL_BASE']['CODE']['ITEM_SPEC'] ?: $GLOBALS['_ITEM_SPEC']; +$GLOBALS['_INSP_ITEM'] = $GLOBALS['_ALL_BASE']['CODE']['INSP_ITEM'] ?: $GLOBALS['_INSP_ITEM']; +$GLOBALS['_SALES_GRP'] = $GLOBALS['_ALL_BASE']['CODE']['SALES_GRP'] ?: $GLOBALS['_SALES_GRP']; +$GLOBALS['_DEAL_TYPE'] = $GLOBALS['_ALL_BASE']['CODE']['DEAL_TYPE'] ?: $GLOBALS['_DEAL_TYPE']; +$GLOBALS['_PAY_METH'] = $GLOBALS['_ALL_BASE']['CODE']['PAY_METH'] ?: $GLOBALS['_PAY_METH']; +$GLOBALS['_UNIT'] = $GLOBALS['_ALL_BASE']['CODE']['UNIT'] ?: $GLOBALS['_UNIT']; +$GLOBALS['_SHIFT_ID'] = $GLOBALS['_ALL_BASE']['CODE']['SHIFT_ID'] ?: $GLOBALS['_SHIFT_ID']; +$GLOBALS['_SHIFT_TYPE'] = $GLOBALS['_ALL_BASE']['CODE']['SHIFT_TYPE'] ?: $GLOBALS['_SHIFT_TYPE']; +$GLOBALS['_TM_TYPE'] = $GLOBALS['_ALL_BASE']['CODE']['TM_TYPE'] ?: $GLOBALS['_TM_TYPE']; +$GLOBALS['_FACLT_TYPE'] = $GLOBALS['_ALL_BASE']['CODE']['FACLT_TYPE'] ?: $GLOBALS['_FACLT_TYPE']; +$GLOBALS['_FACLT_TYPE_EXP'] = $GLOBALS['_ALL_BASE']['CODEEXP']['FACLT_TYPE'] ?: $GLOBALS['_FACLT_TYPE']; +$GLOBALS['_IN_TYPE'] = $GLOBALS['_ALL_BASE']['CODE']['IN_TYPE'] ?: $GLOBALS['_IN_TYPE']; +$GLOBALS['_EXPEN_TYPE'] = $GLOBALS['_ALL_BASE']['CODE']['EXPEN_TYPE'] ?: $GLOBALS['_EXPEN_TYPE']; +$GLOBALS['_OP_PART'] = $GLOBALS['_ALL_BASE']['CODE']['OP_PART'] ?: $GLOBALS['_OP_PART']; +$GLOBALS['_RUNSTOP_GB'] = $GLOBALS['_ALL_BASE']['CODE']['RUNSTOP_GB'] ?: $GLOBALS['_RUNSTOP_GB']; +$GLOBALS['_ITEN_STATUS'] = $GLOBALS['_ALL_BASE']['CODE']['ITEN_STATUS'] ?: $GLOBALS['_ITEN_STATUS']; +$GLOBALS['_PROD_STATUS'] = $GLOBALS['_ALL_BASE']['CODE']['PROD_STATUS'] ?: $GLOBALS['_PROD_STATUS']; +$GLOBALS['_FOUND_TYPE'] = $GLOBALS['_ALL_BASE']['CODE']['FOUND_TYPE'] ?: $GLOBALS['_FOUND_TYPE']; +$GLOBALS['_JUDG_CD'] = $GLOBALS['_ALL_BASE']['CODE']['JUDG_CD'] ?: $GLOBALS['_JUDG_CD']; +$GLOBALS['_LOAD_TYPE'] = $GLOBALS['_ALL_BASE']['CODE']['LOAD_TYPE'] ?: $GLOBALS['_LOAD_TYPE']; +$GLOBALS['_REQ_INSP_ITEM'] = $GLOBALS['_ALL_BASE']['CODE']['REQ_INSP_ITEM'] ?: $GLOBALS['_REQ_INSP_ITEM']; +$GLOBALS['_SAMP_CUSTOM'] = $GLOBALS['_ALL_BASE']['CODE']['SAMP_CUSTOM'] ?: $GLOBALS['_SAMP_CUSTOM']; +$GLOBALS['_TLColor'] = $GLOBALS['_ALL_BASE']['CODEEXP']['TLColor'] ?: $GLOBALS['_TLColor']; +$GLOBALS['_IO_TYPE_FIN'] = $GLOBALS['_ALL_BASE']['CODE']['IO_TYPE_FIN'] ?: $GLOBALS['_IO_TYPE_FIN']; +$GLOBALS['_NCR_CD'] = $GLOBALS['_ALL_BASE']['CODE']['NCR_CD'] ?: $GLOBALS['_NCR_CD']; +$GLOBALS['_TASK_TYPE'] = $GLOBALS['_ALL_BASE']['CODE']['TASK_TYPE'] ?: $GLOBALS['_TASK_TYPE']; +$GLOBALS['_STOP_CD'] = $GLOBALS['_ALL_BASE']['CODE']['STOP_CD'] ?: $GLOBALS['_STOP_CD']; +$GLOBALS['_DEF_CD'] = $GLOBALS['_ALL_BASE']['CODE']['DEF_CD'] ?: $GLOBALS['_DEF_CD']; +$GLOBALS['_RSLT_GRP'] = $GLOBALS['_ALL_BASE']['CODE']['RSLT_GRP'] ?: $GLOBALS['_RSLT_GRP']; +$GLOBALS['_ORD_TYPE'] = $GLOBALS['_ALL_BASE']['CODE']['ORD_TYPE'] ?: $GLOBALS['_ORD_TYPE']; +$GLOBALS['_WO_STATUS'] = $GLOBALS['_ALL_BASE']['CODE']['WO_STATUS'] ?: $GLOBALS['_WO_STATUS']; +$GLOBALS['_INSP_TOOL'] = $GLOBALS['_ALL_BASE']['CODE']['INSP_TOOL'] ?: $GLOBALS['_INSP_TOOL']; + +$GLOBALS['_INSP_METH'] = $GLOBALS['_ALL_BASE']['CODE']['INSP_METH'] ?: $GLOBALS['_INSP_METH']; +//$GLOBALS['_WRK_TEAM'] = $GLOBALS['_ALL_BASE']['CODE']['WRK_TEAM'] ?: $GLOBALS['_WRK_TEAM']; +$GLOBALS['_FACLT_GRP'] = $GLOBALS['_ALL_BASE']['CODE']['FACLT_GRP'] ?: $GLOBALS['_FACLT_GRP']; +$GLOBALS['_OP_STATUS'] = $GLOBALS['_ALL_BASE']['CODE']['OP_STATUS'] ?: $GLOBALS['_OP_STATUS']; + +// sort($GLOBALS['_varsNations']); +// ksort($GLOBALS['_varsCurrency']); +//ksort($GLOBALS['_varsCurrencyExp']); +//$GLOBALS['_OP_STATUS'] = Array( +// "PRE" => Array(NULL,"","S"), //S확정 +// "PLAN" => Array("P","I"), //P계획, I지시 +// "WORK" => Array("W","F",), //W작업, F완료 +//); + + +$cmv_obj = new Common_vars(); //공통변수 클래스 \ No newline at end of file diff --git a/lib/usrlib/common_vars.class.php b/lib/usrlib/common_vars.class.php new file mode 100644 index 0000000..9a2dcc6 --- /dev/null +++ b/lib/usrlib/common_vars.class.php @@ -0,0 +1,344 @@ + "Y", + ); + $rst = $this->DB->exec($sql, $params); + + $bzarea_rows = array(); + if( $rst ){ + $retval['code'] = true; + while( $row = $this->DB->fetch_array($rst) ){ + $bzarea_rows[$row['BIZ_AREA_CD']] = $row['BIZ_AREA_NM']; + } + } + return $bzarea_rows?:array(); + } + + function getItemList(){ // 품목 리스트 + $sql = "USP_B_ITEM_S10"; + $rst = $this->DB->exec($sql); + + $bzarea_rows = array(); + if( $rst ){ + $retval['code'] = true; + while( $row = $this->DB->fetch_array($rst) ){ + $bzarea_rows[$row['ITEM_CD']] = $row['ITEM_NM']; + } + } + return $bzarea_rows?:array(); + } + + function getOperationList(){ //공정리스트 (tree) + $sql = "USP_B_OPERATION_S10"; + $params = Array( + "USE_FLG" => "Y", + ); + $rst = $this->DB->exec($sql, $params); + + $oper_rows = array(); + if( $rst ){ + $retval['code'] = true; + while( $row = $this->DB->fetch_array($rst) ){ + $key = array_search($row['OP_GRP'], array_column($oper_rows, "OP_GRP")); + + if( $key === false ){ + $oper_rows[] = Array( + "OP_GRP" => $row['OP_GRP'], + "OP_GRP_NM" => $row['OP_GRP_NM'], + "OPTIONS" => Array($row), + ); + }else{ + $oper_rows[$key]['OPTIONS'][] = $row; + } + } + } + return $oper_rows?:array(); + } + + function getOperList(){ //공정리스트 + $sql = "USP_B_OPERATION_S10"; + $params = Array( + "USE_FLG" => "Y", + ); + $rst = $this->DB->exec($sql, $params); + + $oper_rows = array(); + if( $rst ){ + $retval['code'] = true; + while( $row = $this->DB->fetch_array($rst) ){ + $oper_rows[$row['OP_CD']] = $row; + } + } + return $oper_rows?:array(); + } + + function getFacilityList(){ //설비리스트 + $sql = "USP_B_FACILITY_S10"; + $params = Array( + "USE_FLG" => "Y", + ); + $rst = $this->DB->exec($sql, $params); + + $fac_rows = array(); + if( $rst ){ + $retval['code'] = true; + while( $row = $this->DB->fetch_array($rst) ){ + $fac_rows[] = $row; + } + } + return $fac_rows?:array(); + } + + function getFacilityList2(){ //설비리스트 + $sql = "USP_B_FACILITY_S10"; + $params = Array( + "USE_FLG" => "Y", + ); + $rst = $this->DB->exec($sql, $params); + + $fac_rows = array(); + if( $rst ){ + $retval['code'] = true; + while( $row = $this->DB->fetch_array($rst) ){ + $fac_rows[$row['FACLT_CD']] = $row['FACLT_NM']; + } + } + return $fac_rows?:array(); + } + + function getEmployeeList($DEPT_CD="", $JOB_POS=""){ //설비리스트 + $sql = "USP_B_EMPLOYEE_S30"; + $params = Array( + "", + "", + "RET_FLG" => "N", + ); + $rst = $this->DB->exec($sql, $params); + + $emp_rows = array(); + if( $rst ){ + $retval['code'] = true; + while( $row = $this->DB->fetch_array($rst) ){ + if( + (!$DEPT_CD || $DEPT_CD == $row['DEPT_CD']) && + (!$JOB_POS || $JOB_POS == $row['JOB_POS']) + ){ + $emp_rows[] = $row; + } + } + } + return $emp_rows?:array(); + } + + function getLocList(){ //로케이션리스트 (tree) + $sql = "USP_B_LOC_S10"; + $params = Array( + "WH_CD" => "", + "USE_FLG" => "Y", + ); + $rst = $this->DB->exec($sql, $params); + + $lc_rows = array(); + if( $rst ){ + $retval['code'] = true; + while( $row = $this->DB->fetch_array($rst) ){ + $key = array_search($row['WH_CD'], array_column($lc_rows, "WH_CD")); + + if( $key === false ){ + $lc_rows[] = Array( + "WH_CD" => $row['WH_CD'], + "WH_NM" => $row['WH_NM'], + "OPTIONS" => Array($row), + ); + }else{ + $lc_rows[$key]['OPTIONS'][] = $row; + } + } + } + return $lc_rows?:array(); + } + + function getWkStTime(){ + $sql = "select DBO.UFN_GET_BASECODE('WDAY_BTIME','WDAY_BTIME','DAY_ST') as WkStTime"; + $WkStTime = $this->DB->queryFirstField($sql); + return $WkStTime; + } + + function getScheduleList($bizarea, $from="", $to=""){ //근무캘린더 + if( !$from ){ + $from = date("Y-m-01"); + } + if( !$to ){ + $to = date("Y-m-t"); + } + $sql = "USP_B_CALENDAR_S20"; + $params = Array( + "BIZ_AREA_CD" => $bizarea, + "SDATE" => $from, + "FDATE" => $to, + ); + $rst = $this->DB->exec($sql, $params); + + $cal_rows = array(); + if( $rst ){ + $retval['code'] = true; + while( $row = $this->DB->fetch_array($rst) ){ + $cal_rows[] = Array( + "DT" => getDT_date($row['DT']), + "DAY_TYPE" => $row['DAY_TYPE'], + "DAY_SHAPE" => $row['DAY_SHAPE'], + "DAY_NM" => $row['DAY_NM'], + "WEEK_DAY" => $row['WEEK_DAY'], + ); + } + } + return $cal_rows?:array(); + } + + function getWprktimeList($bizarea){ //조업시간 + $sql = "USP_B_WORKTIME_S10"; + $params = Array( + "BIZ_AREA_CD" => $bizarea, + "USE_FLG" => "Y", + ); + $rst = $this->DB->exec($sql, $params); + + $wtime_rows = array(); + if( $rst ){ + $retval['code'] = true; + while( $row = $this->DB->fetch_array($rst) ){ + $wtime_rows[] = $row; + } + } +// $min_wt = min( array_column( $wtime_rows, 'ST_TM' ) ); +// $max_wt = max( array_column( $wtime_rows, 'ED_TM' ) ); +// if( 0 && $min_wt && $min_wt > '00:00' ){ +// $wtime_rows[] = Array( +// "ST_TM" => "00:00", +// "ED_TM" => $min_wt, +// //"WORK_TM_NM" => "OFF-HOURS", +// "WORK_TM_NM" => "OFF", +// "TM_TYPE" => "OFF", +// "RUNSTOP_FLG" => "N", +// "USE_FLG" => "Y", +// ); +// } +// if( 0 && $max_wt && $max_wt < "24:00" ){ +// $wtime_rows[] = Array( +// "ST_TM" => $max_wt, +// "ED_TM" => "24:00", +// //"WORK_TM_NM" => "OFF-HOURS", +// "WORK_TM_NM" => "OFF", +// "TM_TYPE" => "OFF", +// "RUNSTOP_FLG" => "N", +// "USE_FLG" => "Y", +// ); +// } + return $wtime_rows?:array(); + } + + function getProcConds( $shape_type="" ){ + $procRow = Array( + "SHARE" => Array(), + "TURN" => Array(), + "HOLE" => Array(), + "RATE" => Array(), + "WTAMT" => Array(), + ); + + $params = Array(); + if( $shape_type ){ + $params['SHAPE_TYPE'] = $shape_type; + } + + $sql = "USP_B_PROC_SPARE_S10"; + $rst = $this->DB->exec($sql, $params); + if( $rst ){ + while( $row = $this->DB->fetch_array($rst) ){ + if( !isset($procRow['SHARE'][$row['SHAPE_TYPE']]) ) $procRow['SHARE'][$row['SHAPE_TYPE']] = Array(); + $procRow['SHARE'][$row['SHAPE_TYPE']][] = $row; + } + } + + $sql = "USP_B_PROC_TURN_S10"; + $rst = $this->DB->exec($sql, $params); + if( $rst ){ + while( $row = $this->DB->fetch_array($rst) ){ + if( !isset($procRow['TURN'][$row['SHAPE_TYPE']]) ) $procRow['TURN'][$row['SHAPE_TYPE']] = Array(); + $procRow['TURN'][$row['SHAPE_TYPE']][] = $row; + } + } + + $sql = "USP_B_PROC_HOLE_S10"; + $rst = $this->DB->exec($sql, $params); + if( $rst ){ + while( $row = $this->DB->fetch_array($rst) ){ + if( !isset($procRow['HOLE'][$row['SHAPE_TYPE']]) ) $procRow['HOLE'][$row['SHAPE_TYPE']] = Array(); + $procRow['HOLE'][$row['SHAPE_TYPE']][] = $row; + } + } + + $sql = "USP_B_PROC_RATE_S10"; + $rst = $this->DB->exec($sql, $params); + if( $rst ){ + while( $row = $this->DB->fetch_array($rst) ){ + if( !isset($procRow['RATE'][$row['SHAPE_TYPE']]) ) $procRow['RATE'][$row['SHAPE_TYPE']] = Array(); + $procRow['RATE'][$row['SHAPE_TYPE']][] = $row; + } + } + + $sql = "USP_B_PROC_WTAMT_S10"; + $rst = $this->DB->exec($sql, $params); + if( $rst ){ + while( $row = $this->DB->fetch_array($rst) ){ + if( !isset($procRow['WTAMT'][$row['SHAPE_TYPE']]) ) $procRow['WTAMT'][$row['SHAPE_TYPE']] = Array(); + $procRow['WTAMT'][$row['SHAPE_TYPE']][] = $row; + } + } + + return $procRow; + } + + static function dateRformat( $number, $conf=Array() ){ + $number = (int)$number; + $dan = $conf['dan']?:'s'; + $days = 0; + $hours = 0; + $minutes = 0; + $seconds = 0; + $rem = 0; + $retstr = ''; + + switch( $dan ){ + case "m": //분단위 + $number *= 60; + break; + case "h": //시간단위 + $number *= 60*60; + break; + } + + + $days = floor( $number / (3600*24) ); + $rem = $number % (3600*24); + $hours = floor($rem / 3600); + $rem = $rem % (3600); + $minutes = floor($rem / 60); + $seconds = $rem % (60); + + if( $days ) $retstr .= ($retstr?' ':'') . $days . ($conf['text']['d']?:'일'); + if( $hours ) $retstr .= ($retstr?' ':'') . $hours . ($conf['text']['h']?:'시간'); + if( $minutes ) $retstr .= ($retstr?' ':'') . $minutes . ($conf['text']['m']?:'분'); + if( $seconds ) $retstr .= ($retstr?' ':'') . $seconds . ($conf['text']['s']?:'초'); + + return $retstr; + } +} \ No newline at end of file diff --git a/lib/usrlib/mlang.class.php b/lib/usrlib/mlang.class.php new file mode 100644 index 0000000..c9cb914 --- /dev/null +++ b/lib/usrlib/mlang.class.php @@ -0,0 +1,262 @@ +DB->tableExists(TB_BIZ_MOFACT); + parent::__construct(TB_COMMENT); + $this->TB = TB_COMMENT; + $this->DB->tableExists($this->TB); + $this->DB->tableExists(TB_COMMENT_LANG); + $this->LANG = "KR"; + } + + function loadWord( $str, $lang="" ){ + $tran = $this->getWord( $str, $lang ); + if( !$tran ){ + $this->putWord( $str ); + }else{ + return $tran; + } + return $str; + +// $sql = "USP_B_MSG_S10"; +// $params = Array( +// "TRAN_TEXT" => $str?:"", +// ); +// +// $rst = $this->DB->exec($sql, $params); +// if( $this->DB->num_rows($rst) ){ +// $txt = $this->DB->fetch_array($rst); +// $tran = json_decode($txt['TRAN']); +// return $tran[$this->LANG]; +// }else{ +// $sql = "USP_B_MSG_I10"; +// $params = Array( +// "TRAN_TEXT" => $str?:"", +// "TRAN_DATA" => Array("KR"=>$str), +// "EN" => "", +// "BD" => "", +// "BD" => "", +// "JP" => "", +// "VN" => "", +// "PH" => "", +// "TH" => "", +// "ID" => "", +// "IN" => "", +// "CN" => "", +// "MN" => "", +// "NP" => "", +// "PK" => "", +// "UZ" => "", +// ); +// $rst = $this->DB->exec($sql, $params); +// return $str; +// } + } + + function getTran( $str, $isId="" ){ +// $sql = "USP_B_MSG_S10"; +// $params = Array( +// "TRAN_TEXT" => $str?:"", +// ); +// +// $rst = $this->DB->exec($sql, $params); + +// if( $this->DB->num_rows($rst) ){ +// $txt = $this->DB->fetch_array($rst); +// $tran = json_decode($txt['TRAN_DATA']); +// return $tran; +// } +// return false; + + $where = new DB_where("and"); + if( $isId ){ + $where->add("TRAN_ID = ?", $str); + }else{ + $where->add("TRAN_TEXT = ?", $str); + } + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $sql = "select * from {$this->TB} where {$whereqry}"; + $this->DB->query_record = false; //query log 기록 금지 + $txt = $this->DB->queryFirstRow($sql, $whererow); + $this->DB->query_record = true; //query log 기록 재개 + + if( $txt ){ + $tran = (Array)json_decode($txt['TRAN_DATA']); + return $tran; + } + return false; + } + + function getWordList($fields, $where=""){ + if( !$where ){ + $where = new DB_where("and"); + } + $orderby="TRAN_TEXT asc"; + $limit=array(); + + $rows = $this->getDataList($fields, $where, $orderby, $limit); + + return $rows; + } + + public function getWordPage($sqldata, $where=""){ + if( !$where ){ + $where = new DB_where("and"); + } + + if( $sqldata['stxt'] ){ + $subwhere = $where->sub_where("or"); + if( $sqldata['sfld'] ){ + $subwhere->add("{$sqldata['sfld']} like ?", "%{$sqldata['stxt']}%"); + }else{ + $subwhere->add("TRAN_TEXT like ?", "%{$sqldata['stxt']}%"); + } + } + + $orderby = "TRAN_TEXT desc"; + if( $sqldata['ofld'] && $sqldata['oasc'] ){ + $orderby = "{$sqldata['ofld']} {$sqldata['oasc']}"; + } + + $query = array( + "mode" => $sqldata['mode'], + "viewnum" => $sqldata['viewnum'], + "sdate" => $sqldata['sdate']?:"", + "fdate" => $sqldata['fdate']?:"", + "page" => $sqldata['page'], + "sfld" => $sqldata['sfld'], + "stxt" => $sqldata['stxt'], + "ofld" => $sqldata['ofld'], + "oasc" => $sqldata['oasc'], + ); + + $lists = $this->getDataPage("*", $query, $where ,$orderby); + return $lists; + } + + function getWord( $str, $lang ){ + $str = $this->getTran($str); + $lang = $lang ?: $this->LANG; + if( $str ){ + return $str[$lang]; + } + return false; + } + + function getWordId( $id, $lang="" ){ + $str = $this->getTran($id, 1); + $lang = $lang ?: $this->LANG; + if( $str ){ + return $str[$lang]; + } + return false; + } + + function putWord( $str ){ +// $sql = "USP_B_MSG_I10"; +// $params = Array( +// "TRAN_TEXT" => $str?:"", +// "TRAN_DATA" => json_encode(Array("KR"=>$str)), +// ); +// $rst = $this->DB->exec($sql, $params); +// return $rst; + $sqldata = Array( + "TRAN_TEXT" => $str?:"", + "TRAN_DATA" => json_encode(Array("KR"=>$str)), + "MAKE_TM" => $this->DB->sqleval("getdate()"), + ); + $this->DB->insert($this->TB, $sqldata); + } + + function setWord( $str, $stran, $isId="" ){ + $tran = $this->getTran( $str, $isId ); + $tran = array_filter(array_merge($tran, $stran)); +// $sql = "USP_B_MSG_U10"; +// $params = Array( +// "TRAN_TEXT" => $str?:"", +// "TRAN_DATA" => json_encode($tran), +// ); +// $rst = $this->DB->exec($sql, $params); +// return $rst; + + $where = new DB_where("and"); + if( $isId ){ + $where->add("TRAN_ID = ?", $str); + }else{ + $where->add("TRAN_TEXT = ?", $str); + } + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $sqldata = Array( + "TRAN_DATA" => json_encode($tran), + "EDIT_TM" => $this->DB->sqleval("getdate()"), + ); + + return $this->DB->update($this->TB, $sqldata, $whereqry, $whererow); + } + + public static function getText( $str, $var=array() ){ + $langObj = new Mlang(); + $str = $langObj->loadWord( $str ); + for( $a=0 ; $a<@count($var) ; $a++ ){ + $str = str_replace("{@".($a+1)."}", $var[$a], $str); + } + return $str; + } + + function getLang ( $slang="", $use="" ){ + $where = new DB_where("and"); + $where->add("bc.Bran_Uid = ?", "nation_code"); + $where->add("bc.Code_Uid != ?", "nation_code"); + $where->add("bc.Code_Uid != ?", "KR"); + $where->add("bc.Active = ?", "Y"); + if( $use ){ + $where->add("cl.USE_FLG = ?", "Y"); + } + if( $slang ){ + $swhere = $where->sub_where("or"); + foreach( (array)$slang as $lang ){ + $swhere->add("bc.Code_Uid = ?", $lang); + } + } + $wqry = $where->get_where(); + $whereqry = $wqry['qry']; + $whererow = $wqry['val']; + + $sql = "select bc.Code_Uid, bc.Code_Val, cl.USE_FLG from ".TB_basecode." as bc left join ".TB_COMMENT_LANG." as cl on bc.Code_Uid = cl.LANG_ID where {$whereqry} order by bc.Code_Val"; + $row = $this->DB->query($sql, $whererow); + return $row; + } + + function setLang($params){ + $sql = "delete from ".TB_COMMENT_LANG; + $this->DB->qry($sql); + + $rows = $this->getLang($params); + + foreach( $rows as $lang ){ + $qryrow = Array( + "LANG_ID" => $lang['Code_Uid'], + "LANG_NM" => $lang['Code_Val'], + "USE_FLG" => "Y", + "MAKE_TM" => $this->DB->sqleval("getdate()"), + "EDIT_TM" => $this->DB->sqleval("getdate()"), + ); + $this->DB->insert(TB_COMMENT_LANG, $qryrow); + } + } +} \ No newline at end of file diff --git a/lib/usrlib/sangseng_api.class.php b/lib/usrlib/sangseng_api.class.php new file mode 100644 index 0000000..bb75f55 --- /dev/null +++ b/lib/usrlib/sangseng_api.class.php @@ -0,0 +1,29 @@ +DB->tableExists(TB_API_REC); + } + + function pushApi($userid, $gubun = "접속", $datas = 0) { + return true; + + $access_url = "https://log.smart-factory.kr/apisvc/sendLogData.json"; + $params = array( + "crtfcKey" => '$5$API$7XWCxM/vX7QCI4WT940IExYHkNs7Nx9JtzwU0bOmGt2', + "logDt" => date("Y-m-d H:i:s.000"), + "useSe" => $gubun, + "sysUser" => $userid?:($GLOBALS['_Umem']['member_name']?:"giiest"), + "conectIp" => get_ip(), + "dataUsgqty" => $datas, + ); + + $ret = curl_request($access_url, $params, "POST"); + $rparams = json_decode($ret); + + $sum_params = array_merge($params, (Array) $rparams->result); + unset($sum_params['crtfcKey']); + $this->DB->insert(TB_API_REC, $sum_params); + } +} \ No newline at end of file diff --git a/lib/usrlib/sk_attach.class.php b/lib/usrlib/sk_attach.class.php new file mode 100644 index 0000000..21c5e8c --- /dev/null +++ b/lib/usrlib/sk_attach.class.php @@ -0,0 +1,103 @@ + $gubun?:"", + "nid" => $nid?:"", + "sid" => $sid?:"", + "file_name" => $upfile['name']?:"", + "file_size" => $upfile['size']?:0, + "file_type" => $upfile['type']?:"", + "file_width" => $upfile['width']?:"", + "file_height" => $upfile['height']?:"", + "file_exp" => $exp, + "reg_date" => $this->DB->sqleval("getdate()"), + ); + + return $this->putData( $sqldata ); + } + + public function setAttach( $upfile, $gubun, $nid, $sid, $exp="" ) { + $target_dir = _UP_PATH_."/{$gubun}"; + if( !file_exists($target_dir) ){ + mkdir($target_dir); + } + $rst = move_uploaded_file($upfile['tmp_name'], "{$target_dir}/{$nid}_{$sid}.dat"); + if( !$rst ) return false; + + if( strpos($upfile['type'], "image") !== false ){ + $iinfo = getimagesize("{$target_dir}/{$nid}_{$sid}.dat"); + $upfile['width'] = $iinfo[0]; + $upfile['height'] = $iinfo[1]; + } + + $sqldata = Array( + "gubun" => $gubun?:"", + "nid" => $nid?:"", + "sid" => $sid?:"", + "file_name" => $upfile['name']?:"", + "file_size" => $upfile['size']?:0, + "file_type" => $upfile['type']?:"", + "file_width" => $upfile['width']?:"", + "file_height" => $upfile['height']?:"", + "file_exp" => $exp, + "reg_date" => $this->DB->sqleval("getdate()"), + ); + + $whererow = Array( + "gubun" => $gubun?:"", + "nid" => $nid?:"", + "sid" => $sid?:"", + ); + + return $this->setData( $sqldata, $whererow ); + } + + + public function putAttachRemk($filepath){ + $filename = '/example.txt'; + $content = '이것은 텍스트 파일에 쓰여질 내용입니다.'; + + $fpath = explode("/", $filepath); + $fpath = $fpath + $filename; + + if (file_exists($filename)) { + // 파일 열기 (쓰기 모드) + // $file = fopen($filename, 'w'); + print_r($fpath); + + if ($file) { + // 파일에 내용 쓰기 + // fwrite($file, $content); + // // 파일 닫기 + // fclose($file); + + echo "텍스트 파일이 성공적으로 생성되었습니다."; + } else { + echo "파일을 열 수 없습니다."; + } + } + } + + + + +} + diff --git a/lib/vendor/Altorouter.php b/lib/vendor/Altorouter.php new file mode 100644 index 0000000..c751464 --- /dev/null +++ b/lib/vendor/Altorouter.php @@ -0,0 +1,294 @@ + '[0-9]++', + 'a' => '[0-9A-Za-z]++', + 'h' => '[0-9A-Fa-f]++', + '*' => '.+?', + '**' => '.++', + '' => '[^/\.]++' + ); + + /** + * Create router in one call from config. + * + * @param array $routes + * @param string $basePath + * @param array $matchTypes + */ + public function __construct( $routes = array(), $basePath = '', $matchTypes = array() ) { + $this->addRoutes($routes); + $this->setBasePath($basePath); + $this->addMatchTypes($matchTypes); + } + + /** + * Retrieves all routes. + * Useful if you want to process or display routes. + * @return array All routes. + */ + public function getRoutes() { + return $this->routes; + } + + /** + * Add multiple routes at once from array in the following format: + * + * $routes = array( + * array($method, $route, $target, $name) + * ); + * + * @param array $routes + * @return void + * @author Koen Punt + * @throws Exception + */ + public function addRoutes($routes){ + if(!is_array($routes) && !$routes instanceof Traversable) { + throw new \Exception('Routes should be an array or an instance of Traversable'); + } + foreach($routes as $route) { + call_user_func_array(array($this, 'map'), $route); + } + } + + /** + * Set the base path. + * Useful if you are running your application from a subdirectory. + */ + public function setBasePath($basePath) { + $this->basePath = $basePath; + } + + /** + * Add named match types. It uses array_merge so keys can be overwritten. + * + * @param array $matchTypes The key is the name and the value is the regex. + */ + public function addMatchTypes($matchTypes) { + $this->matchTypes = array_merge($this->matchTypes, $matchTypes); + } + + /** + * Map a route to a target + * + * @param string $method One of 5 HTTP Methods, or a pipe-separated list of multiple HTTP Methods (GET|POST|PATCH|PUT|DELETE) + * @param string $route The route regex, custom regex must start with an @. You can use multiple pre-set regex filters, like [i:id] + * @param mixed $target The target where this route should point to. Can be anything. + * @param string $name Optional name of this route. Supply if you want to reverse route this url in your application. + * @throws Exception + */ + public function map($method, $route, $target, $name = null) { + + $this->routes[] = array($method, $route, $target, $name); + + if($name) { + if(isset($this->namedRoutes[$name])) { + throw new \Exception("Can not redeclare route '{$name}'"); + } else { + $this->namedRoutes[$name] = $route; + } + + } + + return; + } + + /** + * Reversed routing + * + * Generate the URL for a named route. Replace regexes with supplied parameters + * + * @param string $routeName The name of the route. + * @param array @params Associative array of parameters to replace placeholders with. + * @return string The URL of the route with named parameters in place. + * @throws Exception + */ + public function generate($routeName, array $params = array()) { + + // Check if named route exists + if(!isset($this->namedRoutes[$routeName])) { + throw new \Exception("Route '{$routeName}' does not exist."); + } + + // Replace named parameters + $route = $this->namedRoutes[$routeName]; + + // prepend base path to route url again + $url = $this->basePath . $route; + + if (preg_match_all('`(/|\.|)\[([^:\]]*+)(?::([^:\]]*+))?\](\?|)`', $route, $matches, PREG_SET_ORDER)) { + + foreach($matches as $match) { + list($block, $pre, $type, $param, $optional) = $match; + + if ($pre) { + $block = substr($block, 1); + } + + if(isset($params[$param])) { + $url = str_replace($block, $params[$param], $url); + } elseif ($optional) { + $url = str_replace($pre . $block, '', $url); + } + } + + + } + + return $url; + } + + /** + * Match a given Request Url against stored routes + * @param string $requestUrl + * @param string $requestMethod + * @return array|boolean Array with route information on success, false on failure (no match). + */ + public function match($requestUrl = null, $requestMethod = null) { + + $params = array(); + $match = false; + + // set Request Url if it isn't passed as parameter + if($requestUrl === null) { + $requestUrl = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '/'; + } + + // strip base path from request url + $requestUrl = substr($requestUrl, strlen($this->basePath)); + + // Strip query string (?a=b) from Request Url + if (($strpos = strpos($requestUrl, '?')) !== false) { + $requestUrl = substr($requestUrl, 0, $strpos); + } + + // set Request Method if it isn't passed as a parameter + if($requestMethod === null) { + $requestMethod = isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : 'GET'; + } + + foreach($this->routes as $handler) { + list($method, $_route, $target, $name) = $handler; + + $methods = explode('|', $method); + $method_match = false; + + // Check if request method matches. If not, abandon early. (CHEAP) + foreach($methods as $method) { + if (strcasecmp($requestMethod, $method) === 0) { + $method_match = true; + break; + } + } + + // Method did not match, continue to next route. + if(!$method_match) continue; + + // Check for a wildcard (matches all) + if ($_route === '*') { + $match = true; + } elseif (isset($_route[0]) && $_route[0] === '@') { + $pattern = '`' . substr($_route, 1) . '`u'; + $match = preg_match($pattern, $requestUrl, $params); + } else { + $route = null; + $regex = false; + $j = 0; + $n = isset($_route[0]) ? $_route[0] : null; + $i = 0; + + // Find the longest non-regex substring and match it against the URI + while (true) { + if (!isset($_route[$i])) { + break; + } elseif (false === $regex) { + $c = $n; + $regex = $c === '[' || $c === '(' || $c === '.'; + if (false === $regex && false !== isset($_route[$i+1])) { + $n = $_route[$i + 1]; + $regex = $n === '?' || $n === '+' || $n === '*' || $n === '{'; + } + if (false === $regex && $c !== '/' && (!isset($requestUrl[$j]) || $c !== $requestUrl[$j])) { + continue 2; + } + $j++; + } + $route .= $_route[$i++]; + } + + $regex = $this->compileRoute($route); + $match = preg_match($regex, $requestUrl, $params); + } + + if(($match == true || $match > 0)) { + + if($params) { + foreach($params as $key => $value) { + if(is_numeric($key)) unset($params[$key]); + } + } + + return array( + 'target' => $target, + 'params' => $params, + 'name' => $name + ); + } + } + return false; + } + + /** + * Compile the regex for a given route (EXPENSIVE) + */ + private function compileRoute($route) { + if (preg_match_all('`(/|\.|)\[([^:\]]*+)(?::([^:\]]*+))?\](\?|)`', $route, $matches, PREG_SET_ORDER)) { + + $matchTypes = $this->matchTypes; + foreach($matches as $match) { + list($block, $pre, $type, $param, $optional) = $match; + + if (isset($matchTypes[$type])) { + $type = $matchTypes[$type]; + } + if ($pre === '.') { + $pre = '\.'; + } + + //Older versions of PCRE require the 'P' in (?P) + $pattern = '(?:' + . ($pre !== '' ? $pre : null) + . '(' + . ($param !== '' ? "?P<$param>" : null) + . $type + . '))' + . ($optional !== '' ? '?' : null); + + $route = str_replace($block, $pattern, $route); + } + + } + return "`^$route$`u"; + } +} diff --git a/lib/vendor/PHPMailer/LICENSE b/lib/vendor/PHPMailer/LICENSE new file mode 100644 index 0000000..f166cc5 --- /dev/null +++ b/lib/vendor/PHPMailer/LICENSE @@ -0,0 +1,502 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! \ No newline at end of file diff --git a/lib/vendor/PHPMailer/PHPMailerAutoload.php b/lib/vendor/PHPMailer/PHPMailerAutoload.php new file mode 100644 index 0000000..eaa2e30 --- /dev/null +++ b/lib/vendor/PHPMailer/PHPMailerAutoload.php @@ -0,0 +1,49 @@ + + * @author Jim Jagielski (jimjag) + * @author Andy Prevost (codeworxtech) + * @author Brent R. Matzelle (original founder) + * @copyright 2012 - 2014 Marcus Bointon + * @copyright 2010 - 2012 Jim Jagielski + * @copyright 2004 - 2009 Andy Prevost + * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License + * @note This program is distributed in the hope that it will be useful - WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + */ + +/** + * PHPMailer SPL autoloader. + * @param string $classname The name of the class to load + */ +function PHPMailerAutoload($classname) +{ + //Can't use __DIR__ as it's only in PHP 5.3+ + $filename = dirname(__FILE__).DIRECTORY_SEPARATOR.'class.'.strtolower($classname).'.php'; + if (is_readable($filename)) { + require $filename; + } +} + +if (version_compare(PHP_VERSION, '5.1.2', '>=')) { + //SPL autoloading was introduced in PHP 5.1.2 + if (version_compare(PHP_VERSION, '5.3.0', '>=')) { + spl_autoload_register('PHPMailerAutoload', true, true); + } else { + spl_autoload_register('PHPMailerAutoload'); + } +} else { + /** + * Fall back to traditional autoload for old PHP versions + * @param string $classname The name of the class to load + */ + function __autoload($classname) + { + PHPMailerAutoload($classname); + } +} diff --git a/lib/vendor/PHPMailer/VERSION b/lib/vendor/PHPMailer/VERSION new file mode 100644 index 0000000..32779c1 --- /dev/null +++ b/lib/vendor/PHPMailer/VERSION @@ -0,0 +1 @@ +5.2.27 \ No newline at end of file diff --git a/lib/vendor/PHPMailer/class.webmail.php b/lib/vendor/PHPMailer/class.webmail.php new file mode 100644 index 0000000..997b891 --- /dev/null +++ b/lib/vendor/PHPMailer/class.webmail.php @@ -0,0 +1,4062 @@ + + * @author Jim Jagielski (jimjag) + * @author Andy Prevost (codeworxtech) + * @author Brent R. Matzelle (original founder) + * @copyright 2012 - 2014 Marcus Bointon + * @copyright 2010 - 2012 Jim Jagielski + * @copyright 2004 - 2009 Andy Prevost + * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License + * @note This program is distributed in the hope that it will be useful - WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + */ +namespace Frody\Util; + +/** + * PHPMailer - PHP email creation and transport class. + * @package PHPMailer + * @author Marcus Bointon (Synchro/coolbru) + * @author Jim Jagielski (jimjag) + * @author Andy Prevost (codeworxtech) + * @author Brent R. Matzelle (original founder) + */ +class PHPMailer +{ + /** + * The PHPMailer Version number. + * @var string + */ + public $Version = '5.2.27'; + + /** + * Email priority. + * Options: null (default), 1 = High, 3 = Normal, 5 = low. + * When null, the header is not set at all. + * @var integer + */ + public $Priority = null; + + /** + * The character set of the message. + * @var string + */ + public $CharSet = 'iso-8859-1'; + + /** + * The MIME Content-type of the message. + * @var string + */ + public $ContentType = 'text/plain'; + + /** + * The message encoding. + * Options: "8bit", "7bit", "binary", "base64", and "quoted-printable". + * @var string + */ + public $Encoding = '8bit'; + + /** + * Holds the most recent mailer error message. + * @var string + */ + public $ErrorInfo = ''; + + /** + * The From email address for the message. + * @var string + */ + public $From = 'root@localhost'; + + /** + * The From name of the message. + * @var string + */ + public $FromName = 'Root User'; + + /** + * The Sender email (Return-Path) of the message. + * If not empty, will be sent via -f to sendmail or as 'MAIL FROM' in smtp mode. + * @var string + */ + public $Sender = ''; + + /** + * The Return-Path of the message. + * If empty, it will be set to either From or Sender. + * @var string + * @deprecated Email senders should never set a return-path header; + * it's the receiver's job (RFC5321 section 4.4), so this no longer does anything. + * @link https://tools.ietf.org/html/rfc5321#section-4.4 RFC5321 reference + */ + public $ReturnPath = ''; + + /** + * The Subject of the message. + * @var string + */ + public $Subject = ''; + + /** + * An HTML or plain text message body. + * If HTML then call isHTML(true). + * @var string + */ + public $Body = ''; + + /** + * The plain-text message body. + * This body can be read by mail clients that do not have HTML email + * capability such as mutt & Eudora. + * Clients that can read HTML will view the normal Body. + * @var string + */ + public $AltBody = ''; + + /** + * An iCal message part body. + * Only supported in simple alt or alt_inline message types + * To generate iCal events, use the bundled extras/EasyPeasyICS.php class or iCalcreator + * @link http://sprain.ch/blog/downloads/php-class-easypeasyics-create-ical-files-with-php/ + * @link http://kigkonsult.se/iCalcreator/ + * @var string + */ + public $Ical = ''; + + /** + * The complete compiled MIME message body. + * @access protected + * @var string + */ + protected $MIMEBody = ''; + + /** + * The complete compiled MIME message headers. + * @var string + * @access protected + */ + protected $MIMEHeader = ''; + + /** + * Extra headers that createHeader() doesn't fold in. + * @var string + * @access protected + */ + protected $mailHeader = ''; + + /** + * Word-wrap the message body to this number of chars. + * Set to 0 to not wrap. A useful value here is 78, for RFC2822 section 2.1.1 compliance. + * @var integer + */ + public $WordWrap = 0; + + /** + * Which method to use to send mail. + * Options: "mail", "sendmail", or "smtp". + * @var string + */ + public $Mailer = 'mail'; + + /** + * The path to the sendmail program. + * @var string + */ + public $Sendmail = '/usr/sbin/sendmail'; + + /** + * Whether mail() uses a fully sendmail-compatible MTA. + * One which supports sendmail's "-oi -f" options. + * @var boolean + */ + public $UseSendmailOptions = true; + + /** + * Path to PHPMailer plugins. + * Useful if the SMTP class is not in the PHP include path. + * @var string + * @deprecated Should not be needed now there is an autoloader. + */ + public $PluginDir = ''; + + /** + * The email address that a reading confirmation should be sent to, also known as read receipt. + * @var string + */ + public $ConfirmReadingTo = ''; + + /** + * The hostname to use in the Message-ID header and as default HELO string. + * If empty, PHPMailer attempts to find one with, in order, + * $_SERVER['SERVER_NAME'], gethostname(), php_uname('n'), or the value + * 'localhost.localdomain'. + * @var string + */ + public $Hostname = ''; + + /** + * An ID to be used in the Message-ID header. + * If empty, a unique id will be generated. + * You can set your own, but it must be in the format "", + * as defined in RFC5322 section 3.6.4 or it will be ignored. + * @see https://tools.ietf.org/html/rfc5322#section-3.6.4 + * @var string + */ + public $MessageID = ''; + + /** + * The message Date to be used in the Date header. + * If empty, the current date will be added. + * @var string + */ + public $MessageDate = ''; + + /** + * SMTP hosts. + * Either a single hostname or multiple semicolon-delimited hostnames. + * You can also specify a different port + * for each host by using this format: [hostname:port] + * (e.g. "smtp1.example.com:25;smtp2.example.com"). + * You can also specify encryption type, for example: + * (e.g. "tls://smtp1.example.com:587;ssl://smtp2.example.com:465"). + * Hosts will be tried in order. + * @var string + */ + public $Host = 'localhost'; + + /** + * The default SMTP server port. + * @var integer + * @TODO Why is this needed when the SMTP class takes care of it? + */ + public $Port = 25; + + /** + * The SMTP HELO of the message. + * Default is $Hostname. If $Hostname is empty, PHPMailer attempts to find + * one with the same method described above for $Hostname. + * @var string + * @see PHPMailer::$Hostname + */ + public $Helo = ''; + + /** + * What kind of encryption to use on the SMTP connection. + * Options: '', 'ssl' or 'tls' + * @var string + */ + public $SMTPSecure = ''; + + /** + * Whether to enable TLS encryption automatically if a server supports it, + * even if `SMTPSecure` is not set to 'tls'. + * Be aware that in PHP >= 5.6 this requires that the server's certificates are valid. + * @var boolean + */ + public $SMTPAutoTLS = true; + + /** + * Whether to use SMTP authentication. + * Uses the Username and Password properties. + * @var boolean + * @see PHPMailer::$Username + * @see PHPMailer::$Password + */ + public $SMTPAuth = false; + + /** + * Options array passed to stream_context_create when connecting via SMTP. + * @var array + */ + public $SMTPOptions = array(); + + /** + * SMTP username. + * @var string + */ + public $Username = ''; + + /** + * SMTP password. + * @var string + */ + public $Password = ''; + + /** + * SMTP auth type. + * Options are CRAM-MD5, LOGIN, PLAIN, NTLM, XOAUTH2, attempted in that order if not specified + * @var string + */ + public $AuthType = ''; + + /** + * SMTP realm. + * Used for NTLM auth + * @var string + */ + public $Realm = ''; + + /** + * SMTP workstation. + * Used for NTLM auth + * @var string + */ + public $Workstation = ''; + + /** + * The SMTP server timeout in seconds. + * Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2 + * @var integer + */ + public $Timeout = 300; + + /** + * SMTP class debug output mode. + * Debug output level. + * Options: + * * `0` No output + * * `1` Commands + * * `2` Data and commands + * * `3` As 2 plus connection status + * * `4` Low-level data output + * @var integer + * @see SMTP::$do_debug + */ + public $SMTPDebug = 0; + + /** + * How to handle debug output. + * Options: + * * `echo` Output plain-text as-is, appropriate for CLI + * * `html` Output escaped, line breaks converted to `
`, appropriate for browser output + * * `error_log` Output to error log as configured in php.ini + * + * Alternatively, you can provide a callable expecting two params: a message string and the debug level: + * + * $mail->Debugoutput = function($str, $level) {echo "debug level $level; message: $str";}; + * + * @var string|callable + * @see SMTP::$Debugoutput + */ + public $Debugoutput = 'echo'; + + /** + * Whether to keep SMTP connection open after each message. + * If this is set to true then to close the connection + * requires an explicit call to smtpClose(). + * @var boolean + */ + public $SMTPKeepAlive = false; + + /** + * Whether to split multiple to addresses into multiple messages + * or send them all in one message. + * Only supported in `mail` and `sendmail` transports, not in SMTP. + * @var boolean + */ + public $SingleTo = false; + + /** + * Storage for addresses when SingleTo is enabled. + * @var array + * @TODO This should really not be public + */ + public $SingleToArray = array(); + + /** + * Whether to generate VERP addresses on send. + * Only applicable when sending via SMTP. + * @link https://en.wikipedia.org/wiki/Variable_envelope_return_path + * @link http://www.postfix.org/VERP_README.html Postfix VERP info + * @var boolean + */ + public $do_verp = false; + + /** + * Whether to allow sending messages with an empty body. + * @var boolean + */ + public $AllowEmpty = false; + + /** + * The default line ending. + * @note The default remains "\n". We force CRLF where we know + * it must be used via self::CRLF. + * @var string + */ + public $LE = "\n"; + + /** + * DKIM selector. + * @var string + */ + public $DKIM_selector = ''; + + /** + * DKIM Identity. + * Usually the email address used as the source of the email. + * @var string + */ + public $DKIM_identity = ''; + + /** + * DKIM passphrase. + * Used if your key is encrypted. + * @var string + */ + public $DKIM_passphrase = ''; + + /** + * DKIM signing domain name. + * @example 'example.com' + * @var string + */ + public $DKIM_domain = ''; + + /** + * DKIM private key file path. + * @var string + */ + public $DKIM_private = ''; + + /** + * DKIM private key string. + * If set, takes precedence over `$DKIM_private`. + * @var string + */ + public $DKIM_private_string = ''; + + /** + * Callback Action function name. + * + * The function that handles the result of the send email action. + * It is called out by send() for each email sent. + * + * Value can be any php callable: http://www.php.net/is_callable + * + * Parameters: + * boolean $result result of the send action + * array $to email addresses of the recipients + * array $cc cc email addresses + * array $bcc bcc email addresses + * string $subject the subject + * string $body the email body + * string $from email address of sender + * @var string + */ + public $action_function = ''; + + /** + * What to put in the X-Mailer header. + * Options: An empty string for PHPMailer default, whitespace for none, or a string to use + * @var string + */ + public $XMailer = 'Frody Mailer v0.1'; + + /** + * Which validator to use by default when validating email addresses. + * May be a callable to inject your own validator, but there are several built-in validators. + * @see PHPMailer::validateAddress() + * @var string|callable + * @static + */ + public static $validator = 'auto'; + + /** + * An instance of the SMTP sender class. + * @var SMTP + * @access protected + */ + protected $smtp = null; + + /** + * The array of 'to' names and addresses. + * @var array + * @access protected + */ + protected $to = array(); + + /** + * The array of 'cc' names and addresses. + * @var array + * @access protected + */ + protected $cc = array(); + + /** + * The array of 'bcc' names and addresses. + * @var array + * @access protected + */ + protected $bcc = array(); + + /** + * The array of reply-to names and addresses. + * @var array + * @access protected + */ + protected $ReplyTo = array(); + + /** + * An array of all kinds of addresses. + * Includes all of $to, $cc, $bcc + * @var array + * @access protected + * @see PHPMailer::$to @see PHPMailer::$cc @see PHPMailer::$bcc + */ + protected $all_recipients = array(); + + /** + * An array of names and addresses queued for validation. + * In send(), valid and non duplicate entries are moved to $all_recipients + * and one of $to, $cc, or $bcc. + * This array is used only for addresses with IDN. + * @var array + * @access protected + * @see PHPMailer::$to @see PHPMailer::$cc @see PHPMailer::$bcc + * @see PHPMailer::$all_recipients + */ + protected $RecipientsQueue = array(); + + /** + * An array of reply-to names and addresses queued for validation. + * In send(), valid and non duplicate entries are moved to $ReplyTo. + * This array is used only for addresses with IDN. + * @var array + * @access protected + * @see PHPMailer::$ReplyTo + */ + protected $ReplyToQueue = array(); + + /** + * The array of attachments. + * @var array + * @access protected + */ + protected $attachment = array(); + + /** + * The array of custom headers. + * @var array + * @access protected + */ + protected $CustomHeader = array(); + + /** + * The most recent Message-ID (including angular brackets). + * @var string + * @access protected + */ + protected $lastMessageID = ''; + + /** + * The message's MIME type. + * @var string + * @access protected + */ + protected $message_type = ''; + + /** + * The array of MIME boundary strings. + * @var array + * @access protected + */ + protected $boundary = array(); + + /** + * The array of available languages. + * @var array + * @access protected + */ + protected $language = array(); + + /** + * The number of errors encountered. + * @var integer + * @access protected + */ + protected $error_count = 0; + + /** + * The S/MIME certificate file path. + * @var string + * @access protected + */ + protected $sign_cert_file = ''; + + /** + * The S/MIME key file path. + * @var string + * @access protected + */ + protected $sign_key_file = ''; + + /** + * The optional S/MIME extra certificates ("CA Chain") file path. + * @var string + * @access protected + */ + protected $sign_extracerts_file = ''; + + /** + * The S/MIME password for the key. + * Used only if the key is encrypted. + * @var string + * @access protected + */ + protected $sign_key_pass = ''; + + /** + * Whether to throw exceptions for errors. + * @var boolean + * @access protected + */ + protected $exceptions = false; + + /** + * Unique ID used for message ID and boundaries. + * @var string + * @access protected + */ + protected $uniqueid = ''; + + /** + * Error severity: message only, continue processing. + */ + const STOP_MESSAGE = 0; + + /** + * Error severity: message, likely ok to continue processing. + */ + const STOP_CONTINUE = 1; + + /** + * Error severity: message, plus full stop, critical error reached. + */ + const STOP_CRITICAL = 2; + + /** + * SMTP RFC standard line ending. + */ + const CRLF = "\r\n"; + + /** + * The maximum line length allowed by RFC 2822 section 2.1.1 + * @var integer + */ + const MAX_LINE_LENGTH = 998; + + /** + * Constructor. + * @param boolean $exceptions Should we throw external exceptions? + */ + public function __construct($exceptions = null) + { + if ($exceptions !== null) { + $this->exceptions = (boolean)$exceptions; + } + //Pick an appropriate debug output format automatically + $this->Debugoutput = (strpos(PHP_SAPI, 'cli') !== false ? 'echo' : 'html'); + } + + /** + * Destructor. + */ + public function __destruct() + { + //Close any open SMTP connection nicely + $this->smtpClose(); + } + + /** + * Call mail() in a safe_mode-aware fashion. + * Also, unless sendmail_path points to sendmail (or something that + * claims to be sendmail), don't pass params (not a perfect fix, + * but it will do) + * @param string $to To + * @param string $subject Subject + * @param string $body Message Body + * @param string $header Additional Header(s) + * @param string $params Params + * @access private + * @return boolean + */ + private function mailPassthru($to, $subject, $body, $header, $params) + { + //Check overloading of mail function to avoid double-encoding + if (ini_get('mbstring.func_overload') & 1) { + $subject = $this->secureHeader($subject); + } else { + $subject = $this->encodeHeader($this->secureHeader($subject)); + } + + //Can't use additional_parameters in safe_mode, calling mail() with null params breaks + //@link http://php.net/manual/en/function.mail.php + if (ini_get('safe_mode') or !$this->UseSendmailOptions or is_null($params)) { + $result = @mail($to, $subject, $body, $header); + } else { + $result = @mail($to, $subject, $body, $header, $params); + } + return $result; + } + /** + * Output debugging info via user-defined method. + * Only generates output if SMTP debug output is enabled (@see SMTP::$do_debug). + * @see PHPMailer::$Debugoutput + * @see PHPMailer::$SMTPDebug + * @param string $str + */ + protected function edebug($str) + { + if ($this->SMTPDebug <= 0) { + return; + } + //Avoid clash with built-in function names + if (!in_array($this->Debugoutput, array('error_log', 'html', 'echo')) and is_callable($this->Debugoutput)) { + call_user_func($this->Debugoutput, $str, $this->SMTPDebug); + return; + } + switch ($this->Debugoutput) { + case 'error_log': + //Don't output, just log + error_log($str); + break; + case 'html': + //Cleans up output a bit for a better looking, HTML-safe output + echo htmlentities( + preg_replace('/[\r\n]+/', '', $str), + ENT_QUOTES, + 'UTF-8' + ) + . "
\n"; + break; + case 'echo': + default: + //Normalize line breaks + $str = preg_replace('/\r\n?/ms', "\n", $str); + echo gmdate('Y-m-d H:i:s') . "\t" . str_replace( + "\n", + "\n \t ", + trim($str) + ) . "\n"; + } + } + + /** + * Sets message type to HTML or plain. + * @param boolean $isHtml True for HTML mode. + * @return void + */ + public function isHTML($isHtml = true) + { + if ($isHtml) { + $this->ContentType = 'text/html'; + } else { + $this->ContentType = 'text/plain'; + } + } + + /** + * Send messages using SMTP. + * @return void + */ + public function isSMTP() + { + $this->Mailer = 'smtp'; + } + + /** + * Send messages using PHP's mail() function. + * @return void + */ + public function isMail() + { + $this->Mailer = 'mail'; + } + + /** + * Send messages using $Sendmail. + * @return void + */ + public function isSendmail() + { + $ini_sendmail_path = ini_get('sendmail_path'); + + if (!stristr($ini_sendmail_path, 'sendmail')) { + $this->Sendmail = '/usr/sbin/sendmail'; + } else { + $this->Sendmail = $ini_sendmail_path; + } + $this->Mailer = 'sendmail'; + } + + /** + * Send messages using qmail. + * @return void + */ + public function isQmail() + { + $ini_sendmail_path = ini_get('sendmail_path'); + + if (!stristr($ini_sendmail_path, 'qmail')) { + $this->Sendmail = '/var/qmail/bin/qmail-inject'; + } else { + $this->Sendmail = $ini_sendmail_path; + } + $this->Mailer = 'qmail'; + } + + /** + * Add a "To" address. + * @param string $address The email address to send to + * @param string $name + * @return boolean true on success, false if address already used or invalid in some way + */ + public function addAddress($address, $name = '') + { + return $this->addOrEnqueueAnAddress('to', $address, $name); + } + + /** + * Add a "CC" address. + * @note: This function works with the SMTP mailer on win32, not with the "mail" mailer. + * @param string $address The email address to send to + * @param string $name + * @return boolean true on success, false if address already used or invalid in some way + */ + public function addCC($address, $name = '') + { + return $this->addOrEnqueueAnAddress('cc', $address, $name); + } + + /** + * Add a "BCC" address. + * @note: This function works with the SMTP mailer on win32, not with the "mail" mailer. + * @param string $address The email address to send to + * @param string $name + * @return boolean true on success, false if address already used or invalid in some way + */ + public function addBCC($address, $name = '') + { + return $this->addOrEnqueueAnAddress('bcc', $address, $name); + } + + /** + * Add a "Reply-To" address. + * @param string $address The email address to reply to + * @param string $name + * @return boolean true on success, false if address already used or invalid in some way + */ + public function addReplyTo($address, $name = '') + { + return $this->addOrEnqueueAnAddress('Reply-To', $address, $name); + } + + /** + * Add an address to one of the recipient arrays or to the ReplyTo array. Because PHPMailer + * can't validate addresses with an IDN without knowing the PHPMailer::$CharSet (that can still + * be modified after calling this function), addition of such addresses is delayed until send(). + * Addresses that have been added already return false, but do not throw exceptions. + * @param string $kind One of 'to', 'cc', 'bcc', or 'ReplyTo' + * @param string $address The email address to send, resp. to reply to + * @param string $name + * @throws phpmailerException + * @return boolean true on success, false if address already used or invalid in some way + * @access protected + */ + protected function addOrEnqueueAnAddress($kind, $address, $name) + { + $address = trim($address); + $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim + if (($pos = strrpos($address, '@')) === false) { + // At-sign is misssing. + $error_message = $this->lang('invalid_address') . " (addAnAddress $kind): $address"; + $this->setError($error_message); + $this->edebug($error_message); + if ($this->exceptions) { + throw new phpmailerException($error_message); + } + return false; + } + $params = array($kind, $address, $name); + // Enqueue addresses with IDN until we know the PHPMailer::$CharSet. + if ($this->has8bitChars(substr($address, ++$pos)) and $this->idnSupported()) { + if ($kind != 'Reply-To') { + if (!array_key_exists($address, $this->RecipientsQueue)) { + $this->RecipientsQueue[$address] = $params; + return true; + } + } else { + if (!array_key_exists($address, $this->ReplyToQueue)) { + $this->ReplyToQueue[$address] = $params; + return true; + } + } + return false; + } + // Immediately add standard addresses without IDN. + return call_user_func_array(array($this, 'addAnAddress'), $params); + } + + /** + * Add an address to one of the recipient arrays or to the ReplyTo array. + * Addresses that have been added already return false, but do not throw exceptions. + * @param string $kind One of 'to', 'cc', 'bcc', or 'ReplyTo' + * @param string $address The email address to send, resp. to reply to + * @param string $name + * @throws phpmailerException + * @return boolean true on success, false if address already used or invalid in some way + * @access protected + */ + protected function addAnAddress($kind, $address, $name = '') + { + if (!in_array($kind, array('to', 'cc', 'bcc', 'Reply-To'))) { + $error_message = $this->lang('Invalid recipient kind: ') . $kind; + $this->setError($error_message); + $this->edebug($error_message); + if ($this->exceptions) { + throw new phpmailerException($error_message); + } + return false; + } + if (!$this->validateAddress($address)) { + $error_message = $this->lang('invalid_address') . " (addAnAddress $kind): $address"; + $this->setError($error_message); + $this->edebug($error_message); + if ($this->exceptions) { + throw new phpmailerException($error_message); + } + return false; + } + if ($kind != 'Reply-To') { + if (!array_key_exists(strtolower($address), $this->all_recipients)) { + array_push($this->$kind, array($address, $name)); + $this->all_recipients[strtolower($address)] = true; + return true; + } + } else { + if (!array_key_exists(strtolower($address), $this->ReplyTo)) { + $this->ReplyTo[strtolower($address)] = array($address, $name); + return true; + } + } + return false; + } + + /** + * Parse and validate a string containing one or more RFC822-style comma-separated email addresses + * of the form "display name
" into an array of name/address pairs. + * Uses the imap_rfc822_parse_adrlist function if the IMAP extension is available. + * Note that quotes in the name part are removed. + * @param string $addrstr The address list string + * @param bool $useimap Whether to use the IMAP extension to parse the list + * @return array + * @link http://www.andrew.cmu.edu/user/agreen1/testing/mrbs/web/Mail/RFC822.php A more careful implementation + */ + public function parseAddresses($addrstr, $useimap = true) + { + $addresses = array(); + if ($useimap and function_exists('imap_rfc822_parse_adrlist')) { + //Use this built-in parser if it's available + $list = imap_rfc822_parse_adrlist($addrstr, ''); + foreach ($list as $address) { + if ($address->host != '.SYNTAX-ERROR.') { + if ($this->validateAddress($address->mailbox . '@' . $address->host)) { + $addresses[] = array( + 'name' => (property_exists($address, 'personal') ? $address->personal : ''), + 'address' => $address->mailbox . '@' . $address->host + ); + } + } + } + } else { + //Use this simpler parser + $list = explode(',', $addrstr); + foreach ($list as $address) { + $address = trim($address); + //Is there a separate name part? + if (strpos($address, '<') === false) { + //No separate name, just use the whole thing + if ($this->validateAddress($address)) { + $addresses[] = array( + 'name' => '', + 'address' => $address + ); + } + } else { + list($name, $email) = explode('<', $address); + $email = trim(str_replace('>', '', $email)); + if ($this->validateAddress($email)) { + $addresses[] = array( + 'name' => trim(str_replace(array('"', "'"), '', $name)), + 'address' => $email + ); + } + } + } + } + return $addresses; + } + + /** + * Set the From and FromName properties. + * @param string $address + * @param string $name + * @param boolean $auto Whether to also set the Sender address, defaults to true + * @throws phpmailerException + * @return boolean + */ + public function setFrom($address, $name = '', $auto = true) + { + $address = trim($address); + $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim + // Don't validate now addresses with IDN. Will be done in send(). + if (($pos = strrpos($address, '@')) === false or + (!$this->has8bitChars(substr($address, ++$pos)) or !$this->idnSupported()) and + !$this->validateAddress($address)) { + $error_message = $this->lang('invalid_address') . " (setFrom) $address"; + $this->setError($error_message); + $this->edebug($error_message); + if ($this->exceptions) { + throw new phpmailerException($error_message); + } + return false; + } + $this->From = $address; + $this->FromName = $name; + if ($auto) { + if (empty($this->Sender)) { + $this->Sender = $address; + } + } + return true; + } + + /** + * Return the Message-ID header of the last email. + * Technically this is the value from the last time the headers were created, + * but it's also the message ID of the last sent message except in + * pathological cases. + * @return string + */ + public function getLastMessageID() + { + return $this->lastMessageID; + } + + /** + * Check that a string looks like an email address. + * @param string $address The email address to check + * @param string|callable $patternselect A selector for the validation pattern to use : + * * `auto` Pick best pattern automatically; + * * `pcre8` Use the squiloople.com pattern, requires PCRE > 8.0, PHP >= 5.3.2, 5.2.14; + * * `pcre` Use old PCRE implementation; + * * `php` Use PHP built-in FILTER_VALIDATE_EMAIL; + * * `html5` Use the pattern given by the HTML5 spec for 'email' type form input elements. + * * `noregex` Don't use a regex: super fast, really dumb. + * Alternatively you may pass in a callable to inject your own validator, for example: + * PHPMailer::validateAddress('user@example.com', function($address) { + * return (strpos($address, '@') !== false); + * }); + * You can also set the PHPMailer::$validator static to a callable, allowing built-in methods to use your validator. + * @return boolean + * @static + * @access public + */ + public static function validateAddress($address, $patternselect = null) + { + if (is_null($patternselect)) { + $patternselect = self::$validator; + } + if (is_callable($patternselect)) { + return call_user_func($patternselect, $address); + } + //Reject line breaks in addresses; it's valid RFC5322, but not RFC5321 + if (strpos($address, "\n") !== false or strpos($address, "\r") !== false) { + return false; + } + if (!$patternselect or $patternselect == 'auto') { + //Check this constant first so it works when extension_loaded() is disabled by safe mode + //Constant was added in PHP 5.2.4 + if (defined('PCRE_VERSION')) { + //This pattern can get stuck in a recursive loop in PCRE <= 8.0.2 + if (version_compare(PCRE_VERSION, '8.0.3') >= 0) { + $patternselect = 'pcre8'; + } else { + $patternselect = 'pcre'; + } + } elseif (function_exists('extension_loaded') and extension_loaded('pcre')) { + //Fall back to older PCRE + $patternselect = 'pcre'; + } else { + //Filter_var appeared in PHP 5.2.0 and does not require the PCRE extension + if (version_compare(PHP_VERSION, '5.2.0') >= 0) { + $patternselect = 'php'; + } else { + $patternselect = 'noregex'; + } + } + } + switch ($patternselect) { + case 'pcre8': + /** + * Uses the same RFC5322 regex on which FILTER_VALIDATE_EMAIL is based, but allows dotless domains. + * @link http://squiloople.com/2009/12/20/email-address-validation/ + * @copyright 2009-2010 Michael Rushton + * Feel free to use and redistribute this code. But please keep this copyright notice. + */ + return (boolean)preg_match( + '/^(?!(?>(?1)"?(?>\\\[ -~]|[^"])"?(?1)){255,})(?!(?>(?1)"?(?>\\\[ -~]|[^"])"?(?1)){65,}@)' . + '((?>(?>(?>((?>(?>(?>\x0D\x0A)?[\t ])+|(?>[\t ]*\x0D\x0A)?[\t ]+)?)(\((?>(?2)' . + '(?>[\x01-\x08\x0B\x0C\x0E-\'*-\[\]-\x7F]|\\\[\x00-\x7F]|(?3)))*(?2)\)))+(?2))|(?2))?)' . + '([!#-\'*+\/-9=?^-~-]+|"(?>(?2)(?>[\x01-\x08\x0B\x0C\x0E-!#-\[\]-\x7F]|\\\[\x00-\x7F]))*' . + '(?2)")(?>(?1)\.(?1)(?4))*(?1)@(?!(?1)[a-z0-9-]{64,})(?1)(?>([a-z0-9](?>[a-z0-9-]*[a-z0-9])?)' . + '(?>(?1)\.(?!(?1)[a-z0-9-]{64,})(?1)(?5)){0,126}|\[(?:(?>IPv6:(?>([a-f0-9]{1,4})(?>:(?6)){7}' . + '|(?!(?:.*[a-f0-9][:\]]){8,})((?6)(?>:(?6)){0,6})?::(?7)?))|(?>(?>IPv6:(?>(?6)(?>:(?6)){5}:' . + '|(?!(?:.*[a-f0-9]:){6,})(?8)?::(?>((?6)(?>:(?6)){0,4}):)?))?(25[0-5]|2[0-4][0-9]|1[0-9]{2}' . + '|[1-9]?[0-9])(?>\.(?9)){3}))\])(?1)$/isD', + $address + ); + case 'pcre': + //An older regex that doesn't need a recent PCRE + return (boolean)preg_match( + '/^(?!(?>"?(?>\\\[ -~]|[^"])"?){255,})(?!(?>"?(?>\\\[ -~]|[^"])"?){65,}@)(?>' . + '[!#-\'*+\/-9=?^-~-]+|"(?>(?>[\x01-\x08\x0B\x0C\x0E-!#-\[\]-\x7F]|\\\[\x00-\xFF]))*")' . + '(?>\.(?>[!#-\'*+\/-9=?^-~-]+|"(?>(?>[\x01-\x08\x0B\x0C\x0E-!#-\[\]-\x7F]|\\\[\x00-\xFF]))*"))*' . + '@(?>(?![a-z0-9-]{64,})(?>[a-z0-9](?>[a-z0-9-]*[a-z0-9])?)(?>\.(?![a-z0-9-]{64,})' . + '(?>[a-z0-9](?>[a-z0-9-]*[a-z0-9])?)){0,126}|\[(?:(?>IPv6:(?>(?>[a-f0-9]{1,4})(?>:' . + '[a-f0-9]{1,4}){7}|(?!(?:.*[a-f0-9][:\]]){8,})(?>[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,6})?' . + '::(?>[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,6})?))|(?>(?>IPv6:(?>[a-f0-9]{1,4}(?>:' . + '[a-f0-9]{1,4}){5}:|(?!(?:.*[a-f0-9]:){6,})(?>[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,4})?' . + '::(?>(?:[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,4}):)?))?(?>25[0-5]|2[0-4][0-9]|1[0-9]{2}' . + '|[1-9]?[0-9])(?>\.(?>25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}))\])$/isD', + $address + ); + case 'html5': + /** + * This is the pattern used in the HTML5 spec for validation of 'email' type form input elements. + * @link http://www.whatwg.org/specs/web-apps/current-work/#e-mail-state-(type=email) + */ + return (boolean)preg_match( + '/^[a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}' . + '[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/sD', + $address + ); + case 'noregex': + //No PCRE! Do something _very_ approximate! + //Check the address is 3 chars or longer and contains an @ that's not the first or last char + return (strlen($address) >= 3 + and strpos($address, '@') >= 1 + and strpos($address, '@') != strlen($address) - 1); + case 'php': + default: + return (boolean)filter_var($address, FILTER_VALIDATE_EMAIL); + } + } + + /** + * Tells whether IDNs (Internationalized Domain Names) are supported or not. This requires the + * "intl" and "mbstring" PHP extensions. + * @return bool "true" if required functions for IDN support are present + */ + public function idnSupported() + { + // @TODO: Write our own "idn_to_ascii" function for PHP <= 5.2. + return function_exists('idn_to_ascii') and function_exists('mb_convert_encoding'); + } + + /** + * Converts IDN in given email address to its ASCII form, also known as punycode, if possible. + * Important: Address must be passed in same encoding as currently set in PHPMailer::$CharSet. + * This function silently returns unmodified address if: + * - No conversion is necessary (i.e. domain name is not an IDN, or is already in ASCII form) + * - Conversion to punycode is impossible (e.g. required PHP functions are not available) + * or fails for any reason (e.g. domain has characters not allowed in an IDN) + * @see PHPMailer::$CharSet + * @param string $address The email address to convert + * @return string The encoded address in ASCII form + */ + public function punyencodeAddress($address) + { + // Verify we have required functions, CharSet, and at-sign. + if ($this->idnSupported() and + !empty($this->CharSet) and + ($pos = strrpos($address, '@')) !== false) { + $domain = substr($address, ++$pos); + // Verify CharSet string is a valid one, and domain properly encoded in this CharSet. + if ($this->has8bitChars($domain) and @mb_check_encoding($domain, $this->CharSet)) { + $domain = mb_convert_encoding($domain, 'UTF-8', $this->CharSet); + if (($punycode = defined('INTL_IDNA_VARIANT_UTS46') ? + idn_to_ascii($domain, 0, INTL_IDNA_VARIANT_UTS46) : + idn_to_ascii($domain)) !== false) { + return substr($address, 0, $pos) . $punycode; + } + } + } + return $address; + } + + /** + * Create a message and send it. + * Uses the sending method specified by $Mailer. + * @throws phpmailerException + * @return boolean false on error - See the ErrorInfo property for details of the error. + */ + public function send() + { + try { + if (!$this->preSend()) { + return false; + } + return $this->postSend(); + } catch (phpmailerException $exc) { + $this->mailHeader = ''; + $this->setError($exc->getMessage()); + if ($this->exceptions) { + throw $exc; + } + return false; + } + } + + /** + * Prepare a message for sending. + * @throws phpmailerException + * @return boolean + */ + public function preSend() + { + try { + $this->error_count = 0; // Reset errors + $this->mailHeader = ''; + + // Dequeue recipient and Reply-To addresses with IDN + foreach (array_merge($this->RecipientsQueue, $this->ReplyToQueue) as $params) { + $params[1] = $this->punyencodeAddress($params[1]); + call_user_func_array(array($this, 'addAnAddress'), $params); + } + if ((count($this->to) + count($this->cc) + count($this->bcc)) < 1) { + throw new phpmailerException($this->lang('provide_address'), self::STOP_CRITICAL); + } + + // Validate From, Sender, and ConfirmReadingTo addresses + foreach (array('From', 'Sender', 'ConfirmReadingTo') as $address_kind) { + $this->$address_kind = trim($this->$address_kind); + if (empty($this->$address_kind)) { + continue; + } + $this->$address_kind = $this->punyencodeAddress($this->$address_kind); + if (!$this->validateAddress($this->$address_kind)) { + $error_message = $this->lang('invalid_address') . ' (punyEncode) ' . $this->$address_kind; + $this->setError($error_message); + $this->edebug($error_message); + if ($this->exceptions) { + throw new phpmailerException($error_message); + } + return false; + } + } + + // Set whether the message is multipart/alternative + if ($this->alternativeExists()) { + $this->ContentType = 'multipart/alternative'; + } + + $this->setMessageType(); + // Refuse to send an empty message unless we are specifically allowing it + if (!$this->AllowEmpty and empty($this->Body)) { + throw new phpmailerException($this->lang('empty_message'), self::STOP_CRITICAL); + } + + // Create body before headers in case body makes changes to headers (e.g. altering transfer encoding) + $this->MIMEHeader = ''; + $this->MIMEBody = $this->createBody(); + // createBody may have added some headers, so retain them + $tempheaders = $this->MIMEHeader; + $this->MIMEHeader = $this->createHeader(); + $this->MIMEHeader .= $tempheaders; + + // To capture the complete message when using mail(), create + // an extra header list which createHeader() doesn't fold in + if ($this->Mailer == 'mail') { + if (count($this->to) > 0) { + $this->mailHeader .= $this->addrAppend('To', $this->to); + } else { + $this->mailHeader .= $this->headerLine('To', 'undisclosed-recipients:;'); + } + $this->mailHeader .= $this->headerLine( + 'Subject', + $this->encodeHeader($this->secureHeader(trim($this->Subject))) + ); + } + + // Sign with DKIM if enabled + if (!empty($this->DKIM_domain) + and !empty($this->DKIM_selector) + and (!empty($this->DKIM_private_string) + or (!empty($this->DKIM_private) + and self::isPermittedPath($this->DKIM_private) + and file_exists($this->DKIM_private) + ) + ) + ) { + $header_dkim = $this->DKIM_Add( + $this->MIMEHeader . $this->mailHeader, + $this->encodeHeader($this->secureHeader($this->Subject)), + $this->MIMEBody + ); + $this->MIMEHeader = rtrim($this->MIMEHeader, "\r\n ") . self::CRLF . + str_replace("\r\n", "\n", $header_dkim) . self::CRLF; + } + return true; + } catch (phpmailerException $exc) { + $this->setError($exc->getMessage()); + if ($this->exceptions) { + throw $exc; + } + return false; + } + } + + /** + * Actually send a message. + * Send the email via the selected mechanism + * @throws phpmailerException + * @return boolean + */ + public function postSend() + { + try { + // Choose the mailer and send through it + switch ($this->Mailer) { + case 'sendmail': + case 'qmail': + return $this->sendmailSend($this->MIMEHeader, $this->MIMEBody); + case 'smtp': + return $this->smtpSend($this->MIMEHeader, $this->MIMEBody); + case 'mail': + return $this->mailSend($this->MIMEHeader, $this->MIMEBody); + default: + $sendMethod = $this->Mailer.'Send'; + if (method_exists($this, $sendMethod)) { + return $this->$sendMethod($this->MIMEHeader, $this->MIMEBody); + } + + return $this->mailSend($this->MIMEHeader, $this->MIMEBody); + } + } catch (phpmailerException $exc) { + $this->setError($exc->getMessage()); + $this->edebug($exc->getMessage()); + if ($this->exceptions) { + throw $exc; + } + } + return false; + } + + /** + * Send mail using the $Sendmail program. + * @param string $header The message headers + * @param string $body The message body + * @see PHPMailer::$Sendmail + * @throws phpmailerException + * @access protected + * @return boolean + */ + protected function sendmailSend($header, $body) + { + // CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped. + if (!empty($this->Sender) and self::isShellSafe($this->Sender)) { + if ($this->Mailer == 'qmail') { + $sendmailFmt = '%s -f%s'; + } else { + $sendmailFmt = '%s -oi -f%s -t'; + } + } else { + if ($this->Mailer == 'qmail') { + $sendmailFmt = '%s'; + } else { + $sendmailFmt = '%s -oi -t'; + } + } + + // TODO: If possible, this should be changed to escapeshellarg. Needs thorough testing. + $sendmail = sprintf($sendmailFmt, escapeshellcmd($this->Sendmail), $this->Sender); + + if ($this->SingleTo) { + foreach ($this->SingleToArray as $toAddr) { + if (!@$mail = popen($sendmail, 'w')) { + throw new phpmailerException($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL); + } + fputs($mail, 'To: ' . $toAddr . "\n"); + fputs($mail, $header); + fputs($mail, $body); + $result = pclose($mail); + $this->doCallback( + ($result == 0), + array($toAddr), + $this->cc, + $this->bcc, + $this->Subject, + $body, + $this->From + ); + if ($result != 0) { + throw new phpmailerException($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL); + } + } + } else { + if (!@$mail = popen($sendmail, 'w')) { + throw new phpmailerException($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL); + } + fputs($mail, $header); + fputs($mail, $body); + $result = pclose($mail); + $this->doCallback( + ($result == 0), + $this->to, + $this->cc, + $this->bcc, + $this->Subject, + $body, + $this->From + ); + if ($result != 0) { + throw new phpmailerException($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL); + } + } + return true; + } + + /** + * Fix CVE-2016-10033 and CVE-2016-10045 by disallowing potentially unsafe shell characters. + * + * Note that escapeshellarg and escapeshellcmd are inadequate for our purposes, especially on Windows. + * @param string $string The string to be validated + * @see https://github.com/PHPMailer/PHPMailer/issues/924 CVE-2016-10045 bug report + * @access protected + * @return boolean + */ + protected static function isShellSafe($string) + { + // Future-proof + if (escapeshellcmd($string) !== $string + or !in_array(escapeshellarg($string), array("'$string'", "\"$string\"")) + ) { + return false; + } + + $length = strlen($string); + + for ($i = 0; $i < $length; $i++) { + $c = $string[$i]; + + // All other characters have a special meaning in at least one common shell, including = and +. + // Full stop (.) has a special meaning in cmd.exe, but its impact should be negligible here. + // Note that this does permit non-Latin alphanumeric characters based on the current locale. + if (!ctype_alnum($c) && strpos('@_-.', $c) === false) { + return false; + } + } + + return true; + } + + /** + * Check whether a file path is of a permitted type. + * Used to reject URLs and phar files from functions that access local file paths, + * such as addAttachment. + * @param string $path A relative or absolute path to a file. + * @return bool + */ + protected static function isPermittedPath($path) + { + return !preg_match('#^[a-z]+://#i', $path); + } + + /** + * Send mail using the PHP mail() function. + * @param string $header The message headers + * @param string $body The message body + * @link http://www.php.net/manual/en/book.mail.php + * @throws phpmailerException + * @access protected + * @return boolean + */ + protected function mailSend($header, $body) + { + $toArr = array(); + foreach ($this->to as $toaddr) { + $toArr[] = $this->addrFormat($toaddr); + } + $to = implode(', ', $toArr); + + $params = null; + //This sets the SMTP envelope sender which gets turned into a return-path header by the receiver + if (!empty($this->Sender) and $this->validateAddress($this->Sender)) { + // CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped. + if (self::isShellSafe($this->Sender)) { + $params = sprintf('-f%s', $this->Sender); + } + } + if (!empty($this->Sender) and !ini_get('safe_mode') and $this->validateAddress($this->Sender)) { + $old_from = ini_get('sendmail_from'); + ini_set('sendmail_from', $this->Sender); + } + $result = false; + if ($this->SingleTo and count($toArr) > 1) { + foreach ($toArr as $toAddr) { + $result = $this->mailPassthru($toAddr, $this->Subject, $body, $header, $params); + $this->doCallback($result, array($toAddr), $this->cc, $this->bcc, $this->Subject, $body, $this->From); + } + } else { + $result = $this->mailPassthru($to, $this->Subject, $body, $header, $params); + $this->doCallback($result, $this->to, $this->cc, $this->bcc, $this->Subject, $body, $this->From); + } + if (isset($old_from)) { + ini_set('sendmail_from', $old_from); + } + if (!$result) { + throw new phpmailerException($this->lang('instantiate'), self::STOP_CRITICAL); + } + return true; + } + + /** + * Get an instance to use for SMTP operations. + * Override this function to load your own SMTP implementation + * @return SMTP + */ + public function getSMTPInstance() + { + if (!is_object($this->smtp)) { + $this->smtp = new SMTP; + } + return $this->smtp; + } + + /** + * Send mail via SMTP. + * Returns false if there is a bad MAIL FROM, RCPT, or DATA input. + * Uses the PHPMailerSMTP class by default. + * @see PHPMailer::getSMTPInstance() to use a different class. + * @param string $header The message headers + * @param string $body The message body + * @throws phpmailerException + * @uses SMTP + * @access protected + * @return boolean + */ + protected function smtpSend($header, $body) + { + $bad_rcpt = array(); + if (!$this->smtpConnect($this->SMTPOptions)) { + throw new phpmailerException($this->lang('smtp_connect_failed'), self::STOP_CRITICAL); + } + if (!empty($this->Sender) and $this->validateAddress($this->Sender)) { + $smtp_from = $this->Sender; + } else { + $smtp_from = $this->From; + } + if (!$this->smtp->mail($smtp_from)) { + $this->setError($this->lang('from_failed') . $smtp_from . ' : ' . implode(',', $this->smtp->getError())); + throw new phpmailerException($this->ErrorInfo, self::STOP_CRITICAL); + } + + // Attempt to send to all recipients + foreach (array($this->to, $this->cc, $this->bcc) as $togroup) { + foreach ($togroup as $to) { + if (!$this->smtp->recipient($to[0])) { + $error = $this->smtp->getError(); + $bad_rcpt[] = array('to' => $to[0], 'error' => $error['detail']); + $isSent = false; + } else { + $isSent = true; + } + $this->doCallback($isSent, array($to[0]), array(), array(), $this->Subject, $body, $this->From); + } + } + + // Only send the DATA command if we have viable recipients + if ((count($this->all_recipients) > count($bad_rcpt)) and !$this->smtp->data($header . $body)) { + throw new phpmailerException($this->lang('data_not_accepted'), self::STOP_CRITICAL); + } + if ($this->SMTPKeepAlive) { + $this->smtp->reset(); + } else { + $this->smtp->quit(); + $this->smtp->close(); + } + //Create error message for any bad addresses + if (count($bad_rcpt) > 0) { + $errstr = ''; + foreach ($bad_rcpt as $bad) { + $errstr .= $bad['to'] . ': ' . $bad['error']; + } + throw new phpmailerException( + $this->lang('recipients_failed') . $errstr, + self::STOP_CONTINUE + ); + } + return true; + } + + /** + * Initiate a connection to an SMTP server. + * Returns false if the operation failed. + * @param array $options An array of options compatible with stream_context_create() + * @uses SMTP + * @access public + * @throws phpmailerException + * @return boolean + */ + public function smtpConnect($options = null) + { + if (is_null($this->smtp)) { + $this->smtp = $this->getSMTPInstance(); + } + + //If no options are provided, use whatever is set in the instance + if (is_null($options)) { + $options = $this->SMTPOptions; + } + + // Already connected? + if ($this->smtp->connected()) { + return true; + } + + $this->smtp->setTimeout($this->Timeout); + $this->smtp->setDebugLevel($this->SMTPDebug); + $this->smtp->setDebugOutput($this->Debugoutput); + $this->smtp->setVerp($this->do_verp); + $hosts = explode(';', $this->Host); + $lastexception = null; + + foreach ($hosts as $hostentry) { + $hostinfo = array(); + if (!preg_match( + '/^((ssl|tls):\/\/)*([a-zA-Z0-9\.-]*|\[[a-fA-F0-9:]+\]):?([0-9]*)$/', + trim($hostentry), + $hostinfo + )) { + // Not a valid host entry + $this->edebug('Ignoring invalid host: ' . $hostentry); + continue; + } + // $hostinfo[2]: optional ssl or tls prefix + // $hostinfo[3]: the hostname + // $hostinfo[4]: optional port number + // The host string prefix can temporarily override the current setting for SMTPSecure + // If it's not specified, the default value is used + $prefix = ''; + $secure = $this->SMTPSecure; + $tls = ($this->SMTPSecure == 'tls'); + if ('ssl' == $hostinfo[2] or ('' == $hostinfo[2] and 'ssl' == $this->SMTPSecure)) { + $prefix = 'ssl://'; + $tls = false; // Can't have SSL and TLS at the same time + $secure = 'ssl'; + } elseif ($hostinfo[2] == 'tls') { + $tls = true; + // tls doesn't use a prefix + $secure = 'tls'; + } + //Do we need the OpenSSL extension? + $sslext = defined('OPENSSL_ALGO_SHA1'); + if ('tls' === $secure or 'ssl' === $secure) { + //Check for an OpenSSL constant rather than using extension_loaded, which is sometimes disabled + if (!$sslext) { + throw new phpmailerException($this->lang('extension_missing').'openssl', self::STOP_CRITICAL); + } + } + $host = $hostinfo[3]; + $port = $this->Port; + $tport = (integer)$hostinfo[4]; + if ($tport > 0 and $tport < 65536) { + $port = $tport; + } + if ($this->smtp->connect($prefix . $host, $port, $this->Timeout, $options)) { + try { + if ($this->Helo) { + $hello = $this->Helo; + } else { + $hello = $this->serverHostname(); + } + $this->smtp->hello($hello); + //Automatically enable TLS encryption if: + // * it's not disabled + // * we have openssl extension + // * we are not already using SSL + // * the server offers STARTTLS + if ($this->SMTPAutoTLS and $sslext and $secure != 'ssl' and $this->smtp->getServerExt('STARTTLS')) { + $tls = true; + } + if ($tls) { + if (!$this->smtp->startTLS()) { + throw new phpmailerException($this->lang('connect_host')); + } + // We must resend EHLO after TLS negotiation + $this->smtp->hello($hello); + } + if ($this->SMTPAuth) { + if (!$this->smtp->authenticate( + $this->Username, + $this->Password, + $this->AuthType, + $this->Realm, + $this->Workstation + ) + ) { + throw new phpmailerException($this->lang('authenticate')); + } + } + return true; + } catch (phpmailerException $exc) { + $lastexception = $exc; + $this->edebug($exc->getMessage()); + // We must have connected, but then failed TLS or Auth, so close connection nicely + $this->smtp->quit(); + } + } + } + // If we get here, all connection attempts have failed, so close connection hard + $this->smtp->close(); + // As we've caught all exceptions, just report whatever the last one was + if ($this->exceptions and !is_null($lastexception)) { + throw $lastexception; + } + return false; + } + + /** + * Close the active SMTP session if one exists. + * @return void + */ + public function smtpClose() + { + if (is_a($this->smtp, 'SMTP')) { + if ($this->smtp->connected()) { + $this->smtp->quit(); + $this->smtp->close(); + } + } + } + + /** + * Set the language for error messages. + * Returns false if it cannot load the language file. + * The default language is English. + * @param string $langcode ISO 639-1 2-character language code (e.g. French is "fr") + * @param string $lang_path Path to the language file directory, with trailing separator (slash) + * @return boolean + * @access public + */ + public function setLanguage($langcode = 'en', $lang_path = '') + { + // Backwards compatibility for renamed language codes + $renamed_langcodes = array( + 'br' => 'pt_br', + 'cz' => 'cs', + 'dk' => 'da', + 'no' => 'nb', + 'se' => 'sv', + 'sr' => 'rs' + ); + + if (isset($renamed_langcodes[$langcode])) { + $langcode = $renamed_langcodes[$langcode]; + } + + // Define full set of translatable strings in English + $PHPMAILER_LANG = array( + 'authenticate' => 'SMTP Error: Could not authenticate.', + 'connect_host' => 'SMTP Error: Could not connect to SMTP host.', + 'data_not_accepted' => 'SMTP Error: data not accepted.', + 'empty_message' => 'Message body empty', + 'encoding' => 'Unknown encoding: ', + 'execute' => 'Could not execute: ', + 'file_access' => 'Could not access file: ', + 'file_open' => 'File Error: Could not open file: ', + 'from_failed' => 'The following From address failed: ', + 'instantiate' => 'Could not instantiate mail function.', + 'invalid_address' => 'Invalid address: ', + 'mailer_not_supported' => ' mailer is not supported.', + 'provide_address' => 'You must provide at least one recipient email address.', + 'recipients_failed' => 'SMTP Error: The following recipients failed: ', + 'signing' => 'Signing Error: ', + 'smtp_connect_failed' => 'SMTP connect() failed.', + 'smtp_error' => 'SMTP server error: ', + 'variable_set' => 'Cannot set or reset variable: ', + 'extension_missing' => 'Extension missing: ' + ); + if (empty($lang_path)) { + // Calculate an absolute path so it can work if CWD is not here + $lang_path = dirname(__FILE__). DIRECTORY_SEPARATOR . 'language'. DIRECTORY_SEPARATOR; + } + //Validate $langcode + if (!preg_match('/^[a-z]{2}(?:_[a-zA-Z]{2})?$/', $langcode)) { + $langcode = 'en'; + } + $foundlang = true; + $lang_file = $lang_path . 'phpmailer.lang-' . $langcode . '.php'; + // There is no English translation file + if ($langcode != 'en') { + // Make sure language file path is readable + if (!self::isPermittedPath($lang_file) or !is_readable($lang_file)) { + $foundlang = false; + } else { + // Overwrite language-specific strings. + // This way we'll never have missing translation keys. + $foundlang = include $lang_file; + } + } + $this->language = $PHPMAILER_LANG; + return (boolean)$foundlang; // Returns false if language not found + } + + /** + * Get the array of strings for the current language. + * @return array + */ + public function getTranslations() + { + return $this->language; + } + + /** + * Create recipient headers. + * @access public + * @param string $type + * @param array $addr An array of recipient, + * where each recipient is a 2-element indexed array with element 0 containing an address + * and element 1 containing a name, like: + * array(array('joe@example.com', 'Joe User'), array('zoe@example.com', 'Zoe User')) + * @return string + */ + public function addrAppend($type, $addr) + { + $addresses = array(); + foreach ($addr as $address) { + $addresses[] = $this->addrFormat($address); + } + return $type . ': ' . implode(', ', $addresses) . $this->LE; + } + + /** + * Format an address for use in a message header. + * @access public + * @param array $addr A 2-element indexed array, element 0 containing an address, element 1 containing a name + * like array('joe@example.com', 'Joe User') + * @return string + */ + public function addrFormat($addr) + { + if (empty($addr[1])) { // No name provided + return $this->secureHeader($addr[0]); + } else { + return $this->encodeHeader($this->secureHeader($addr[1]), 'phrase') . ' <' . $this->secureHeader( + $addr[0] + ) . '>'; + } + } + + /** + * Word-wrap message. + * For use with mailers that do not automatically perform wrapping + * and for quoted-printable encoded messages. + * Original written by philippe. + * @param string $message The message to wrap + * @param integer $length The line length to wrap to + * @param boolean $qp_mode Whether to run in Quoted-Printable mode + * @access public + * @return string + */ + public function wrapText($message, $length, $qp_mode = false) + { + if ($qp_mode) { + $soft_break = sprintf(' =%s', $this->LE); + } else { + $soft_break = $this->LE; + } + // If utf-8 encoding is used, we will need to make sure we don't + // split multibyte characters when we wrap + $is_utf8 = (strtolower($this->CharSet) == 'utf-8'); + $lelen = strlen($this->LE); + $crlflen = strlen(self::CRLF); + + $message = $this->fixEOL($message); + //Remove a trailing line break + if (substr($message, -$lelen) == $this->LE) { + $message = substr($message, 0, -$lelen); + } + + //Split message into lines + $lines = explode($this->LE, $message); + //Message will be rebuilt in here + $message = ''; + foreach ($lines as $line) { + $words = explode(' ', $line); + $buf = ''; + $firstword = true; + foreach ($words as $word) { + if ($qp_mode and (strlen($word) > $length)) { + $space_left = $length - strlen($buf) - $crlflen; + if (!$firstword) { + if ($space_left > 20) { + $len = $space_left; + if ($is_utf8) { + $len = $this->utf8CharBoundary($word, $len); + } elseif (substr($word, $len - 1, 1) == '=') { + $len--; + } elseif (substr($word, $len - 2, 1) == '=') { + $len -= 2; + } + $part = substr($word, 0, $len); + $word = substr($word, $len); + $buf .= ' ' . $part; + $message .= $buf . sprintf('=%s', self::CRLF); + } else { + $message .= $buf . $soft_break; + } + $buf = ''; + } + while (strlen($word) > 0) { + if ($length <= 0) { + break; + } + $len = $length; + if ($is_utf8) { + $len = $this->utf8CharBoundary($word, $len); + } elseif (substr($word, $len - 1, 1) == '=') { + $len--; + } elseif (substr($word, $len - 2, 1) == '=') { + $len -= 2; + } + $part = substr($word, 0, $len); + $word = substr($word, $len); + + if (strlen($word) > 0) { + $message .= $part . sprintf('=%s', self::CRLF); + } else { + $buf = $part; + } + } + } else { + $buf_o = $buf; + if (!$firstword) { + $buf .= ' '; + } + $buf .= $word; + + if (strlen($buf) > $length and $buf_o != '') { + $message .= $buf_o . $soft_break; + $buf = $word; + } + } + $firstword = false; + } + $message .= $buf . self::CRLF; + } + + return $message; + } + + /** + * Find the last character boundary prior to $maxLength in a utf-8 + * quoted-printable encoded string. + * Original written by Colin Brown. + * @access public + * @param string $encodedText utf-8 QP text + * @param integer $maxLength Find the last character boundary prior to this length + * @return integer + */ + public function utf8CharBoundary($encodedText, $maxLength) + { + $foundSplitPos = false; + $lookBack = 3; + while (!$foundSplitPos) { + $lastChunk = substr($encodedText, $maxLength - $lookBack, $lookBack); + $encodedCharPos = strpos($lastChunk, '='); + if (false !== $encodedCharPos) { + // Found start of encoded character byte within $lookBack block. + // Check the encoded byte value (the 2 chars after the '=') + $hex = substr($encodedText, $maxLength - $lookBack + $encodedCharPos + 1, 2); + $dec = hexdec($hex); + if ($dec < 128) { + // Single byte character. + // If the encoded char was found at pos 0, it will fit + // otherwise reduce maxLength to start of the encoded char + if ($encodedCharPos > 0) { + $maxLength = $maxLength - ($lookBack - $encodedCharPos); + } + $foundSplitPos = true; + } elseif ($dec >= 192) { + // First byte of a multi byte character + // Reduce maxLength to split at start of character + $maxLength = $maxLength - ($lookBack - $encodedCharPos); + $foundSplitPos = true; + } elseif ($dec < 192) { + // Middle byte of a multi byte character, look further back + $lookBack += 3; + } + } else { + // No encoded character found + $foundSplitPos = true; + } + } + return $maxLength; + } + + /** + * Apply word wrapping to the message body. + * Wraps the message body to the number of chars set in the WordWrap property. + * You should only do this to plain-text bodies as wrapping HTML tags may break them. + * This is called automatically by createBody(), so you don't need to call it yourself. + * @access public + * @return void + */ + public function setWordWrap() + { + if ($this->WordWrap < 1) { + return; + } + + switch ($this->message_type) { + case 'alt': + case 'alt_inline': + case 'alt_attach': + case 'alt_inline_attach': + $this->AltBody = $this->wrapText($this->AltBody, $this->WordWrap); + break; + default: + $this->Body = $this->wrapText($this->Body, $this->WordWrap); + break; + } + } + + /** + * Assemble message headers. + * @access public + * @return string The assembled headers + */ + public function createHeader() + { + $result = ''; + + $result .= $this->headerLine('Date', $this->MessageDate == '' ? self::rfcDate() : $this->MessageDate); + + // To be created automatically by mail() + if ($this->SingleTo) { + if ($this->Mailer != 'mail') { + foreach ($this->to as $toaddr) { + $this->SingleToArray[] = $this->addrFormat($toaddr); + } + } + } else { + if (count($this->to) > 0) { + if ($this->Mailer != 'mail') { + $result .= $this->addrAppend('To', $this->to); + } + } elseif (count($this->cc) == 0) { + $result .= $this->headerLine('To', 'undisclosed-recipients:;'); + } + } + + $result .= $this->addrAppend('From', array(array(trim($this->From), $this->FromName))); + + // sendmail and mail() extract Cc from the header before sending + if (count($this->cc) > 0) { + $result .= $this->addrAppend('Cc', $this->cc); + } + + // sendmail and mail() extract Bcc from the header before sending + if (( + $this->Mailer == 'sendmail' or $this->Mailer == 'qmail' or $this->Mailer == 'mail' + ) + and count($this->bcc) > 0 + ) { + $result .= $this->addrAppend('Bcc', $this->bcc); + } + + if (count($this->ReplyTo) > 0) { + $result .= $this->addrAppend('Reply-To', $this->ReplyTo); + } + + // mail() sets the subject itself + if ($this->Mailer != 'mail') { + $result .= $this->headerLine('Subject', $this->encodeHeader($this->secureHeader($this->Subject))); + } + + // Only allow a custom message ID if it conforms to RFC 5322 section 3.6.4 + // https://tools.ietf.org/html/rfc5322#section-3.6.4 + if ('' != $this->MessageID and preg_match('/^<.*@.*>$/', $this->MessageID)) { + $this->lastMessageID = $this->MessageID; + } else { + $this->lastMessageID = sprintf('<%s@%s>', $this->uniqueid, $this->serverHostname()); + } + $result .= $this->headerLine('Message-ID', $this->lastMessageID); + if (!is_null($this->Priority)) { + $result .= $this->headerLine('X-Priority', $this->Priority); + } + if ($this->XMailer == '') { + $result .= $this->headerLine( + 'X-Mailer', + 'PHPMailer ' . $this->Version . ' (https://github.com/PHPMailer/PHPMailer)' + ); + } else { + $myXmailer = trim($this->XMailer); + if ($myXmailer) { + $result .= $this->headerLine('X-Mailer', $myXmailer); + } + } + + if ($this->ConfirmReadingTo != '') { + $result .= $this->headerLine('Disposition-Notification-To', '<' . $this->ConfirmReadingTo . '>'); + } + + // Add custom headers + foreach ($this->CustomHeader as $header) { + $result .= $this->headerLine( + trim($header[0]), + $this->encodeHeader(trim($header[1])) + ); + } + if (!$this->sign_key_file) { + $result .= $this->headerLine('MIME-Version', '1.0'); + $result .= $this->getMailMIME(); + } + + return $result; + } + + /** + * Get the message MIME type headers. + * @access public + * @return string + */ + public function getMailMIME() + { + $result = ''; + $ismultipart = true; + switch ($this->message_type) { + case 'inline': + $result .= $this->headerLine('Content-Type', 'multipart/related;'); + $result .= $this->textLine("\tboundary=\"" . $this->boundary[1] . '"'); + break; + case 'attach': + case 'inline_attach': + case 'alt_attach': + case 'alt_inline_attach': + $result .= $this->headerLine('Content-Type', 'multipart/mixed;'); + $result .= $this->textLine("\tboundary=\"" . $this->boundary[1] . '"'); + break; + case 'alt': + case 'alt_inline': + $result .= $this->headerLine('Content-Type', 'multipart/alternative;'); + $result .= $this->textLine("\tboundary=\"" . $this->boundary[1] . '"'); + break; + default: + // Catches case 'plain': and case '': + $result .= $this->textLine('Content-Type: ' . $this->ContentType . '; charset=' . $this->CharSet); + $ismultipart = false; + break; + } + // RFC1341 part 5 says 7bit is assumed if not specified + if ($this->Encoding != '7bit') { + // RFC 2045 section 6.4 says multipart MIME parts may only use 7bit, 8bit or binary CTE + if ($ismultipart) { + if ($this->Encoding == '8bit') { + $result .= $this->headerLine('Content-Transfer-Encoding', '8bit'); + } + // The only remaining alternatives are quoted-printable and base64, which are both 7bit compatible + } else { + $result .= $this->headerLine('Content-Transfer-Encoding', $this->Encoding); + } + } + + if ($this->Mailer != 'mail') { + $result .= $this->LE; + } + + return $result; + } + + /** + * Returns the whole MIME message. + * Includes complete headers and body. + * Only valid post preSend(). + * @see PHPMailer::preSend() + * @access public + * @return string + */ + public function getSentMIMEMessage() + { + return rtrim($this->MIMEHeader . $this->mailHeader, "\n\r") . self::CRLF . self::CRLF . $this->MIMEBody; + } + + /** + * Create unique ID + * @return string + */ + protected function generateId() { + return md5(uniqid(time())); + } + + /** + * Assemble the message body. + * Returns an empty string on failure. + * @access public + * @throws phpmailerException + * @return string The assembled message body + */ + public function createBody() + { + $body = ''; + //Create unique IDs and preset boundaries + $this->uniqueid = $this->generateId(); + $this->boundary[1] = 'b1_' . $this->uniqueid; + $this->boundary[2] = 'b2_' . $this->uniqueid; + $this->boundary[3] = 'b3_' . $this->uniqueid; + + if ($this->sign_key_file) { + $body .= $this->getMailMIME() . $this->LE; + } + + $this->setWordWrap(); + + $bodyEncoding = $this->Encoding; + $bodyCharSet = $this->CharSet; + //Can we do a 7-bit downgrade? + if ($bodyEncoding == '8bit' and !$this->has8bitChars($this->Body)) { + $bodyEncoding = '7bit'; + //All ISO 8859, Windows codepage and UTF-8 charsets are ascii compatible up to 7-bit + $bodyCharSet = 'us-ascii'; + } + //If lines are too long, and we're not already using an encoding that will shorten them, + //change to quoted-printable transfer encoding for the body part only + if ('base64' != $this->Encoding and self::hasLineLongerThanMax($this->Body)) { + $bodyEncoding = 'quoted-printable'; + } + + $altBodyEncoding = $this->Encoding; + $altBodyCharSet = $this->CharSet; + //Can we do a 7-bit downgrade? + if ($altBodyEncoding == '8bit' and !$this->has8bitChars($this->AltBody)) { + $altBodyEncoding = '7bit'; + //All ISO 8859, Windows codepage and UTF-8 charsets are ascii compatible up to 7-bit + $altBodyCharSet = 'us-ascii'; + } + //If lines are too long, and we're not already using an encoding that will shorten them, + //change to quoted-printable transfer encoding for the alt body part only + if ('base64' != $altBodyEncoding and self::hasLineLongerThanMax($this->AltBody)) { + $altBodyEncoding = 'quoted-printable'; + } + //Use this as a preamble in all multipart message types + $mimepre = "This is a multi-part message in MIME format." . $this->LE . $this->LE; + switch ($this->message_type) { + case 'inline': + $body .= $mimepre; + $body .= $this->getBoundary($this->boundary[1], $bodyCharSet, '', $bodyEncoding); + $body .= $this->encodeString($this->Body, $bodyEncoding); + $body .= $this->LE . $this->LE; + $body .= $this->attachAll('inline', $this->boundary[1]); + break; + case 'attach': + $body .= $mimepre; + $body .= $this->getBoundary($this->boundary[1], $bodyCharSet, '', $bodyEncoding); + $body .= $this->encodeString($this->Body, $bodyEncoding); + $body .= $this->LE . $this->LE; + $body .= $this->attachAll('attachment', $this->boundary[1]); + break; + case 'inline_attach': + $body .= $mimepre; + $body .= $this->textLine('--' . $this->boundary[1]); + $body .= $this->headerLine('Content-Type', 'multipart/related;'); + $body .= $this->textLine("\tboundary=\"" . $this->boundary[2] . '"'); + $body .= $this->LE; + $body .= $this->getBoundary($this->boundary[2], $bodyCharSet, '', $bodyEncoding); + $body .= $this->encodeString($this->Body, $bodyEncoding); + $body .= $this->LE . $this->LE; + $body .= $this->attachAll('inline', $this->boundary[2]); + $body .= $this->LE; + $body .= $this->attachAll('attachment', $this->boundary[1]); + break; + case 'alt': + $body .= $mimepre; + $body .= $this->getBoundary($this->boundary[1], $altBodyCharSet, 'text/plain', $altBodyEncoding); + $body .= $this->encodeString($this->AltBody, $altBodyEncoding); + $body .= $this->LE . $this->LE; + $body .= $this->getBoundary($this->boundary[1], $bodyCharSet, 'text/html', $bodyEncoding); + $body .= $this->encodeString($this->Body, $bodyEncoding); + $body .= $this->LE . $this->LE; + if (!empty($this->Ical)) { + $body .= $this->getBoundary($this->boundary[1], '', 'text/calendar; method=REQUEST', ''); + $body .= $this->encodeString($this->Ical, $this->Encoding); + $body .= $this->LE . $this->LE; + } + $body .= $this->endBoundary($this->boundary[1]); + break; + case 'alt_inline': + $body .= $mimepre; + $body .= $this->getBoundary($this->boundary[1], $altBodyCharSet, 'text/plain', $altBodyEncoding); + $body .= $this->encodeString($this->AltBody, $altBodyEncoding); + $body .= $this->LE . $this->LE; + $body .= $this->textLine('--' . $this->boundary[1]); + $body .= $this->headerLine('Content-Type', 'multipart/related;'); + $body .= $this->textLine("\tboundary=\"" . $this->boundary[2] . '"'); + $body .= $this->LE; + $body .= $this->getBoundary($this->boundary[2], $bodyCharSet, 'text/html', $bodyEncoding); + $body .= $this->encodeString($this->Body, $bodyEncoding); + $body .= $this->LE . $this->LE; + $body .= $this->attachAll('inline', $this->boundary[2]); + $body .= $this->LE; + $body .= $this->endBoundary($this->boundary[1]); + break; + case 'alt_attach': + $body .= $mimepre; + $body .= $this->textLine('--' . $this->boundary[1]); + $body .= $this->headerLine('Content-Type', 'multipart/alternative;'); + $body .= $this->textLine("\tboundary=\"" . $this->boundary[2] . '"'); + $body .= $this->LE; + $body .= $this->getBoundary($this->boundary[2], $altBodyCharSet, 'text/plain', $altBodyEncoding); + $body .= $this->encodeString($this->AltBody, $altBodyEncoding); + $body .= $this->LE . $this->LE; + $body .= $this->getBoundary($this->boundary[2], $bodyCharSet, 'text/html', $bodyEncoding); + $body .= $this->encodeString($this->Body, $bodyEncoding); + $body .= $this->LE . $this->LE; + $body .= $this->endBoundary($this->boundary[2]); + $body .= $this->LE; + $body .= $this->attachAll('attachment', $this->boundary[1]); + break; + case 'alt_inline_attach': + $body .= $mimepre; + $body .= $this->textLine('--' . $this->boundary[1]); + $body .= $this->headerLine('Content-Type', 'multipart/alternative;'); + $body .= $this->textLine("\tboundary=\"" . $this->boundary[2] . '"'); + $body .= $this->LE; + $body .= $this->getBoundary($this->boundary[2], $altBodyCharSet, 'text/plain', $altBodyEncoding); + $body .= $this->encodeString($this->AltBody, $altBodyEncoding); + $body .= $this->LE . $this->LE; + $body .= $this->textLine('--' . $this->boundary[2]); + $body .= $this->headerLine('Content-Type', 'multipart/related;'); + $body .= $this->textLine("\tboundary=\"" . $this->boundary[3] . '"'); + $body .= $this->LE; + $body .= $this->getBoundary($this->boundary[3], $bodyCharSet, 'text/html', $bodyEncoding); + $body .= $this->encodeString($this->Body, $bodyEncoding); + $body .= $this->LE . $this->LE; + $body .= $this->attachAll('inline', $this->boundary[3]); + $body .= $this->LE; + $body .= $this->endBoundary($this->boundary[2]); + $body .= $this->LE; + $body .= $this->attachAll('attachment', $this->boundary[1]); + break; + default: + // Catch case 'plain' and case '', applies to simple `text/plain` and `text/html` body content types + //Reset the `Encoding` property in case we changed it for line length reasons + $this->Encoding = $bodyEncoding; + $body .= $this->encodeString($this->Body, $this->Encoding); + break; + } + + if ($this->isError()) { + $body = ''; + } elseif ($this->sign_key_file) { + try { + if (!defined('PKCS7_TEXT')) { + throw new phpmailerException($this->lang('extension_missing') . 'openssl'); + } + // @TODO would be nice to use php://temp streams here, but need to wrap for PHP < 5.1 + $file = tempnam(sys_get_temp_dir(), 'mail'); + if (false === file_put_contents($file, $body)) { + throw new phpmailerException($this->lang('signing') . ' Could not write temp file'); + } + $signed = tempnam(sys_get_temp_dir(), 'signed'); + //Workaround for PHP bug https://bugs.php.net/bug.php?id=69197 + if (empty($this->sign_extracerts_file)) { + $sign = @openssl_pkcs7_sign( + $file, + $signed, + 'file://' . realpath($this->sign_cert_file), + array('file://' . realpath($this->sign_key_file), $this->sign_key_pass), + null + ); + } else { + $sign = @openssl_pkcs7_sign( + $file, + $signed, + 'file://' . realpath($this->sign_cert_file), + array('file://' . realpath($this->sign_key_file), $this->sign_key_pass), + null, + PKCS7_DETACHED, + $this->sign_extracerts_file + ); + } + if ($sign) { + @unlink($file); + $body = file_get_contents($signed); + @unlink($signed); + //The message returned by openssl contains both headers and body, so need to split them up + $parts = explode("\n\n", $body, 2); + $this->MIMEHeader .= $parts[0] . $this->LE . $this->LE; + $body = $parts[1]; + } else { + @unlink($file); + @unlink($signed); + throw new phpmailerException($this->lang('signing') . openssl_error_string()); + } + } catch (phpmailerException $exc) { + $body = ''; + if ($this->exceptions) { + throw $exc; + } + } + } + return $body; + } + + /** + * Return the start of a message boundary. + * @access protected + * @param string $boundary + * @param string $charSet + * @param string $contentType + * @param string $encoding + * @return string + */ + protected function getBoundary($boundary, $charSet, $contentType, $encoding) + { + $result = ''; + if ($charSet == '') { + $charSet = $this->CharSet; + } + if ($contentType == '') { + $contentType = $this->ContentType; + } + if ($encoding == '') { + $encoding = $this->Encoding; + } + $result .= $this->textLine('--' . $boundary); + $result .= sprintf('Content-Type: %s; charset=%s', $contentType, $charSet); + $result .= $this->LE; + // RFC1341 part 5 says 7bit is assumed if not specified + if ($encoding != '7bit') { + $result .= $this->headerLine('Content-Transfer-Encoding', $encoding); + } + $result .= $this->LE; + + return $result; + } + + /** + * Return the end of a message boundary. + * @access protected + * @param string $boundary + * @return string + */ + protected function endBoundary($boundary) + { + return $this->LE . '--' . $boundary . '--' . $this->LE; + } + + /** + * Set the message type. + * PHPMailer only supports some preset message types, not arbitrary MIME structures. + * @access protected + * @return void + */ + protected function setMessageType() + { + $type = array(); + if ($this->alternativeExists()) { + $type[] = 'alt'; + } + if ($this->inlineImageExists()) { + $type[] = 'inline'; + } + if ($this->attachmentExists()) { + $type[] = 'attach'; + } + $this->message_type = implode('_', $type); + if ($this->message_type == '') { + //The 'plain' message_type refers to the message having a single body element, not that it is plain-text + $this->message_type = 'plain'; + } + } + + /** + * Format a header line. + * @access public + * @param string $name + * @param string $value + * @return string + */ + public function headerLine($name, $value) + { + return $name . ': ' . $value . $this->LE; + } + + /** + * Return a formatted mail line. + * @access public + * @param string $value + * @return string + */ + public function textLine($value) + { + return $value . $this->LE; + } + + /** + * Add an attachment from a path on the filesystem. + * Never use a user-supplied path to a file! + * Returns false if the file could not be found or read. + * Explicitly *does not* support passing URLs; PHPMailer is not an HTTP client. + * If you need to do that, fetch the resource yourself and pass it in via a local file or string. + * @param string $path Path to the attachment. + * @param string $name Overrides the attachment name. + * @param string $encoding File encoding (see $Encoding). + * @param string $type File extension (MIME) type. + * @param string $disposition Disposition to use + * @throws phpmailerException + * @return boolean + */ + public function addAttachment($path, $name = '', $encoding = 'base64', $type = '', $disposition = 'attachment') + { + try { + if (!self::isPermittedPath($path) or !@is_file($path)) { + throw new phpmailerException($this->lang('file_access') . $path, self::STOP_CONTINUE); + } + + // If a MIME type is not specified, try to work it out from the file name + if ($type == '') { + $type = self::filenameToType($path); + } + + $filename = basename($path); + if ($name == '') { + $name = $filename; + } + + $this->attachment[] = array( + 0 => $path, + 1 => $filename, + 2 => $name, + 3 => $encoding, + 4 => $type, + 5 => false, // isStringAttachment + 6 => $disposition, + 7 => 0 + ); + + } catch (phpmailerException $exc) { + $this->setError($exc->getMessage()); + $this->edebug($exc->getMessage()); + if ($this->exceptions) { + throw $exc; + } + return false; + } + return true; + } + + /** + * Return the array of attachments. + * @return array + */ + public function getAttachments() + { + return $this->attachment; + } + + /** + * Attach all file, string, and binary attachments to the message. + * Returns an empty string on failure. + * @access protected + * @param string $disposition_type + * @param string $boundary + * @return string + */ + protected function attachAll($disposition_type, $boundary) + { + // Return text of body + $mime = array(); + $cidUniq = array(); + $incl = array(); + + // Add all attachments + foreach ($this->attachment as $attachment) { + // Check if it is a valid disposition_filter + if ($attachment[6] == $disposition_type) { + // Check for string attachment + $string = ''; + $path = ''; + $bString = $attachment[5]; + if ($bString) { + $string = $attachment[0]; + } else { + $path = $attachment[0]; + } + + $inclhash = md5(serialize($attachment)); + if (in_array($inclhash, $incl)) { + continue; + } + $incl[] = $inclhash; + $name = $attachment[2]; + $encoding = $attachment[3]; + $type = $attachment[4]; + $disposition = $attachment[6]; + $cid = $attachment[7]; + if ($disposition == 'inline' && array_key_exists($cid, $cidUniq)) { + continue; + } + $cidUniq[$cid] = true; + + $mime[] = sprintf('--%s%s', $boundary, $this->LE); + //Only include a filename property if we have one + if (!empty($name)) { + $mime[] = sprintf( + 'Content-Type: %s; name="%s"%s', + $type, + $this->encodeHeader($this->secureHeader($name)), + $this->LE + ); + } else { + $mime[] = sprintf( + 'Content-Type: %s%s', + $type, + $this->LE + ); + } + // RFC1341 part 5 says 7bit is assumed if not specified + if ($encoding != '7bit') { + $mime[] = sprintf('Content-Transfer-Encoding: %s%s', $encoding, $this->LE); + } + + if ($disposition == 'inline') { + $mime[] = sprintf('Content-ID: <%s>%s', $cid, $this->LE); + } + + // If a filename contains any of these chars, it should be quoted, + // but not otherwise: RFC2183 & RFC2045 5.1 + // Fixes a warning in IETF's msglint MIME checker + // Allow for bypassing the Content-Disposition header totally + if (!(empty($disposition))) { + $encoded_name = $this->encodeHeader($this->secureHeader($name)); + if (preg_match('/[ \(\)<>@,;:\\"\/\[\]\?=]/', $encoded_name)) { + $mime[] = sprintf( + 'Content-Disposition: %s; filename="%s"%s', + $disposition, + $encoded_name, + $this->LE . $this->LE + ); + } else { + if (!empty($encoded_name)) { + $mime[] = sprintf( + 'Content-Disposition: %s; filename=%s%s', + $disposition, + $encoded_name, + $this->LE . $this->LE + ); + } else { + $mime[] = sprintf( + 'Content-Disposition: %s%s', + $disposition, + $this->LE . $this->LE + ); + } + } + } else { + $mime[] = $this->LE; + } + + // Encode as string attachment + if ($bString) { + $mime[] = $this->encodeString($string, $encoding); + if ($this->isError()) { + return ''; + } + $mime[] = $this->LE . $this->LE; + } else { + $mime[] = $this->encodeFile($path, $encoding); + if ($this->isError()) { + return ''; + } + $mime[] = $this->LE . $this->LE; + } + } + } + + $mime[] = sprintf('--%s--%s', $boundary, $this->LE); + + return implode('', $mime); + } + + /** + * Encode a file attachment in requested format. + * Returns an empty string on failure. + * @param string $path The full path to the file + * @param string $encoding The encoding to use; one of 'base64', '7bit', '8bit', 'binary', 'quoted-printable' + * @throws phpmailerException + * @access protected + * @return string + */ + protected function encodeFile($path, $encoding = 'base64') + { + try { + if (!self::isPermittedPath($path) or !file_exists($path)) { + throw new phpmailerException($this->lang('file_open') . $path, self::STOP_CONTINUE); + } + $magic_quotes = get_magic_quotes_runtime(); + if ($magic_quotes) { + if (version_compare(PHP_VERSION, '5.3.0', '<')) { + set_magic_quotes_runtime(false); + } else { + //Doesn't exist in PHP 5.4, but we don't need to check because + //get_magic_quotes_runtime always returns false in 5.4+ + //so it will never get here + ini_set('magic_quotes_runtime', false); + } + } + $file_buffer = file_get_contents($path); + $file_buffer = $this->encodeString($file_buffer, $encoding); + if ($magic_quotes) { + if (version_compare(PHP_VERSION, '5.3.0', '<')) { + set_magic_quotes_runtime($magic_quotes); + } else { + ini_set('magic_quotes_runtime', $magic_quotes); + } + } + return $file_buffer; + } catch (Exception $exc) { + $this->setError($exc->getMessage()); + return ''; + } + } + + /** + * Encode a string in requested format. + * Returns an empty string on failure. + * @param string $str The text to encode + * @param string $encoding The encoding to use; one of 'base64', '7bit', '8bit', 'binary', 'quoted-printable' + * @access public + * @return string + */ + public function encodeString($str, $encoding = 'base64') + { + $encoded = ''; + switch (strtolower($encoding)) { + case 'base64': + $encoded = chunk_split(base64_encode($str), 76, $this->LE); + break; + case '7bit': + case '8bit': + $encoded = $this->fixEOL($str); + // Make sure it ends with a line break + if (substr($encoded, -(strlen($this->LE))) != $this->LE) { + $encoded .= $this->LE; + } + break; + case 'binary': + $encoded = $str; + break; + case 'quoted-printable': + $encoded = $this->encodeQP($str); + break; + default: + $this->setError($this->lang('encoding') . $encoding); + break; + } + return $encoded; + } + + /** + * Encode a header string optimally. + * Picks shortest of Q, B, quoted-printable or none. + * @access public + * @param string $str + * @param string $position + * @return string + */ + public function encodeHeader($str, $position = 'text') + { + $matchcount = 0; + switch (strtolower($position)) { + case 'phrase': + if (!preg_match('/[\200-\377]/', $str)) { + // Can't use addslashes as we don't know the value of magic_quotes_sybase + $encoded = addcslashes($str, "\0..\37\177\\\""); + if (($str == $encoded) && !preg_match('/[^A-Za-z0-9!#$%&\'*+\/=?^_`{|}~ -]/', $str)) { + return ($encoded); + } else { + return ("\"$encoded\""); + } + } + $matchcount = preg_match_all('/[^\040\041\043-\133\135-\176]/', $str, $matches); + break; + /** @noinspection PhpMissingBreakStatementInspection */ + case 'comment': + $matchcount = preg_match_all('/[()"]/', $str, $matches); + // Intentional fall-through + case 'text': + default: + $matchcount += preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $str, $matches); + break; + } + + //There are no chars that need encoding + if ($matchcount == 0) { + return ($str); + } + + $maxlen = 75 - 7 - strlen($this->CharSet); + // Try to select the encoding which should produce the shortest output + if ($matchcount > strlen($str) / 3) { + // More than a third of the content will need encoding, so B encoding will be most efficient + $encoding = 'B'; + if (function_exists('mb_strlen') && $this->hasMultiBytes($str)) { + // Use a custom function which correctly encodes and wraps long + // multibyte strings without breaking lines within a character + $encoded = $this->base64EncodeWrapMB($str, "\n"); + } else { + $encoded = base64_encode($str); + $maxlen -= $maxlen % 4; + $encoded = trim(chunk_split($encoded, $maxlen, "\n")); + } + } else { + $encoding = 'Q'; + $encoded = $this->encodeQ($str, $position); + $encoded = $this->wrapText($encoded, $maxlen, true); + $encoded = str_replace('=' . self::CRLF, "\n", trim($encoded)); + } + + $encoded = preg_replace('/^(.*)$/m', ' =?' . $this->CharSet . "?$encoding?\\1?=", $encoded); + $encoded = trim(str_replace("\n", $this->LE, $encoded)); + + return $encoded; + } + + /** + * Check if a string contains multi-byte characters. + * @access public + * @param string $str multi-byte text to wrap encode + * @return boolean + */ + public function hasMultiBytes($str) + { + if (function_exists('mb_strlen')) { + return (strlen($str) > mb_strlen($str, $this->CharSet)); + } else { // Assume no multibytes (we can't handle without mbstring functions anyway) + return false; + } + } + + /** + * Does a string contain any 8-bit chars (in any charset)? + * @param string $text + * @return boolean + */ + public function has8bitChars($text) + { + return (boolean)preg_match('/[\x80-\xFF]/', $text); + } + + /** + * Encode and wrap long multibyte strings for mail headers + * without breaking lines within a character. + * Adapted from a function by paravoid + * @link http://www.php.net/manual/en/function.mb-encode-mimeheader.php#60283 + * @access public + * @param string $str multi-byte text to wrap encode + * @param string $linebreak string to use as linefeed/end-of-line + * @return string + */ + public function base64EncodeWrapMB($str, $linebreak = null) + { + $start = '=?' . $this->CharSet . '?B?'; + $end = '?='; + $encoded = ''; + if ($linebreak === null) { + $linebreak = $this->LE; + } + + $mb_length = mb_strlen($str, $this->CharSet); + // Each line must have length <= 75, including $start and $end + $length = 75 - strlen($start) - strlen($end); + // Average multi-byte ratio + $ratio = $mb_length / strlen($str); + // Base64 has a 4:3 ratio + $avgLength = floor($length * $ratio * .75); + + for ($i = 0; $i < $mb_length; $i += $offset) { + $lookBack = 0; + do { + $offset = $avgLength - $lookBack; + $chunk = mb_substr($str, $i, $offset, $this->CharSet); + $chunk = base64_encode($chunk); + $lookBack++; + } while (strlen($chunk) > $length); + $encoded .= $chunk . $linebreak; + } + + // Chomp the last linefeed + $encoded = substr($encoded, 0, -strlen($linebreak)); + return $encoded; + } + + /** + * Encode a string in quoted-printable format. + * According to RFC2045 section 6.7. + * @access public + * @param string $string The text to encode + * @param integer $line_max Number of chars allowed on a line before wrapping + * @return string + * @link http://www.php.net/manual/en/function.quoted-printable-decode.php#89417 Adapted from this comment + */ + public function encodeQP($string, $line_max = 76) + { + // Use native function if it's available (>= PHP5.3) + if (function_exists('quoted_printable_encode')) { + return quoted_printable_encode($string); + } + // Fall back to a pure PHP implementation + $string = str_replace( + array('%20', '%0D%0A.', '%0D%0A', '%'), + array(' ', "\r\n=2E", "\r\n", '='), + rawurlencode($string) + ); + return preg_replace('/[^\r\n]{' . ($line_max - 3) . '}[^=\r\n]{2}/', "$0=\r\n", $string); + } + + /** + * Backward compatibility wrapper for an old QP encoding function that was removed. + * @see PHPMailer::encodeQP() + * @access public + * @param string $string + * @param integer $line_max + * @param boolean $space_conv + * @return string + * @deprecated Use encodeQP instead. + */ + public function encodeQPphp( + $string, + $line_max = 76, + /** @noinspection PhpUnusedParameterInspection */ $space_conv = false + ) { + return $this->encodeQP($string, $line_max); + } + + /** + * Encode a string using Q encoding. + * @link http://tools.ietf.org/html/rfc2047 + * @param string $str the text to encode + * @param string $position Where the text is going to be used, see the RFC for what that means + * @access public + * @return string + */ + public function encodeQ($str, $position = 'text') + { + // There should not be any EOL in the string + $pattern = ''; + $encoded = str_replace(array("\r", "\n"), '', $str); + switch (strtolower($position)) { + case 'phrase': + // RFC 2047 section 5.3 + $pattern = '^A-Za-z0-9!*+\/ -'; + break; + /** @noinspection PhpMissingBreakStatementInspection */ + case 'comment': + // RFC 2047 section 5.2 + $pattern = '\(\)"'; + // intentional fall-through + // for this reason we build the $pattern without including delimiters and [] + case 'text': + default: + // RFC 2047 section 5.1 + // Replace every high ascii, control, =, ? and _ characters + $pattern = '\000-\011\013\014\016-\037\075\077\137\177-\377' . $pattern; + break; + } + $matches = array(); + if (preg_match_all("/[{$pattern}]/", $encoded, $matches)) { + // If the string contains an '=', make sure it's the first thing we replace + // so as to avoid double-encoding + $eqkey = array_search('=', $matches[0]); + if (false !== $eqkey) { + unset($matches[0][$eqkey]); + array_unshift($matches[0], '='); + } + foreach (array_unique($matches[0]) as $char) { + $encoded = str_replace($char, '=' . sprintf('%02X', ord($char)), $encoded); + } + } + // Replace every spaces to _ (more readable than =20) + return str_replace(' ', '_', $encoded); + } + + /** + * Add a string or binary attachment (non-filesystem). + * This method can be used to attach ascii or binary data, + * such as a BLOB record from a database. + * @param string $string String attachment data. + * @param string $filename Name of the attachment. + * @param string $encoding File encoding (see $Encoding). + * @param string $type File extension (MIME) type. + * @param string $disposition Disposition to use + * @return void + */ + public function addStringAttachment( + $string, + $filename, + $encoding = 'base64', + $type = '', + $disposition = 'attachment' + ) { + // If a MIME type is not specified, try to work it out from the file name + if ($type == '') { + $type = self::filenameToType($filename); + } + // Append to $attachment array + $this->attachment[] = array( + 0 => $string, + 1 => $filename, + 2 => basename($filename), + 3 => $encoding, + 4 => $type, + 5 => true, // isStringAttachment + 6 => $disposition, + 7 => 0 + ); + } + + /** + * Add an embedded (inline) attachment from a file. + * This can include images, sounds, and just about any other document type. + * These differ from 'regular' attachments in that they are intended to be + * displayed inline with the message, not just attached for download. + * This is used in HTML messages that embed the images + * the HTML refers to using the $cid value. + * Never use a user-supplied path to a file! + * @param string $path Path to the attachment. + * @param string $cid Content ID of the attachment; Use this to reference + * the content when using an embedded image in HTML. + * @param string $name Overrides the attachment name. + * @param string $encoding File encoding (see $Encoding). + * @param string $type File MIME type. + * @param string $disposition Disposition to use + * @return boolean True on successfully adding an attachment + */ + public function addEmbeddedImage($path, $cid, $name = '', $encoding = 'base64', $type = '', $disposition = 'inline') + { + if (!self::isPermittedPath($path) or !@is_file($path)) { + $this->setError($this->lang('file_access') . $path); + return false; + } + + // If a MIME type is not specified, try to work it out from the file name + if ($type == '') { + $type = self::filenameToType($path); + } + + $filename = basename($path); + if ($name == '') { + $name = $filename; + } + + // Append to $attachment array + $this->attachment[] = array( + 0 => $path, + 1 => $filename, + 2 => $name, + 3 => $encoding, + 4 => $type, + 5 => false, // isStringAttachment + 6 => $disposition, + 7 => $cid + ); + return true; + } + + /** + * Add an embedded stringified attachment. + * This can include images, sounds, and just about any other document type. + * Be sure to set the $type to an image type for images: + * JPEG images use 'image/jpeg', GIF uses 'image/gif', PNG uses 'image/png'. + * @param string $string The attachment binary data. + * @param string $cid Content ID of the attachment; Use this to reference + * the content when using an embedded image in HTML. + * @param string $name + * @param string $encoding File encoding (see $Encoding). + * @param string $type MIME type. + * @param string $disposition Disposition to use + * @return boolean True on successfully adding an attachment + */ + public function addStringEmbeddedImage( + $string, + $cid, + $name = '', + $encoding = 'base64', + $type = '', + $disposition = 'inline' + ) { + // If a MIME type is not specified, try to work it out from the name + if ($type == '' and !empty($name)) { + $type = self::filenameToType($name); + } + + // Append to $attachment array + $this->attachment[] = array( + 0 => $string, + 1 => $name, + 2 => $name, + 3 => $encoding, + 4 => $type, + 5 => true, // isStringAttachment + 6 => $disposition, + 7 => $cid + ); + return true; + } + + /** + * Check if an inline attachment is present. + * @access public + * @return boolean + */ + public function inlineImageExists() + { + foreach ($this->attachment as $attachment) { + if ($attachment[6] == 'inline') { + return true; + } + } + return false; + } + + /** + * Check if an attachment (non-inline) is present. + * @return boolean + */ + public function attachmentExists() + { + foreach ($this->attachment as $attachment) { + if ($attachment[6] == 'attachment') { + return true; + } + } + return false; + } + + /** + * Check if this message has an alternative body set. + * @return boolean + */ + public function alternativeExists() + { + return !empty($this->AltBody); + } + + /** + * Clear queued addresses of given kind. + * @access protected + * @param string $kind 'to', 'cc', or 'bcc' + * @return void + */ + public function clearQueuedAddresses($kind) + { + $RecipientsQueue = $this->RecipientsQueue; + foreach ($RecipientsQueue as $address => $params) { + if ($params[0] == $kind) { + unset($this->RecipientsQueue[$address]); + } + } + } + + /** + * Clear all To recipients. + * @return void + */ + public function clearAddresses() + { + foreach ($this->to as $to) { + unset($this->all_recipients[strtolower($to[0])]); + } + $this->to = array(); + $this->clearQueuedAddresses('to'); + } + + /** + * Clear all CC recipients. + * @return void + */ + public function clearCCs() + { + foreach ($this->cc as $cc) { + unset($this->all_recipients[strtolower($cc[0])]); + } + $this->cc = array(); + $this->clearQueuedAddresses('cc'); + } + + /** + * Clear all BCC recipients. + * @return void + */ + public function clearBCCs() + { + foreach ($this->bcc as $bcc) { + unset($this->all_recipients[strtolower($bcc[0])]); + } + $this->bcc = array(); + $this->clearQueuedAddresses('bcc'); + } + + /** + * Clear all ReplyTo recipients. + * @return void + */ + public function clearReplyTos() + { + $this->ReplyTo = array(); + $this->ReplyToQueue = array(); + } + + /** + * Clear all recipient types. + * @return void + */ + public function clearAllRecipients() + { + $this->to = array(); + $this->cc = array(); + $this->bcc = array(); + $this->all_recipients = array(); + $this->RecipientsQueue = array(); + } + + /** + * Clear all filesystem, string, and binary attachments. + * @return void + */ + public function clearAttachments() + { + $this->attachment = array(); + } + + /** + * Clear all custom headers. + * @return void + */ + public function clearCustomHeaders() + { + $this->CustomHeader = array(); + } + + /** + * Add an error message to the error container. + * @access protected + * @param string $msg + * @return void + */ + protected function setError($msg) + { + $this->error_count++; + if ($this->Mailer == 'smtp' and !is_null($this->smtp)) { + $lasterror = $this->smtp->getError(); + if (!empty($lasterror['error'])) { + $msg .= $this->lang('smtp_error') . $lasterror['error']; + if (!empty($lasterror['detail'])) { + $msg .= ' Detail: '. $lasterror['detail']; + } + if (!empty($lasterror['smtp_code'])) { + $msg .= ' SMTP code: ' . $lasterror['smtp_code']; + } + if (!empty($lasterror['smtp_code_ex'])) { + $msg .= ' Additional SMTP info: ' . $lasterror['smtp_code_ex']; + } + } + } + $this->ErrorInfo = $msg; + } + + /** + * Return an RFC 822 formatted date. + * @access public + * @return string + * @static + */ + public static function rfcDate() + { + // Set the time zone to whatever the default is to avoid 500 errors + // Will default to UTC if it's not set properly in php.ini + date_default_timezone_set(@date_default_timezone_get()); + return date('D, j M Y H:i:s O'); + } + + /** + * Get the server hostname. + * Returns 'localhost.localdomain' if unknown. + * @access protected + * @return string + */ + protected function serverHostname() + { + $result = 'localhost.localdomain'; + if (!empty($this->Hostname)) { + $result = $this->Hostname; + } elseif (isset($_SERVER) and array_key_exists('SERVER_NAME', $_SERVER) and !empty($_SERVER['SERVER_NAME'])) { + $result = $_SERVER['SERVER_NAME']; + } elseif (function_exists('gethostname') && gethostname() !== false) { + $result = gethostname(); + } elseif (php_uname('n') !== false) { + $result = php_uname('n'); + } + return $result; + } + + /** + * Get an error message in the current language. + * @access protected + * @param string $key + * @return string + */ + protected function lang($key) + { + if (count($this->language) < 1) { + $this->setLanguage('en'); // set the default language + } + + if (array_key_exists($key, $this->language)) { + if ($key == 'smtp_connect_failed') { + //Include a link to troubleshooting docs on SMTP connection failure + //this is by far the biggest cause of support questions + //but it's usually not PHPMailer's fault. + return $this->language[$key] . ' https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting'; + } + return $this->language[$key]; + } else { + //Return the key as a fallback + return $key; + } + } + + /** + * Check if an error occurred. + * @access public + * @return boolean True if an error did occur. + */ + public function isError() + { + return ($this->error_count > 0); + } + + /** + * Ensure consistent line endings in a string. + * Changes every end of line from CRLF, CR or LF to $this->LE. + * @access public + * @param string $str String to fixEOL + * @return string + */ + public function fixEOL($str) + { + // Normalise to \n + $nstr = str_replace(array("\r\n", "\r"), "\n", $str); + // Now convert LE as needed + if ($this->LE !== "\n") { + $nstr = str_replace("\n", $this->LE, $nstr); + } + return $nstr; + } + + /** + * Add a custom header. + * $name value can be overloaded to contain + * both header name and value (name:value) + * @access public + * @param string $name Custom header name + * @param string $value Header value + * @return void + */ + public function addCustomHeader($name, $value = null) + { + if ($value === null) { + // Value passed in as name:value + $this->CustomHeader[] = explode(':', $name, 2); + } else { + $this->CustomHeader[] = array($name, $value); + } + } + + /** + * Returns all custom headers. + * @return array + */ + public function getCustomHeaders() + { + return $this->CustomHeader; + } + + /** + * Create a message body from an HTML string. + * Automatically inlines images and creates a plain-text version by converting the HTML, + * overwriting any existing values in Body and AltBody. + * Do not source $message content from user input! + * $basedir is prepended when handling relative URLs, e.g. and must not be empty + * will look for an image file in $basedir/images/a.png and convert it to inline. + * If you don't provide a $basedir, relative paths will be left untouched (and thus probably break in email) + * If you don't want to apply these transformations to your HTML, just set Body and AltBody directly. + * @access public + * @param string $message HTML message string + * @param string $basedir Absolute path to a base directory to prepend to relative paths to images + * @param boolean|callable $advanced Whether to use the internal HTML to text converter + * or your own custom converter @see PHPMailer::html2text() + * @return string $message The transformed message Body + */ + public function msgHTML($message, $basedir = '', $advanced = false) + { + preg_match_all('/(src|background)=["\'](.*)["\']/Ui', $message, $images); + if (array_key_exists(2, $images)) { + if (strlen($basedir) > 1 && substr($basedir, -1) != '/') { + // Ensure $basedir has a trailing / + $basedir .= '/'; + } + foreach ($images[2] as $imgindex => $url) { + // Convert data URIs into embedded images + if (preg_match('#^data:(image[^;,]*)(;base64)?,#', $url, $match)) { + $data = substr($url, strpos($url, ',')); + if ($match[2]) { + $data = base64_decode($data); + } else { + $data = rawurldecode($data); + } + $cid = md5($url) . '@phpmailer.0'; // RFC2392 S 2 + if ($this->addStringEmbeddedImage($data, $cid, 'embed' . $imgindex, 'base64', $match[1])) { + $message = str_replace( + $images[0][$imgindex], + $images[1][$imgindex] . '="cid:' . $cid . '"', + $message + ); + } + continue; + } + if ( + // Only process relative URLs if a basedir is provided (i.e. no absolute local paths) + !empty($basedir) + // Ignore URLs containing parent dir traversal (..) + && (strpos($url, '..') === false) + // Do not change urls that are already inline images + && substr($url, 0, 4) !== 'cid:' + // Do not change absolute URLs, including anonymous protocol + && !preg_match('#^[a-z][a-z0-9+.-]*:?//#i', $url) + ) { + $filename = basename($url); + $directory = dirname($url); + if ($directory == '.') { + $directory = ''; + } + $cid = md5($url) . '@phpmailer.0'; // RFC2392 S 2 + if (strlen($directory) > 1 && substr($directory, -1) != '/') { + $directory .= '/'; + } + if ($this->addEmbeddedImage( + $basedir . $directory . $filename, + $cid, + $filename, + 'base64', + self::_mime_types((string)self::mb_pathinfo($filename, PATHINFO_EXTENSION)) + ) + ) { + $message = preg_replace( + '/' . $images[1][$imgindex] . '=["\']' . preg_quote($url, '/') . '["\']/Ui', + $images[1][$imgindex] . '="cid:' . $cid . '"', + $message + ); + } + } + } + } + $this->isHTML(true); + // Convert all message body line breaks to CRLF, makes quoted-printable encoding work much better + $this->Body = $this->normalizeBreaks($message); + $this->AltBody = $this->normalizeBreaks($this->html2text($message, $advanced)); + if (!$this->alternativeExists()) { + $this->AltBody = 'To view this email message, open it in a program that understands HTML!' . + self::CRLF . self::CRLF; + } + return $this->Body; + } + + /** + * Convert an HTML string into plain text. + * This is used by msgHTML(). + * Note - older versions of this function used a bundled advanced converter + * which was been removed for license reasons in #232. + * Example usage: + * + * // Use default conversion + * $plain = $mail->html2text($html); + * // Use your own custom converter + * $plain = $mail->html2text($html, function($html) { + * $converter = new MyHtml2text($html); + * return $converter->get_text(); + * }); + * + * @param string $html The HTML text to convert + * @param boolean|callable $advanced Any boolean value to use the internal converter, + * or provide your own callable for custom conversion. + * @return string + */ + public function html2text($html, $advanced = false) + { + if (is_callable($advanced)) { + return call_user_func($advanced, $html); + } + return html_entity_decode( + trim(strip_tags(preg_replace('/<(head|title|style|script)[^>]*>.*?<\/\\1>/si', '', $html))), + ENT_QUOTES, + $this->CharSet + ); + } + + /** + * Get the MIME type for a file extension. + * @param string $ext File extension + * @access public + * @return string MIME type of file. + * @static + */ + public static function _mime_types($ext = '') + { + $mimes = array( + 'xl' => 'application/excel', + 'js' => 'application/javascript', + 'hqx' => 'application/mac-binhex40', + 'cpt' => 'application/mac-compactpro', + 'bin' => 'application/macbinary', + 'doc' => 'application/msword', + 'word' => 'application/msword', + 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', + 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template', + 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', + 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', + 'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide', + 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', + 'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12', + 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12', + 'class' => 'application/octet-stream', + 'dll' => 'application/octet-stream', + 'dms' => 'application/octet-stream', + 'exe' => 'application/octet-stream', + 'lha' => 'application/octet-stream', + 'lzh' => 'application/octet-stream', + 'psd' => 'application/octet-stream', + 'sea' => 'application/octet-stream', + 'so' => 'application/octet-stream', + 'oda' => 'application/oda', + 'pdf' => 'application/pdf', + 'ai' => 'application/postscript', + 'eps' => 'application/postscript', + 'ps' => 'application/postscript', + 'smi' => 'application/smil', + 'smil' => 'application/smil', + 'mif' => 'application/vnd.mif', + 'xls' => 'application/vnd.ms-excel', + 'ppt' => 'application/vnd.ms-powerpoint', + 'wbxml' => 'application/vnd.wap.wbxml', + 'wmlc' => 'application/vnd.wap.wmlc', + 'dcr' => 'application/x-director', + 'dir' => 'application/x-director', + 'dxr' => 'application/x-director', + 'dvi' => 'application/x-dvi', + 'gtar' => 'application/x-gtar', + 'php3' => 'application/x-httpd-php', + 'php4' => 'application/x-httpd-php', + 'php' => 'application/x-httpd-php', + 'phtml' => 'application/x-httpd-php', + 'phps' => 'application/x-httpd-php-source', + 'swf' => 'application/x-shockwave-flash', + 'sit' => 'application/x-stuffit', + 'tar' => 'application/x-tar', + 'tgz' => 'application/x-tar', + 'xht' => 'application/xhtml+xml', + 'xhtml' => 'application/xhtml+xml', + 'zip' => 'application/zip', + 'mid' => 'audio/midi', + 'midi' => 'audio/midi', + 'mp2' => 'audio/mpeg', + 'mp3' => 'audio/mpeg', + 'mpga' => 'audio/mpeg', + 'aif' => 'audio/x-aiff', + 'aifc' => 'audio/x-aiff', + 'aiff' => 'audio/x-aiff', + 'ram' => 'audio/x-pn-realaudio', + 'rm' => 'audio/x-pn-realaudio', + 'rpm' => 'audio/x-pn-realaudio-plugin', + 'ra' => 'audio/x-realaudio', + 'wav' => 'audio/x-wav', + 'bmp' => 'image/bmp', + 'gif' => 'image/gif', + 'jpeg' => 'image/jpeg', + 'jpe' => 'image/jpeg', + 'jpg' => 'image/jpeg', + 'png' => 'image/png', + 'tiff' => 'image/tiff', + 'tif' => 'image/tiff', + 'eml' => 'message/rfc822', + 'css' => 'text/css', + 'html' => 'text/html', + 'htm' => 'text/html', + 'shtml' => 'text/html', + 'log' => 'text/plain', + 'text' => 'text/plain', + 'txt' => 'text/plain', + 'rtx' => 'text/richtext', + 'rtf' => 'text/rtf', + 'vcf' => 'text/vcard', + 'vcard' => 'text/vcard', + 'xml' => 'text/xml', + 'xsl' => 'text/xml', + 'mpeg' => 'video/mpeg', + 'mpe' => 'video/mpeg', + 'mpg' => 'video/mpeg', + 'mov' => 'video/quicktime', + 'qt' => 'video/quicktime', + 'rv' => 'video/vnd.rn-realvideo', + 'avi' => 'video/x-msvideo', + 'movie' => 'video/x-sgi-movie' + ); + if (array_key_exists(strtolower($ext), $mimes)) { + return $mimes[strtolower($ext)]; + } + return 'application/octet-stream'; + } + + /** + * Map a file name to a MIME type. + * Defaults to 'application/octet-stream', i.e.. arbitrary binary data. + * @param string $filename A file name or full path, does not need to exist as a file + * @return string + * @static + */ + public static function filenameToType($filename) + { + // In case the path is a URL, strip any query string before getting extension + $qpos = strpos($filename, '?'); + if (false !== $qpos) { + $filename = substr($filename, 0, $qpos); + } + $pathinfo = self::mb_pathinfo($filename); + return self::_mime_types($pathinfo['extension']); + } + + /** + * Multi-byte-safe pathinfo replacement. + * Drop-in replacement for pathinfo(), but multibyte-safe, cross-platform-safe, old-version-safe. + * Works similarly to the one in PHP >= 5.2.0 + * @link http://www.php.net/manual/en/function.pathinfo.php#107461 + * @param string $path A filename or path, does not need to exist as a file + * @param integer|string $options Either a PATHINFO_* constant, + * or a string name to return only the specified piece, allows 'filename' to work on PHP < 5.2 + * @return string|array + * @static + */ + public static function mb_pathinfo($path, $options = null) + { + $ret = array('dirname' => '', 'basename' => '', 'extension' => '', 'filename' => ''); + $pathinfo = array(); + if (preg_match('%^(.*?)[\\\\/]*(([^/\\\\]*?)(\.([^\.\\\\/]+?)|))[\\\\/\.]*$%im', $path, $pathinfo)) { + if (array_key_exists(1, $pathinfo)) { + $ret['dirname'] = $pathinfo[1]; + } + if (array_key_exists(2, $pathinfo)) { + $ret['basename'] = $pathinfo[2]; + } + if (array_key_exists(5, $pathinfo)) { + $ret['extension'] = $pathinfo[5]; + } + if (array_key_exists(3, $pathinfo)) { + $ret['filename'] = $pathinfo[3]; + } + } + switch ($options) { + case PATHINFO_DIRNAME: + case 'dirname': + return $ret['dirname']; + case PATHINFO_BASENAME: + case 'basename': + return $ret['basename']; + case PATHINFO_EXTENSION: + case 'extension': + return $ret['extension']; + case PATHINFO_FILENAME: + case 'filename': + return $ret['filename']; + default: + return $ret; + } + } + + /** + * Set or reset instance properties. + * You should avoid this function - it's more verbose, less efficient, more error-prone and + * harder to debug than setting properties directly. + * Usage Example: + * `$mail->set('SMTPSecure', 'tls');` + * is the same as: + * `$mail->SMTPSecure = 'tls';` + * @access public + * @param string $name The property name to set + * @param mixed $value The value to set the property to + * @return boolean + * @TODO Should this not be using the __set() magic function? + */ + public function set($name, $value = '') + { + if (property_exists($this, $name)) { + $this->$name = $value; + return true; + } else { + $this->setError($this->lang('variable_set') . $name); + return false; + } + } + + /** + * Strip newlines to prevent header injection. + * @access public + * @param string $str + * @return string + */ + public function secureHeader($str) + { + return trim(str_replace(array("\r", "\n"), '', $str)); + } + + /** + * Normalize line breaks in a string. + * Converts UNIX LF, Mac CR and Windows CRLF line breaks into a single line break format. + * Defaults to CRLF (for message bodies) and preserves consecutive breaks. + * @param string $text + * @param string $breaktype What kind of line break to use, defaults to CRLF + * @return string + * @access public + * @static + */ + public static function normalizeBreaks($text, $breaktype = "\r\n") + { + return preg_replace('/(\r\n|\r|\n)/ms', $breaktype, $text); + } + + /** + * Set the public and private key files and password for S/MIME signing. + * @access public + * @param string $cert_filename + * @param string $key_filename + * @param string $key_pass Password for private key + * @param string $extracerts_filename Optional path to chain certificate + */ + public function sign($cert_filename, $key_filename, $key_pass, $extracerts_filename = '') + { + $this->sign_cert_file = $cert_filename; + $this->sign_key_file = $key_filename; + $this->sign_key_pass = $key_pass; + $this->sign_extracerts_file = $extracerts_filename; + } + + /** + * Quoted-Printable-encode a DKIM header. + * @access public + * @param string $txt + * @return string + */ + public function DKIM_QP($txt) + { + $line = ''; + for ($i = 0; $i < strlen($txt); $i++) { + $ord = ord($txt[$i]); + if (((0x21 <= $ord) && ($ord <= 0x3A)) || $ord == 0x3C || ((0x3E <= $ord) && ($ord <= 0x7E))) { + $line .= $txt[$i]; + } else { + $line .= '=' . sprintf('%02X', $ord); + } + } + return $line; + } + + /** + * Generate a DKIM signature. + * @access public + * @param string $signHeader + * @throws phpmailerException + * @return string The DKIM signature value + */ + public function DKIM_Sign($signHeader) + { + if (!defined('PKCS7_TEXT')) { + if ($this->exceptions) { + throw new phpmailerException($this->lang('extension_missing') . 'openssl'); + } + return ''; + } + $privKeyStr = !empty($this->DKIM_private_string) ? $this->DKIM_private_string : file_get_contents($this->DKIM_private); + if ('' != $this->DKIM_passphrase) { + $privKey = openssl_pkey_get_private($privKeyStr, $this->DKIM_passphrase); + } else { + $privKey = openssl_pkey_get_private($privKeyStr); + } + //Workaround for missing digest algorithms in old PHP & OpenSSL versions + //@link http://stackoverflow.com/a/11117338/333340 + if (version_compare(PHP_VERSION, '5.3.0') >= 0 and + in_array('sha256WithRSAEncryption', openssl_get_md_methods(true))) { + if (openssl_sign($signHeader, $signature, $privKey, 'sha256WithRSAEncryption')) { + openssl_pkey_free($privKey); + return base64_encode($signature); + } + } else { + $pinfo = openssl_pkey_get_details($privKey); + $hash = hash('sha256', $signHeader); + //'Magic' constant for SHA256 from RFC3447 + //@link https://tools.ietf.org/html/rfc3447#page-43 + $t = '3031300d060960864801650304020105000420' . $hash; + $pslen = $pinfo['bits'] / 8 - (strlen($t) / 2 + 3); + $eb = pack('H*', '0001' . str_repeat('FF', $pslen) . '00' . $t); + + if (openssl_private_encrypt($eb, $signature, $privKey, OPENSSL_NO_PADDING)) { + openssl_pkey_free($privKey); + return base64_encode($signature); + } + } + openssl_pkey_free($privKey); + return ''; + } + + /** + * Generate a DKIM canonicalization header. + * @access public + * @param string $signHeader Header + * @return string + */ + public function DKIM_HeaderC($signHeader) + { + $signHeader = preg_replace('/\r\n\s+/', ' ', $signHeader); + $lines = explode("\r\n", $signHeader); + foreach ($lines as $key => $line) { + list($heading, $value) = explode(':', $line, 2); + $heading = strtolower($heading); + $value = preg_replace('/\s{2,}/', ' ', $value); // Compress useless spaces + $lines[$key] = $heading . ':' . trim($value); // Don't forget to remove WSP around the value + } + $signHeader = implode("\r\n", $lines); + return $signHeader; + } + + /** + * Generate a DKIM canonicalization body. + * @access public + * @param string $body Message Body + * @return string + */ + public function DKIM_BodyC($body) + { + if ($body == '') { + return "\r\n"; + } + // stabilize line endings + $body = str_replace("\r\n", "\n", $body); + $body = str_replace("\n", "\r\n", $body); + // END stabilize line endings + while (substr($body, strlen($body) - 4, 4) == "\r\n\r\n") { + $body = substr($body, 0, strlen($body) - 2); + } + return $body; + } + + /** + * Create the DKIM header and body in a new message header. + * @access public + * @param string $headers_line Header lines + * @param string $subject Subject + * @param string $body Body + * @return string + */ + public function DKIM_Add($headers_line, $subject, $body) + { + $DKIMsignatureType = 'rsa-sha256'; // Signature & hash algorithms + $DKIMcanonicalization = 'relaxed/simple'; // Canonicalization of header/body + $DKIMquery = 'dns/txt'; // Query method + $DKIMtime = time(); // Signature Timestamp = seconds since 00:00:00 - Jan 1, 1970 (UTC time zone) + $subject_header = "Subject: $subject"; + $headers = explode($this->LE, $headers_line); + $from_header = ''; + $to_header = ''; + $date_header = ''; + $current = ''; + foreach ($headers as $header) { + if (strpos($header, 'From:') === 0) { + $from_header = $header; + $current = 'from_header'; + } elseif (strpos($header, 'To:') === 0) { + $to_header = $header; + $current = 'to_header'; + } elseif (strpos($header, 'Date:') === 0) { + $date_header = $header; + $current = 'date_header'; + } else { + if (!empty($$current) && strpos($header, ' =?') === 0) { + $$current .= $header; + } else { + $current = ''; + } + } + } + $from = str_replace('|', '=7C', $this->DKIM_QP($from_header)); + $to = str_replace('|', '=7C', $this->DKIM_QP($to_header)); + $date = str_replace('|', '=7C', $this->DKIM_QP($date_header)); + $subject = str_replace( + '|', + '=7C', + $this->DKIM_QP($subject_header) + ); // Copied header fields (dkim-quoted-printable) + $body = $this->DKIM_BodyC($body); + $DKIMlen = strlen($body); // Length of body + $DKIMb64 = base64_encode(pack('H*', hash('sha256', $body))); // Base64 of packed binary SHA-256 hash of body + if ('' == $this->DKIM_identity) { + $ident = ''; + } else { + $ident = ' i=' . $this->DKIM_identity . ';'; + } + $dkimhdrs = 'DKIM-Signature: v=1; a=' . + $DKIMsignatureType . '; q=' . + $DKIMquery . '; l=' . + $DKIMlen . '; s=' . + $this->DKIM_selector . + ";\r\n" . + "\tt=" . $DKIMtime . '; c=' . $DKIMcanonicalization . ";\r\n" . + "\th=From:To:Date:Subject;\r\n" . + "\td=" . $this->DKIM_domain . ';' . $ident . "\r\n" . + "\tz=$from\r\n" . + "\t|$to\r\n" . + "\t|$date\r\n" . + "\t|$subject;\r\n" . + "\tbh=" . $DKIMb64 . ";\r\n" . + "\tb="; + $toSign = $this->DKIM_HeaderC( + $from_header . "\r\n" . + $to_header . "\r\n" . + $date_header . "\r\n" . + $subject_header . "\r\n" . + $dkimhdrs + ); + $signed = $this->DKIM_Sign($toSign); + return $dkimhdrs . $signed . "\r\n"; + } + + /** + * Detect if a string contains a line longer than the maximum line length allowed. + * @param string $str + * @return boolean + * @static + */ + public static function hasLineLongerThanMax($str) + { + //+2 to include CRLF line break for a 1000 total + return (boolean)preg_match('/^(.{'.(self::MAX_LINE_LENGTH + 2).',})/m', $str); + } + + /** + * Allows for public read access to 'to' property. + * @note: Before the send() call, queued addresses (i.e. with IDN) are not yet included. + * @access public + * @return array + */ + public function getToAddresses() + { + return $this->to; + } + + /** + * Allows for public read access to 'cc' property. + * @note: Before the send() call, queued addresses (i.e. with IDN) are not yet included. + * @access public + * @return array + */ + public function getCcAddresses() + { + return $this->cc; + } + + /** + * Allows for public read access to 'bcc' property. + * @note: Before the send() call, queued addresses (i.e. with IDN) are not yet included. + * @access public + * @return array + */ + public function getBccAddresses() + { + return $this->bcc; + } + + /** + * Allows for public read access to 'ReplyTo' property. + * @note: Before the send() call, queued addresses (i.e. with IDN) are not yet included. + * @access public + * @return array + */ + public function getReplyToAddresses() + { + return $this->ReplyTo; + } + + /** + * Allows for public read access to 'all_recipients' property. + * @note: Before the send() call, queued addresses (i.e. with IDN) are not yet included. + * @access public + * @return array + */ + public function getAllRecipientAddresses() + { + return $this->all_recipients; + } + + /** + * Perform a callback. + * @param boolean $isSent + * @param array $to + * @param array $cc + * @param array $bcc + * @param string $subject + * @param string $body + * @param string $from + */ + protected function doCallback($isSent, $to, $cc, $bcc, $subject, $body, $from) + { + if (!empty($this->action_function) && is_callable($this->action_function)) { + $params = array($isSent, $to, $cc, $bcc, $subject, $body, $from); + call_user_func_array($this->action_function, $params); + } + } +} + +/** + * PHPMailer exception handler + * @package PHPMailer + */ +class phpmailerException extends \Exception +{ + /** + * Prettify error message output + * @return string + */ + public function errorMessage() + { + $errorMsg = '' . htmlspecialchars($this->getMessage()) . "
\n"; + return $errorMsg; + } +} diff --git a/lib/vendor/PHPMailer/class.webmailoauth.php b/lib/vendor/PHPMailer/class.webmailoauth.php new file mode 100644 index 0000000..80bf6c6 --- /dev/null +++ b/lib/vendor/PHPMailer/class.webmailoauth.php @@ -0,0 +1,198 @@ + + * @author Jim Jagielski (jimjag) + * @author Andy Prevost (codeworxtech) + * @author Brent R. Matzelle (original founder) + * @copyright 2012 - 2014 Marcus Bointon + * @copyright 2010 - 2012 Jim Jagielski + * @copyright 2004 - 2009 Andy Prevost + * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License + * @note This program is distributed in the hope that it will be useful - WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + */ +namespace Frody\Util; + +/** + * PHPMailerOAuth - PHPMailer subclass adding OAuth support. + * @package PHPMailer + * @author @sherryl4george + * @author Marcus Bointon (@Synchro) + */ +class PHPMailerOAuth extends PHPMailer +{ + /** + * The OAuth user's email address + * @var string + */ + public $oauthUserEmail = ''; + + /** + * The OAuth refresh token + * @var string + */ + public $oauthRefreshToken = ''; + + /** + * The OAuth client ID + * @var string + */ + public $oauthClientId = ''; + + /** + * The OAuth client secret + * @var string + */ + public $oauthClientSecret = ''; + + /** + * An instance of the PHPMailerOAuthGoogle class. + * @var PHPMailerOAuthGoogle + * @access protected + */ + protected $oauth = null; + + /** + * Get a PHPMailerOAuthGoogle instance to use. + * @return PHPMailerOAuthGoogle + */ + public function getOAUTHInstance() + { + if (!is_object($this->oauth)) { + $this->oauth = new PHPMailerOAuthGoogle( + $this->oauthUserEmail, + $this->oauthClientSecret, + $this->oauthClientId, + $this->oauthRefreshToken + ); + } + return $this->oauth; + } + + /** + * Initiate a connection to an SMTP server. + * Overrides the original smtpConnect method to add support for OAuth. + * @param array $options An array of options compatible with stream_context_create() + * @uses SMTP + * @access public + * @return bool + * @throws phpmailerException + */ + public function smtpConnect($options = array()) + { + if (is_null($this->smtp)) { + $this->smtp = $this->getSMTPInstance(); + } + + if (is_null($this->oauth)) { + $this->oauth = $this->getOAUTHInstance(); + } + + // Already connected? + if ($this->smtp->connected()) { + return true; + } + + $this->smtp->setTimeout($this->Timeout); + $this->smtp->setDebugLevel($this->SMTPDebug); + $this->smtp->setDebugOutput($this->Debugoutput); + $this->smtp->setVerp($this->do_verp); + $hosts = explode(';', $this->Host); + $lastexception = null; + + foreach ($hosts as $hostentry) { + $hostinfo = array(); + if (!preg_match('/^((ssl|tls):\/\/)*([a-zA-Z0-9\.-]*):?([0-9]*)$/', trim($hostentry), $hostinfo)) { + // Not a valid host entry + continue; + } + // $hostinfo[2]: optional ssl or tls prefix + // $hostinfo[3]: the hostname + // $hostinfo[4]: optional port number + // The host string prefix can temporarily override the current setting for SMTPSecure + // If it's not specified, the default value is used + $prefix = ''; + $secure = $this->SMTPSecure; + $tls = ($this->SMTPSecure == 'tls'); + if ('ssl' == $hostinfo[2] or ('' == $hostinfo[2] and 'ssl' == $this->SMTPSecure)) { + $prefix = 'ssl://'; + $tls = false; // Can't have SSL and TLS at the same time + $secure = 'ssl'; + } elseif ($hostinfo[2] == 'tls') { + $tls = true; + // tls doesn't use a prefix + $secure = 'tls'; + } + //Do we need the OpenSSL extension? + $sslext = defined('OPENSSL_ALGO_SHA1'); + if ('tls' === $secure or 'ssl' === $secure) { + //Check for an OpenSSL constant rather than using extension_loaded, which is sometimes disabled + if (!$sslext) { + throw new phpmailerException($this->lang('extension_missing').'openssl', self::STOP_CRITICAL); + } + } + $host = $hostinfo[3]; + $port = $this->Port; + $tport = (integer)$hostinfo[4]; + if ($tport > 0 and $tport < 65536) { + $port = $tport; + } + if ($this->smtp->connect($prefix . $host, $port, $this->Timeout, $options)) { + try { + if ($this->Helo) { + $hello = $this->Helo; + } else { + $hello = $this->serverHostname(); + } + $this->smtp->hello($hello); + //Automatically enable TLS encryption if: + // * it's not disabled + // * we have openssl extension + // * we are not already using SSL + // * the server offers STARTTLS + if ($this->SMTPAutoTLS and $sslext and $secure != 'ssl' and $this->smtp->getServerExt('STARTTLS')) { + $tls = true; + } + if ($tls) { + if (!$this->smtp->startTLS()) { + throw new phpmailerException($this->lang('connect_host')); + } + // We must resend HELO after tls negotiation + $this->smtp->hello($hello); + } + if ($this->SMTPAuth) { + if (!$this->smtp->authenticate( + $this->Username, + $this->Password, + $this->AuthType, + $this->Realm, + $this->Workstation, + $this->oauth + ) + ) { + throw new phpmailerException($this->lang('authenticate')); + } + } + return true; + } catch (phpmailerException $exc) { + $lastexception = $exc; + $this->edebug($exc->getMessage()); + // We must have connected, but then failed TLS or Auth, so close connection nicely + $this->smtp->quit(); + } + } + } + // If we get here, all connection attempts have failed, so close connection hard + $this->smtp->close(); + // As we've caught all exceptions, just report whatever the last one was + if ($this->exceptions and !is_null($lastexception)) { + throw $lastexception; + } + return false; + } +} diff --git a/lib/vendor/PHPMailer/class.webmailoauthgoogle.php b/lib/vendor/PHPMailer/class.webmailoauthgoogle.php new file mode 100644 index 0000000..315d871 --- /dev/null +++ b/lib/vendor/PHPMailer/class.webmailoauthgoogle.php @@ -0,0 +1,78 @@ + + * @author Jim Jagielski (jimjag) + * @author Andy Prevost (codeworxtech) + * @author Brent R. Matzelle (original founder) + * @copyright 2012 - 2014 Marcus Bointon + * @copyright 2010 - 2012 Jim Jagielski + * @copyright 2004 - 2009 Andy Prevost + * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License + * @note This program is distributed in the hope that it will be useful - WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + */ +namespace Frody\Util; + +/** + * PHPMailerOAuthGoogle - Wrapper for League OAuth2 Google provider. + * @package PHPMailer + * @author @sherryl4george + * @author Marcus Bointon (@Synchro) + * @link https://github.com/thephpleague/oauth2-client + */ +class PHPMailerOAuthGoogle +{ + private $oauthUserEmail = ''; + private $oauthRefreshToken = ''; + private $oauthClientId = ''; + private $oauthClientSecret = ''; + + /** + * @param string $UserEmail + * @param string $ClientSecret + * @param string $ClientId + * @param string $RefreshToken + */ + public function __construct( + $UserEmail, + $ClientSecret, + $ClientId, + $RefreshToken + ) { + $this->oauthClientId = $ClientId; + $this->oauthClientSecret = $ClientSecret; + $this->oauthRefreshToken = $RefreshToken; + $this->oauthUserEmail = $UserEmail; + } + + private function getProvider() + { + return new League\OAuth2\Client\Provider\Google(Array( + 'clientId' => $this->oauthClientId, + 'clientSecret' => $this->oauthClientSecret + )); + } + + private function getGrant() + { + return new \League\OAuth2\Client\Grant\RefreshToken(); + } + + private function getToken() + { + $provider = $this->getProvider(); + $grant = $this->getGrant(); + return $provider->getAccessToken($grant, Array('refresh_token' => $this->oauthRefreshToken)); + } + + public function getOauth64() + { + $token = $this->getToken(); + return base64_encode("user=" . $this->oauthUserEmail . "\001auth=Bearer " . $token . "\001\001"); + } +} diff --git a/lib/vendor/PHPMailer/class.webmailpop3.php b/lib/vendor/PHPMailer/class.webmailpop3.php new file mode 100644 index 0000000..e931138 --- /dev/null +++ b/lib/vendor/PHPMailer/class.webmailpop3.php @@ -0,0 +1,408 @@ + + * @author Jim Jagielski (jimjag) + * @author Andy Prevost (codeworxtech) + * @author Brent R. Matzelle (original founder) + * @copyright 2012 - 2014 Marcus Bointon + * @copyright 2010 - 2012 Jim Jagielski + * @copyright 2004 - 2009 Andy Prevost + * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License + * @note This program is distributed in the hope that it will be useful - WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + */ +namespace Frody\Util; + +/** + * PHPMailer POP-Before-SMTP Authentication Class. + * Specifically for PHPMailer to use for RFC1939 POP-before-SMTP authentication. + * Does not support APOP. + * @package PHPMailer + * @author Richard Davey (original author) + * @author Marcus Bointon (Synchro/coolbru) + * @author Jim Jagielski (jimjag) + * @author Andy Prevost (codeworxtech) + */ +class POP3 +{ + /** + * The POP3 PHPMailer Version number. + * @var string + * @access public + */ + public $Version = '5.2.27'; + + /** + * Default POP3 port number. + * @var integer + * @access public + */ + public $POP3_PORT = 110; + + /** + * Default timeout in seconds. + * @var integer + * @access public + */ + public $POP3_TIMEOUT = 30; + + /** + * POP3 Carriage Return + Line Feed. + * @var string + * @access public + * @deprecated Use the constant instead + */ + public $CRLF = "\r\n"; + + /** + * Debug display level. + * Options: 0 = no, 1+ = yes + * @var integer + * @access public + */ + public $do_debug = 0; + + /** + * POP3 mail server hostname. + * @var string + * @access public + */ + public $host; + + /** + * POP3 port number. + * @var integer + * @access public + */ + public $port; + + /** + * POP3 Timeout Value in seconds. + * @var integer + * @access public + */ + public $tval; + + /** + * POP3 username + * @var string + * @access public + */ + public $username; + + /** + * POP3 password. + * @var string + * @access public + */ + public $password; + + /** + * Resource handle for the POP3 connection socket. + * @var resource + * @access protected + */ + protected $pop_conn; + + /** + * Are we connected? + * @var boolean + * @access protected + */ + protected $connected = false; + + /** + * Error container. + * @var array + * @access protected + */ + protected $errors = array(); + + /** + * Line break constant + */ + const CRLF = "\r\n"; + + /** + * Simple static wrapper for all-in-one POP before SMTP + * @param $host + * @param integer|boolean $port The port number to connect to + * @param integer|boolean $timeout The timeout value + * @param string $username + * @param string $password + * @param integer $debug_level + * @return boolean + */ + public static function popBeforeSmtp( + $host, + $port = false, + $timeout = false, + $username = '', + $password = '', + $debug_level = 0 + ) { + $pop = new POP3; + return $pop->authorise($host, $port, $timeout, $username, $password, $debug_level); + } + + /** + * Authenticate with a POP3 server. + * A connect, login, disconnect sequence + * appropriate for POP-before SMTP authorisation. + * @access public + * @param string $host The hostname to connect to + * @param integer|boolean $port The port number to connect to + * @param integer|boolean $timeout The timeout value + * @param string $username + * @param string $password + * @param integer $debug_level + * @return boolean + */ + public function authorise($host, $port = false, $timeout = false, $username = '', $password = '', $debug_level = 0) + { + $this->host = $host; + // If no port value provided, use default + if (false === $port) { + $this->port = $this->POP3_PORT; + } else { + $this->port = (integer)$port; + } + // If no timeout value provided, use default + if (false === $timeout) { + $this->tval = $this->POP3_TIMEOUT; + } else { + $this->tval = (integer)$timeout; + } + $this->do_debug = $debug_level; + $this->username = $username; + $this->password = $password; + // Reset the error log + $this->errors = array(); + // connect + $result = $this->connect($this->host, $this->port, $this->tval); + if ($result) { + $login_result = $this->login($this->username, $this->password); + if ($login_result) { + $this->disconnect(); + return true; + } + } + // We need to disconnect regardless of whether the login succeeded + $this->disconnect(); + return false; + } + + /** + * Connect to a POP3 server. + * @access public + * @param string $host + * @param integer|boolean $port + * @param integer $tval + * @return boolean + */ + public function connect($host, $port = false, $tval = 30) + { + // Are we already connected? + if ($this->connected) { + return true; + } + + //On Windows this will raise a PHP Warning error if the hostname doesn't exist. + //Rather than suppress it with @fsockopen, capture it cleanly instead + set_error_handler(array($this, 'catchWarning')); + + if (false === $port) { + $port = $this->POP3_PORT; + } + + // connect to the POP3 server + $this->pop_conn = fsockopen( + $host, // POP3 Host + $port, // Port # + $errno, // Error Number + $errstr, // Error Message + $tval + ); // Timeout (seconds) + // Restore the error handler + restore_error_handler(); + + // Did we connect? + if (false === $this->pop_conn) { + // It would appear not... + $this->setError(array( + 'error' => "Failed to connect to server $host on port $port", + 'errno' => $errno, + 'errstr' => $errstr + )); + return false; + } + + // Increase the stream time-out + stream_set_timeout($this->pop_conn, $tval, 0); + + // Get the POP3 server response + $pop3_response = $this->getResponse(); + // Check for the +OK + if ($this->checkResponse($pop3_response)) { + // The connection is established and the POP3 server is talking + $this->connected = true; + return true; + } + return false; + } + + /** + * Log in to the POP3 server. + * Does not support APOP (RFC 2828, 4949). + * @access public + * @param string $username + * @param string $password + * @return boolean + */ + public function login($username = '', $password = '') + { + if (!$this->connected) { + $this->setError('Not connected to POP3 server'); + } + if (empty($username)) { + $username = $this->username; + } + if (empty($password)) { + $password = $this->password; + } + + // Send the Username + $this->sendString("USER $username" . self::CRLF); + $pop3_response = $this->getResponse(); + if ($this->checkResponse($pop3_response)) { + // Send the Password + $this->sendString("PASS $password" . self::CRLF); + $pop3_response = $this->getResponse(); + if ($this->checkResponse($pop3_response)) { + return true; + } + } + return false; + } + + /** + * Disconnect from the POP3 server. + * @access public + */ + public function disconnect() + { + $this->sendString('QUIT'); + //The QUIT command may cause the daemon to exit, which will kill our connection + //So ignore errors here + try { + @fclose($this->pop_conn); + } catch (Exception $e) { + //Do nothing + }; + } + + /** + * Get a response from the POP3 server. + * $size is the maximum number of bytes to retrieve + * @param integer $size + * @return string + * @access protected + */ + protected function getResponse($size = 128) + { + $response = fgets($this->pop_conn, $size); + if ($this->do_debug >= 1) { + echo "Server -> Client: $response"; + } + return $response; + } + + /** + * Send raw data to the POP3 server. + * @param string $string + * @return integer + * @access protected + */ + protected function sendString($string) + { + if ($this->pop_conn) { + if ($this->do_debug >= 2) { //Show client messages when debug >= 2 + echo "Client -> Server: $string"; + } + return fwrite($this->pop_conn, $string, strlen($string)); + } + return 0; + } + + /** + * Checks the POP3 server response. + * Looks for for +OK or -ERR. + * @param string $string + * @return boolean + * @access protected + */ + protected function checkResponse($string) + { + if (substr($string, 0, 3) !== '+OK') { + $this->setError(array( + 'error' => "Server reported an error: $string", + 'errno' => 0, + 'errstr' => '' + )); + return false; + } else { + return true; + } + } + + /** + * Add an error to the internal error store. + * Also display debug output if it's enabled. + * @param $error + * @access protected + */ + protected function setError($error) + { + $this->errors[] = $error; + if ($this->do_debug >= 1) { + echo '
';
+            foreach ($this->errors as $error) {
+                print_r($error);
+            }
+            echo '
'; + } + } + + /** + * Get an array of error messages, if any. + * @return array + */ + public function getErrors() + { + return $this->errors; + } + + /** + * POP3 connection error handler. + * @param integer $errno + * @param string $errstr + * @param string $errfile + * @param integer $errline + * @access protected + */ + protected function catchWarning($errno, $errstr, $errfile, $errline) + { + $this->setError(array( + 'error' => "Connecting to the POP3 server raised a PHP warning: ", + 'errno' => $errno, + 'errstr' => $errstr, + 'errfile' => $errfile, + 'errline' => $errline + )); + } +} diff --git a/lib/vendor/PHPMailer/class.webmailsmtp.php b/lib/vendor/PHPMailer/class.webmailsmtp.php new file mode 100644 index 0000000..091fd41 --- /dev/null +++ b/lib/vendor/PHPMailer/class.webmailsmtp.php @@ -0,0 +1,1277 @@ + + * @author Jim Jagielski (jimjag) + * @author Andy Prevost (codeworxtech) + * @author Brent R. Matzelle (original founder) + * @copyright 2014 Marcus Bointon + * @copyright 2010 - 2012 Jim Jagielski + * @copyright 2004 - 2009 Andy Prevost + * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License + * @note This program is distributed in the hope that it will be useful - WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + */ +namespace Frody\Util; + +/** + * PHPMailer RFC821 SMTP email transport class. + * Implements RFC 821 SMTP commands and provides some utility methods for sending mail to an SMTP server. + * @package PHPMailer + * @author Chris Ryan + * @author Marcus Bointon + */ +class SMTP +{ + /** + * The PHPMailer SMTP version number. + * @var string + */ + const VERSION = '5.2.27'; + + /** + * SMTP line break constant. + * @var string + */ + const CRLF = "\r\n"; + + /** + * The SMTP port to use if one is not specified. + * @var integer + */ + const DEFAULT_SMTP_PORT = 25; + + /** + * The maximum line length allowed by RFC 2822 section 2.1.1 + * @var integer + */ + const MAX_LINE_LENGTH = 998; + + /** + * Debug level for no output + */ + const DEBUG_OFF = 0; + + /** + * Debug level to show client -> server messages + */ + const DEBUG_CLIENT = 1; + + /** + * Debug level to show client -> server and server -> client messages + */ + const DEBUG_SERVER = 2; + + /** + * Debug level to show connection status, client -> server and server -> client messages + */ + const DEBUG_CONNECTION = 3; + + /** + * Debug level to show all messages + */ + const DEBUG_LOWLEVEL = 4; + + /** + * The PHPMailer SMTP Version number. + * @var string + * @deprecated Use the `VERSION` constant instead + * @see SMTP::VERSION + */ + public $Version = '5.2.27'; + + /** + * SMTP server port number. + * @var integer + * @deprecated This is only ever used as a default value, so use the `DEFAULT_SMTP_PORT` constant instead + * @see SMTP::DEFAULT_SMTP_PORT + */ + public $SMTP_PORT = 25; + + /** + * SMTP reply line ending. + * @var string + * @deprecated Use the `CRLF` constant instead + * @see SMTP::CRLF + */ + public $CRLF = "\r\n"; + + /** + * Debug output level. + * Options: + * * self::DEBUG_OFF (`0`) No debug output, default + * * self::DEBUG_CLIENT (`1`) Client commands + * * self::DEBUG_SERVER (`2`) Client commands and server responses + * * self::DEBUG_CONNECTION (`3`) As DEBUG_SERVER plus connection status + * * self::DEBUG_LOWLEVEL (`4`) Low-level data output, all messages + * @var integer + */ + public $do_debug = self::DEBUG_OFF; + + /** + * How to handle debug output. + * Options: + * * `echo` Output plain-text as-is, appropriate for CLI + * * `html` Output escaped, line breaks converted to `
`, appropriate for browser output + * * `error_log` Output to error log as configured in php.ini + * + * Alternatively, you can provide a callable expecting two params: a message string and the debug level: + * + * $smtp->Debugoutput = function($str, $level) {echo "debug level $level; message: $str";}; + * + * @var string|callable + */ + public $Debugoutput = 'echo'; + + /** + * Whether to use VERP. + * @link http://en.wikipedia.org/wiki/Variable_envelope_return_path + * @link http://www.postfix.org/VERP_README.html Info on VERP + * @var boolean + */ + public $do_verp = false; + + /** + * The timeout value for connection, in seconds. + * Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2 + * This needs to be quite high to function correctly with hosts using greetdelay as an anti-spam measure. + * @link http://tools.ietf.org/html/rfc2821#section-4.5.3.2 + * @var integer + */ + public $Timeout = 300; + + /** + * How long to wait for commands to complete, in seconds. + * Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2 + * @var integer + */ + public $Timelimit = 300; + + /** + * @var array Patterns to extract an SMTP transaction id from reply to a DATA command. + * The first capture group in each regex will be used as the ID. + */ + protected $smtp_transaction_id_patterns = array( + 'exim' => '/[0-9]{3} OK id=(.*)/', + 'sendmail' => '/[0-9]{3} 2.0.0 (.*) Message/', + 'postfix' => '/[0-9]{3} 2.0.0 Ok: queued as (.*)/' + ); + + /** + * @var string The last transaction ID issued in response to a DATA command, + * if one was detected + */ + protected $last_smtp_transaction_id; + + /** + * The socket for the server connection. + * @var resource + */ + protected $smtp_conn; + + /** + * Error information, if any, for the last SMTP command. + * @var array + */ + protected $error = array( + 'error' => '', + 'detail' => '', + 'smtp_code' => '', + 'smtp_code_ex' => '' + ); + + /** + * The reply the server sent to us for HELO. + * If null, no HELO string has yet been received. + * @var string|null + */ + protected $helo_rply = null; + + /** + * The set of SMTP extensions sent in reply to EHLO command. + * Indexes of the array are extension names. + * Value at index 'HELO' or 'EHLO' (according to command that was sent) + * represents the server name. In case of HELO it is the only element of the array. + * Other values can be boolean TRUE or an array containing extension options. + * If null, no HELO/EHLO string has yet been received. + * @var array|null + */ + protected $server_caps = null; + + /** + * The most recent reply received from the server. + * @var string + */ + protected $last_reply = ''; + + /** + * Output debugging info via a user-selected method. + * @see SMTP::$Debugoutput + * @see SMTP::$do_debug + * @param string $str Debug string to output + * @param integer $level The debug level of this message; see DEBUG_* constants + * @return void + */ + protected function edebug($str, $level = 0) + { + if ($level > $this->do_debug) { + return; + } + //Avoid clash with built-in function names + if (!in_array($this->Debugoutput, array('error_log', 'html', 'echo')) and is_callable($this->Debugoutput)) { + call_user_func($this->Debugoutput, $str, $level); + return; + } + switch ($this->Debugoutput) { + case 'error_log': + //Don't output, just log + error_log($str); + break; + case 'html': + //Cleans up output a bit for a better looking, HTML-safe output + echo gmdate('Y-m-d H:i:s') . ' ' . htmlentities( + preg_replace('/[\r\n]+/', '', $str), + ENT_QUOTES, + 'UTF-8' + ) . "
\n"; + break; + case 'echo': + default: + //Normalize line breaks + $str = preg_replace('/(\r\n|\r|\n)/ms', "\n", $str); + echo gmdate('Y-m-d H:i:s') . "\t" . str_replace( + "\n", + "\n \t ", + trim($str) + ) . "\n"; + } + } + + /** + * Connect to an SMTP server. + * @param string $host SMTP server IP or host name + * @param integer $port The port number to connect to + * @param integer $timeout How long to wait for the connection to open + * @param array $options An array of options for stream_context_create() + * @access public + * @return boolean + */ + public function connect($host, $port = null, $timeout = 30, $options = array()) + { + static $streamok; + //This is enabled by default since 5.0.0 but some providers disable it + //Check this once and cache the result + if (is_null($streamok)) { + $streamok = function_exists('stream_socket_client'); + } + // Clear errors to avoid confusion + $this->setError(''); + // Make sure we are __not__ connected + if ($this->connected()) { + // Already connected, generate error + $this->setError('Already connected to a server'); + return false; + } + if (empty($port)) { + $port = self::DEFAULT_SMTP_PORT; + } + // Connect to the SMTP server + $this->edebug( + "Connection: opening to $host:$port, timeout=$timeout, options=" . + var_export($options, true), + self::DEBUG_CONNECTION + ); + $errno = 0; + $errstr = ''; + if ($streamok) { + $socket_context = stream_context_create($options); + set_error_handler(array($this, 'errorHandler')); + $this->smtp_conn = stream_socket_client( + $host . ":" . $port, + $errno, + $errstr, + $timeout, + STREAM_CLIENT_CONNECT, + $socket_context + ); + restore_error_handler(); + } else { + //Fall back to fsockopen which should work in more places, but is missing some features + $this->edebug( + "Connection: stream_socket_client not available, falling back to fsockopen", + self::DEBUG_CONNECTION + ); + set_error_handler(array($this, 'errorHandler')); + $this->smtp_conn = fsockopen( + $host, + $port, + $errno, + $errstr, + $timeout + ); + restore_error_handler(); + } + // Verify we connected properly + if (!is_resource($this->smtp_conn)) { + $this->setError( + 'Failed to connect to server', + $errno, + $errstr + ); + $this->edebug( + 'SMTP ERROR: ' . $this->error['error'] + . ": $errstr ($errno)", + self::DEBUG_CLIENT + ); + return false; + } + $this->edebug('Connection: opened', self::DEBUG_CONNECTION); + // SMTP server can take longer to respond, give longer timeout for first read + // Windows does not have support for this timeout function + if (substr(PHP_OS, 0, 3) != 'WIN') { + $max = ini_get('max_execution_time'); + // Don't bother if unlimited + if ($max != 0 && $timeout > $max) { + @set_time_limit($timeout); + } + stream_set_timeout($this->smtp_conn, $timeout, 0); + } + // Get any announcement + $announce = $this->get_lines(); + $this->edebug('SERVER -> CLIENT: ' . $announce, self::DEBUG_SERVER); + return true; + } + + /** + * Initiate a TLS (encrypted) session. + * @access public + * @return boolean + */ + public function startTLS() + { + if (!$this->sendCommand('STARTTLS', 'STARTTLS', 220)) { + return false; + } + + //Allow the best TLS version(s) we can + $crypto_method = STREAM_CRYPTO_METHOD_TLS_CLIENT; + + //PHP 5.6.7 dropped inclusion of TLS 1.1 and 1.2 in STREAM_CRYPTO_METHOD_TLS_CLIENT + //so add them back in manually if we can + if (defined('STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT')) { + $crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT; + $crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT; + } + + // Begin encrypted connection + set_error_handler(array($this, 'errorHandler')); + $crypto_ok = stream_socket_enable_crypto( + $this->smtp_conn, + true, + $crypto_method + ); + restore_error_handler(); + return $crypto_ok; + } + + /** + * Perform SMTP authentication. + * Must be run after hello(). + * @see hello() + * @param string $username The user name + * @param string $password The password + * @param string $authtype The auth type (PLAIN, LOGIN, NTLM, CRAM-MD5, XOAUTH2) + * @param string $realm The auth realm for NTLM + * @param string $workstation The auth workstation for NTLM + * @param null|OAuth $OAuth An optional OAuth instance (@see PHPMailerOAuth) + * @return bool True if successfully authenticated.* @access public + */ + public function authenticate( + $username, + $password, + $authtype = null, + $realm = '', + $workstation = '', + $OAuth = null + ) { + if (!$this->server_caps) { + $this->setError('Authentication is not allowed before HELO/EHLO'); + return false; + } + + if (array_key_exists('EHLO', $this->server_caps)) { + // SMTP extensions are available; try to find a proper authentication method + if (!array_key_exists('AUTH', $this->server_caps)) { + $this->setError('Authentication is not allowed at this stage'); + // 'at this stage' means that auth may be allowed after the stage changes + // e.g. after STARTTLS + return false; + } + + self::edebug('Auth method requested: ' . ($authtype ? $authtype : 'UNKNOWN'), self::DEBUG_LOWLEVEL); + self::edebug( + 'Auth methods available on the server: ' . implode(',', $this->server_caps['AUTH']), + self::DEBUG_LOWLEVEL + ); + + if (empty($authtype)) { + foreach (array('CRAM-MD5', 'LOGIN', 'PLAIN', 'NTLM', 'XOAUTH2') as $method) { + if (in_array($method, $this->server_caps['AUTH'])) { + $authtype = $method; + break; + } + } + if (empty($authtype)) { + $this->setError('No supported authentication methods found'); + return false; + } + self::edebug('Auth method selected: ' . $authtype, self::DEBUG_LOWLEVEL); + } + + if (!in_array($authtype, $this->server_caps['AUTH'])) { + $this->setError("The requested authentication method \"$authtype\" is not supported by the server"); + return false; + } + } elseif (empty($authtype)) { + $authtype = 'LOGIN'; + } + switch ($authtype) { + case 'PLAIN': + // Start authentication + if (!$this->sendCommand('AUTH', 'AUTH PLAIN', 334)) { + return false; + } + // Send encoded username and password + if (!$this->sendCommand( + 'User & Password', + base64_encode("\0" . $username . "\0" . $password), + 235 + ) + ) { + return false; + } + break; + case 'LOGIN': + // Start authentication + if (!$this->sendCommand('AUTH', 'AUTH LOGIN', 334)) { + return false; + } + if (!$this->sendCommand("Username", base64_encode($username), 334)) { + return false; + } + if (!$this->sendCommand("Password", base64_encode($password), 235)) { + return false; + } + break; + case 'XOAUTH2': + //If the OAuth Instance is not set. Can be a case when PHPMailer is used + //instead of PHPMailerOAuth + if (is_null($OAuth)) { + return false; + } + $oauth = $OAuth->getOauth64(); + + // Start authentication + if (!$this->sendCommand('AUTH', 'AUTH XOAUTH2 ' . $oauth, 235)) { + return false; + } + break; + case 'NTLM': + /* + * ntlm_sasl_client.php + * Bundled with Permission + * + * How to telnet in windows: + * http://technet.microsoft.com/en-us/library/aa995718%28EXCHG.65%29.aspx + * PROTOCOL Docs http://curl.haxx.se/rfc/ntlm.html#ntlmSmtpAuthentication + */ + require_once 'extras/ntlm_sasl_client.php'; + $temp = new stdClass; + $ntlm_client = new ntlm_sasl_client_class; + //Check that functions are available + if (!$ntlm_client->initialize($temp)) { + $this->setError($temp->error); + $this->edebug( + 'You need to enable some modules in your php.ini file: ' + . $this->error['error'], + self::DEBUG_CLIENT + ); + return false; + } + //msg1 + $msg1 = $ntlm_client->typeMsg1($realm, $workstation); //msg1 + + if (!$this->sendCommand( + 'AUTH NTLM', + 'AUTH NTLM ' . base64_encode($msg1), + 334 + ) + ) { + return false; + } + //Though 0 based, there is a white space after the 3 digit number + //msg2 + $challenge = substr($this->last_reply, 3); + $challenge = base64_decode($challenge); + $ntlm_res = $ntlm_client->NTLMResponse( + substr($challenge, 24, 8), + $password + ); + //msg3 + $msg3 = $ntlm_client->typeMsg3( + $ntlm_res, + $username, + $realm, + $workstation + ); + // send encoded username + return $this->sendCommand('Username', base64_encode($msg3), 235); + case 'CRAM-MD5': + // Start authentication + if (!$this->sendCommand('AUTH CRAM-MD5', 'AUTH CRAM-MD5', 334)) { + return false; + } + // Get the challenge + $challenge = base64_decode(substr($this->last_reply, 4)); + + // Build the response + $response = $username . ' ' . $this->hmac($challenge, $password); + + // send encoded credentials + return $this->sendCommand('Username', base64_encode($response), 235); + default: + $this->setError("Authentication method \"$authtype\" is not supported"); + return false; + } + return true; + } + + /** + * Calculate an MD5 HMAC hash. + * Works like hash_hmac('md5', $data, $key) + * in case that function is not available + * @param string $data The data to hash + * @param string $key The key to hash with + * @access protected + * @return string + */ + protected function hmac($data, $key) + { + if (function_exists('hash_hmac')) { + return hash_hmac('md5', $data, $key); + } + + // The following borrowed from + // http://php.net/manual/en/function.mhash.php#27225 + + // RFC 2104 HMAC implementation for php. + // Creates an md5 HMAC. + // Eliminates the need to install mhash to compute a HMAC + // by Lance Rushing + + $bytelen = 64; // byte length for md5 + if (strlen($key) > $bytelen) { + $key = pack('H*', md5($key)); + } + $key = str_pad($key, $bytelen, chr(0x00)); + $ipad = str_pad('', $bytelen, chr(0x36)); + $opad = str_pad('', $bytelen, chr(0x5c)); + $k_ipad = $key ^ $ipad; + $k_opad = $key ^ $opad; + + return md5($k_opad . pack('H*', md5($k_ipad . $data))); + } + + /** + * Check connection state. + * @access public + * @return boolean True if connected. + */ + public function connected() + { + if (is_resource($this->smtp_conn)) { + $sock_status = stream_get_meta_data($this->smtp_conn); + if ($sock_status['eof']) { + // The socket is valid but we are not connected + $this->edebug( + 'SMTP NOTICE: EOF caught while checking if connected', + self::DEBUG_CLIENT + ); + $this->close(); + return false; + } + return true; // everything looks good + } + return false; + } + + /** + * Close the socket and clean up the state of the class. + * Don't use this function without first trying to use QUIT. + * @see quit() + * @access public + * @return void + */ + public function close() + { + $this->setError(''); + $this->server_caps = null; + $this->helo_rply = null; + if (is_resource($this->smtp_conn)) { + // close the connection and cleanup + fclose($this->smtp_conn); + $this->smtp_conn = null; //Makes for cleaner serialization + $this->edebug('Connection: closed', self::DEBUG_CONNECTION); + } + } + + /** + * Send an SMTP DATA command. + * Issues a data command and sends the msg_data to the server, + * finializing the mail transaction. $msg_data is the message + * that is to be send with the headers. Each header needs to be + * on a single line followed by a with the message headers + * and the message body being separated by and additional . + * Implements rfc 821: DATA + * @param string $msg_data Message data to send + * @access public + * @return boolean + */ + public function data($msg_data) + { + //This will use the standard timelimit + if (!$this->sendCommand('DATA', 'DATA', 354)) { + return false; + } + + /* The server is ready to accept data! + * According to rfc821 we should not send more than 1000 characters on a single line (including the CRLF) + * so we will break the data up into lines by \r and/or \n then if needed we will break each of those into + * smaller lines to fit within the limit. + * We will also look for lines that start with a '.' and prepend an additional '.'. + * NOTE: this does not count towards line-length limit. + */ + + // Normalize line breaks before exploding + $lines = explode("\n", str_replace(array("\r\n", "\r"), "\n", $msg_data)); + + /* To distinguish between a complete RFC822 message and a plain message body, we check if the first field + * of the first line (':' separated) does not contain a space then it _should_ be a header and we will + * process all lines before a blank line as headers. + */ + + $field = substr($lines[0], 0, strpos($lines[0], ':')); + $in_headers = false; + if (!empty($field) && strpos($field, ' ') === false) { + $in_headers = true; + } + + foreach ($lines as $line) { + $lines_out = array(); + if ($in_headers and $line == '') { + $in_headers = false; + } + //Break this line up into several smaller lines if it's too long + //Micro-optimisation: isset($str[$len]) is faster than (strlen($str) > $len), + while (isset($line[self::MAX_LINE_LENGTH])) { + //Working backwards, try to find a space within the last MAX_LINE_LENGTH chars of the line to break on + //so as to avoid breaking in the middle of a word + $pos = strrpos(substr($line, 0, self::MAX_LINE_LENGTH), ' '); + //Deliberately matches both false and 0 + if (!$pos) { + //No nice break found, add a hard break + $pos = self::MAX_LINE_LENGTH - 1; + $lines_out[] = substr($line, 0, $pos); + $line = substr($line, $pos); + } else { + //Break at the found point + $lines_out[] = substr($line, 0, $pos); + //Move along by the amount we dealt with + $line = substr($line, $pos + 1); + } + //If processing headers add a LWSP-char to the front of new line RFC822 section 3.1.1 + if ($in_headers) { + $line = "\t" . $line; + } + } + $lines_out[] = $line; + + //Send the lines to the server + foreach ($lines_out as $line_out) { + //RFC2821 section 4.5.2 + if (!empty($line_out) and $line_out[0] == '.') { + $line_out = '.' . $line_out; + } + $this->client_send($line_out . self::CRLF); + } + } + + //Message data has been sent, complete the command + //Increase timelimit for end of DATA command + $savetimelimit = $this->Timelimit; + $this->Timelimit = $this->Timelimit * 2; + $result = $this->sendCommand('DATA END', '.', 250); + $this->recordLastTransactionID(); + //Restore timelimit + $this->Timelimit = $savetimelimit; + return $result; + } + + /** + * Send an SMTP HELO or EHLO command. + * Used to identify the sending server to the receiving server. + * This makes sure that client and server are in a known state. + * Implements RFC 821: HELO + * and RFC 2821 EHLO. + * @param string $host The host name or IP to connect to + * @access public + * @return boolean + */ + public function hello($host = '') + { + //Try extended hello first (RFC 2821) + return (boolean)($this->sendHello('EHLO', $host) or $this->sendHello('HELO', $host)); + } + + /** + * Send an SMTP HELO or EHLO command. + * Low-level implementation used by hello() + * @see hello() + * @param string $hello The HELO string + * @param string $host The hostname to say we are + * @access protected + * @return boolean + */ + protected function sendHello($hello, $host) + { + $noerror = $this->sendCommand($hello, $hello . ' ' . $host, 250); + $this->helo_rply = $this->last_reply; + if ($noerror) { + $this->parseHelloFields($hello); + } else { + $this->server_caps = null; + } + return $noerror; + } + + /** + * Parse a reply to HELO/EHLO command to discover server extensions. + * In case of HELO, the only parameter that can be discovered is a server name. + * @access protected + * @param string $type - 'HELO' or 'EHLO' + */ + protected function parseHelloFields($type) + { + $this->server_caps = array(); + $lines = explode("\n", $this->helo_rply); + + foreach ($lines as $n => $s) { + //First 4 chars contain response code followed by - or space + $s = trim(substr($s, 4)); + if (empty($s)) { + continue; + } + $fields = explode(' ', $s); + if (!empty($fields)) { + if (!$n) { + $name = $type; + $fields = $fields[0]; + } else { + $name = array_shift($fields); + switch ($name) { + case 'SIZE': + $fields = ($fields ? $fields[0] : 0); + break; + case 'AUTH': + if (!is_array($fields)) { + $fields = array(); + } + break; + default: + $fields = true; + } + } + $this->server_caps[$name] = $fields; + } + } + } + + /** + * Send an SMTP MAIL command. + * Starts a mail transaction from the email address specified in + * $from. Returns true if successful or false otherwise. If True + * the mail transaction is started and then one or more recipient + * commands may be called followed by a data command. + * Implements rfc 821: MAIL FROM: + * @param string $from Source address of this message + * @access public + * @return boolean + */ + public function mail($from) + { + $useVerp = ($this->do_verp ? ' XVERP' : ''); + return $this->sendCommand( + 'MAIL FROM', + 'MAIL FROM:<' . $from . '>' . $useVerp, + 250 + ); + } + + /** + * Send an SMTP QUIT command. + * Closes the socket if there is no error or the $close_on_error argument is true. + * Implements from rfc 821: QUIT + * @param boolean $close_on_error Should the connection close if an error occurs? + * @access public + * @return boolean + */ + public function quit($close_on_error = true) + { + $noerror = $this->sendCommand('QUIT', 'QUIT', 221); + $err = $this->error; //Save any error + if ($noerror or $close_on_error) { + $this->close(); + $this->error = $err; //Restore any error from the quit command + } + return $noerror; + } + + /** + * Send an SMTP RCPT command. + * Sets the TO argument to $toaddr. + * Returns true if the recipient was accepted false if it was rejected. + * Implements from rfc 821: RCPT TO: + * @param string $address The address the message is being sent to + * @access public + * @return boolean + */ + public function recipient($address) + { + return $this->sendCommand( + 'RCPT TO', + 'RCPT TO:<' . $address . '>', + array(250, 251) + ); + } + + /** + * Send an SMTP RSET command. + * Abort any transaction that is currently in progress. + * Implements rfc 821: RSET + * @access public + * @return boolean True on success. + */ + public function reset() + { + return $this->sendCommand('RSET', 'RSET', 250); + } + + /** + * Send a command to an SMTP server and check its return code. + * @param string $command The command name - not sent to the server + * @param string $commandstring The actual command to send + * @param integer|array $expect One or more expected integer success codes + * @access protected + * @return boolean True on success. + */ + protected function sendCommand($command, $commandstring, $expect) + { + if (!$this->connected()) { + $this->setError("Called $command without being connected"); + return false; + } + //Reject line breaks in all commands + if (strpos($commandstring, "\n") !== false or strpos($commandstring, "\r") !== false) { + $this->setError("Command '$command' contained line breaks"); + return false; + } + $this->client_send($commandstring . self::CRLF); + + $this->last_reply = $this->get_lines(); + // Fetch SMTP code and possible error code explanation + $matches = array(); + if (preg_match("/^([0-9]{3})[ -](?:([0-9]\\.[0-9]\\.[0-9]) )?/", $this->last_reply, $matches)) { + $code = $matches[1]; + $code_ex = (count($matches) > 2 ? $matches[2] : null); + // Cut off error code from each response line + $detail = preg_replace( + "/{$code}[ -]" . + ($code_ex ? str_replace('.', '\\.', $code_ex) . ' ' : '') . "/m", + '', + $this->last_reply + ); + } else { + // Fall back to simple parsing if regex fails + $code = substr($this->last_reply, 0, 3); + $code_ex = null; + $detail = substr($this->last_reply, 4); + } + + $this->edebug('SERVER -> CLIENT: ' . $this->last_reply, self::DEBUG_SERVER); + + if (!in_array($code, (array)$expect)) { + $this->setError( + "$command command failed", + $detail, + $code, + $code_ex + ); + $this->edebug( + 'SMTP ERROR: ' . $this->error['error'] . ': ' . $this->last_reply, + self::DEBUG_CLIENT + ); + return false; + } + + $this->setError(''); + return true; + } + + /** + * Send an SMTP SAML command. + * Starts a mail transaction from the email address specified in $from. + * Returns true if successful or false otherwise. If True + * the mail transaction is started and then one or more recipient + * commands may be called followed by a data command. This command + * will send the message to the users terminal if they are logged + * in and send them an email. + * Implements rfc 821: SAML FROM: + * @param string $from The address the message is from + * @access public + * @return boolean + */ + public function sendAndMail($from) + { + return $this->sendCommand('SAML', "SAML FROM:$from", 250); + } + + /** + * Send an SMTP VRFY command. + * @param string $name The name to verify + * @access public + * @return boolean + */ + public function verify($name) + { + return $this->sendCommand('VRFY', "VRFY $name", array(250, 251)); + } + + /** + * Send an SMTP NOOP command. + * Used to keep keep-alives alive, doesn't actually do anything + * @access public + * @return boolean + */ + public function noop() + { + return $this->sendCommand('NOOP', 'NOOP', 250); + } + + /** + * Send an SMTP TURN command. + * This is an optional command for SMTP that this class does not support. + * This method is here to make the RFC821 Definition complete for this class + * and _may_ be implemented in future + * Implements from rfc 821: TURN + * @access public + * @return boolean + */ + public function turn() + { + $this->setError('The SMTP TURN command is not implemented'); + $this->edebug('SMTP NOTICE: ' . $this->error['error'], self::DEBUG_CLIENT); + return false; + } + + /** + * Send raw data to the server. + * @param string $data The data to send + * @access public + * @return integer|boolean The number of bytes sent to the server or false on error + */ + public function client_send($data) + { + $this->edebug("CLIENT -> SERVER: $data", self::DEBUG_CLIENT); + set_error_handler(array($this, 'errorHandler')); + $result = fwrite($this->smtp_conn, $data); + restore_error_handler(); + return $result; + } + + /** + * Get the latest error. + * @access public + * @return array + */ + public function getError() + { + return $this->error; + } + + /** + * Get SMTP extensions available on the server + * @access public + * @return array|null + */ + public function getServerExtList() + { + return $this->server_caps; + } + + /** + * A multipurpose method + * The method works in three ways, dependent on argument value and current state + * 1. HELO/EHLO was not sent - returns null and set up $this->error + * 2. HELO was sent + * $name = 'HELO': returns server name + * $name = 'EHLO': returns boolean false + * $name = any string: returns null and set up $this->error + * 3. EHLO was sent + * $name = 'HELO'|'EHLO': returns server name + * $name = any string: if extension $name exists, returns boolean True + * or its options. Otherwise returns boolean False + * In other words, one can use this method to detect 3 conditions: + * - null returned: handshake was not or we don't know about ext (refer to $this->error) + * - false returned: the requested feature exactly not exists + * - positive value returned: the requested feature exists + * @param string $name Name of SMTP extension or 'HELO'|'EHLO' + * @return mixed + */ + public function getServerExt($name) + { + if (!$this->server_caps) { + $this->setError('No HELO/EHLO was sent'); + return null; + } + + // the tight logic knot ;) + if (!array_key_exists($name, $this->server_caps)) { + if ($name == 'HELO') { + return $this->server_caps['EHLO']; + } + if ($name == 'EHLO' || array_key_exists('EHLO', $this->server_caps)) { + return false; + } + $this->setError('HELO handshake was used. Client knows nothing about server extensions'); + return null; + } + + return $this->server_caps[$name]; + } + + /** + * Get the last reply from the server. + * @access public + * @return string + */ + public function getLastReply() + { + return $this->last_reply; + } + + /** + * Read the SMTP server's response. + * Either before eof or socket timeout occurs on the operation. + * With SMTP we can tell if we have more lines to read if the + * 4th character is '-' symbol. If it is a space then we don't + * need to read anything else. + * @access protected + * @return string + */ + protected function get_lines() + { + // If the connection is bad, give up straight away + if (!is_resource($this->smtp_conn)) { + return ''; + } + $data = ''; + $endtime = 0; + stream_set_timeout($this->smtp_conn, $this->Timeout); + if ($this->Timelimit > 0) { + $endtime = time() + $this->Timelimit; + } + while (is_resource($this->smtp_conn) && !feof($this->smtp_conn)) { + $str = @fgets($this->smtp_conn, 515); + $this->edebug("SMTP -> get_lines(): \$data is \"$data\"", self::DEBUG_LOWLEVEL); + $this->edebug("SMTP -> get_lines(): \$str is \"$str\"", self::DEBUG_LOWLEVEL); + $data .= $str; + // If response is only 3 chars (not valid, but RFC5321 S4.2 says it must be handled), + // or 4th character is a space, we are done reading, break the loop, + // string array access is a micro-optimisation over strlen + if (!isset($str[3]) or (isset($str[3]) and $str[3] == ' ')) { + break; + } + // Timed-out? Log and break + $info = stream_get_meta_data($this->smtp_conn); + if ($info['timed_out']) { + $this->edebug( + 'SMTP -> get_lines(): timed-out (' . $this->Timeout . ' sec)', + self::DEBUG_LOWLEVEL + ); + break; + } + // Now check if reads took too long + if ($endtime and time() > $endtime) { + $this->edebug( + 'SMTP -> get_lines(): timelimit reached (' . + $this->Timelimit . ' sec)', + self::DEBUG_LOWLEVEL + ); + break; + } + } + return $data; + } + + /** + * Enable or disable VERP address generation. + * @param boolean $enabled + */ + public function setVerp($enabled = false) + { + $this->do_verp = $enabled; + } + + /** + * Get VERP address generation mode. + * @return boolean + */ + public function getVerp() + { + return $this->do_verp; + } + + /** + * Set error messages and codes. + * @param string $message The error message + * @param string $detail Further detail on the error + * @param string $smtp_code An associated SMTP error code + * @param string $smtp_code_ex Extended SMTP code + */ + protected function setError($message, $detail = '', $smtp_code = '', $smtp_code_ex = '') + { + $this->error = array( + 'error' => $message, + 'detail' => $detail, + 'smtp_code' => $smtp_code, + 'smtp_code_ex' => $smtp_code_ex + ); + } + + /** + * Set debug output method. + * @param string|callable $method The name of the mechanism to use for debugging output, or a callable to handle it. + */ + public function setDebugOutput($method = 'echo') + { + $this->Debugoutput = $method; + } + + /** + * Get debug output method. + * @return string + */ + public function getDebugOutput() + { + return $this->Debugoutput; + } + + /** + * Set debug output level. + * @param integer $level + */ + public function setDebugLevel($level = 0) + { + $this->do_debug = $level; + } + + /** + * Get debug output level. + * @return integer + */ + public function getDebugLevel() + { + return $this->do_debug; + } + + /** + * Set SMTP timeout. + * @param integer $timeout + */ + public function setTimeout($timeout = 0) + { + $this->Timeout = $timeout; + } + + /** + * Get SMTP timeout. + * @return integer + */ + public function getTimeout() + { + return $this->Timeout; + } + + /** + * Reports an error number and string. + * @param integer $errno The error number returned by PHP. + * @param string $errmsg The error message returned by PHP. + * @param string $errfile The file the error occurred in + * @param integer $errline The line number the error occurred on + */ + protected function errorHandler($errno, $errmsg, $errfile = '', $errline = 0) + { + $notice = 'Connection failed.'; + $this->setError( + $notice, + $errno, + $errmsg + ); + $this->edebug( + $notice . ' Error #' . $errno . ': ' . $errmsg . " [$errfile line $errline]", + self::DEBUG_CONNECTION + ); + } + + /** + * Extract and return the ID of the last SMTP transaction based on + * a list of patterns provided in SMTP::$smtp_transaction_id_patterns. + * Relies on the host providing the ID in response to a DATA command. + * If no reply has been received yet, it will return null. + * If no pattern was matched, it will return false. + * @return bool|null|string + */ + protected function recordLastTransactionID() + { + $reply = $this->getLastReply(); + + if (empty($reply)) { + $this->last_smtp_transaction_id = null; + } else { + $this->last_smtp_transaction_id = false; + foreach ($this->smtp_transaction_id_patterns as $smtp_transaction_id_pattern) { + if (preg_match($smtp_transaction_id_pattern, $reply, $matches)) { + $this->last_smtp_transaction_id = $matches[1]; + } + } + } + + return $this->last_smtp_transaction_id; + } + + /** + * Get the queue/transaction ID of the last SMTP transaction + * If no reply has been received yet, it will return null. + * If no pattern was matched, it will return false. + * @return bool|null|string + * @see recordLastTransactionID() + */ + public function getLastTransactionID() + { + return $this->last_smtp_transaction_id; + } +} diff --git a/lib/vendor/PHPMailer/composer.json b/lib/vendor/PHPMailer/composer.json new file mode 100644 index 0000000..b857fa8 --- /dev/null +++ b/lib/vendor/PHPMailer/composer.json @@ -0,0 +1,61 @@ +{ + "name": "phpmailer/phpmailer", + "type": "library", + "description": "PHPMailer is a full-featured email creation and transfer class for PHP", + "authors": [ + { + "name": "Marcus Bointon", + "email": "phpmailer@synchromedia.co.uk" + }, + { + "name": "Jim Jagielski", + "email": "jimjag@gmail.com" + }, + { + "name": "Andy Prevost", + "email": "codeworxtech@users.sourceforge.net" + }, + { + "name": "Brent R. Matzelle" + } + ], + "require": { + "ext-ctype": "*", + "php": ">=5.0.0" + }, + "require-dev": { + "doctrine/annotations": "1.2.*", + "jms/serializer": "0.16.*", + "phpdocumentor/phpdocumentor": "2.*", + "phpunit/phpunit": "4.8.*", + "symfony/debug": "2.8.*", + "symfony/filesystem": "2.8.*", + "symfony/translation": "2.8.*", + "symfony/yaml": "2.8.*", + "zendframework/zend-cache": "2.5.1", + "zendframework/zend-config": "2.5.1", + "zendframework/zend-eventmanager": "2.5.1", + "zendframework/zend-filter": "2.5.1", + "zendframework/zend-i18n": "2.5.1", + "zendframework/zend-json": "2.5.1", + "zendframework/zend-math": "2.5.1", + "zendframework/zend-serializer": "2.5.*", + "zendframework/zend-servicemanager": "2.5.*", + "zendframework/zend-stdlib": "2.5.1" + }, + "suggest": { + "league/oauth2-google": "Needed for Google XOAUTH2 authentication" + }, + "autoload": { + "classmap": [ + "class.phpmailer.php", + "class.phpmaileroauth.php", + "class.phpmaileroauthgoogle.php", + "class.smtp.php", + "class.pop3.php", + "extras/EasyPeasyICS.php", + "extras/ntlm_sasl_client.php" + ] + }, + "license": "LGPL-2.1" +} diff --git a/lib/vendor/PHPMailer/composer.lock b/lib/vendor/PHPMailer/composer.lock new file mode 100644 index 0000000..12ac7e4 --- /dev/null +++ b/lib/vendor/PHPMailer/composer.lock @@ -0,0 +1,3593 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "content-hash": "7e4b1bef833056eed0df39fad5399d7a", + "packages": [], + "packages-dev": [ + { + "name": "cilex/cilex", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/Cilex/Cilex.git", + "reference": "7acd965a609a56d0345e8b6071c261fbdb926cb5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Cilex/Cilex/zipball/7acd965a609a56d0345e8b6071c261fbdb926cb5", + "reference": "7acd965a609a56d0345e8b6071c261fbdb926cb5", + "shasum": "" + }, + "require": { + "cilex/console-service-provider": "1.*", + "php": ">=5.3.3", + "pimple/pimple": "~1.0", + "symfony/finder": "~2.1", + "symfony/process": "~2.1" + }, + "require-dev": { + "phpunit/phpunit": "3.7.*", + "symfony/validator": "~2.1" + }, + "suggest": { + "monolog/monolog": ">=1.0.0", + "symfony/validator": ">=1.0.0", + "symfony/yaml": ">=1.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-0": { + "Cilex": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "mike.vanriel@naenius.com" + } + ], + "description": "The PHP micro-framework for Command line tools based on the Symfony2 Components", + "homepage": "http://cilex.github.com", + "keywords": [ + "cli", + "microframework" + ], + "time": "2014-03-29T14:03:13+00:00" + }, + { + "name": "cilex/console-service-provider", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/Cilex/console-service-provider.git", + "reference": "25ee3d1875243d38e1a3448ff94bdf944f70d24e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Cilex/console-service-provider/zipball/25ee3d1875243d38e1a3448ff94bdf944f70d24e", + "reference": "25ee3d1875243d38e1a3448ff94bdf944f70d24e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "pimple/pimple": "1.*@dev", + "symfony/console": "~2.1" + }, + "require-dev": { + "cilex/cilex": "1.*@dev", + "silex/silex": "1.*@dev" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-0": { + "Cilex\\Provider\\Console": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Beau Simensen", + "email": "beau@dflydev.com", + "homepage": "http://beausimensen.com" + }, + { + "name": "Mike van Riel", + "email": "mike.vanriel@naenius.com" + } + ], + "description": "Console Service Provider", + "keywords": [ + "cilex", + "console", + "pimple", + "service-provider", + "silex" + ], + "time": "2012-12-19T10:50:58+00:00" + }, + { + "name": "doctrine/annotations", + "version": "v1.2.7", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/f25c8aab83e0c3e976fd7d19875f198ccf2f7535", + "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535", + "shasum": "" + }, + "require": { + "doctrine/lexer": "1.*", + "php": ">=5.3.2" + }, + "require-dev": { + "doctrine/cache": "1.*", + "phpunit/phpunit": "4.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Annotations\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Docblock Annotations Parser", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "annotations", + "docblock", + "parser" + ], + "time": "2015-08-31T12:32:49+00:00" + }, + { + "name": "doctrine/instantiator", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "shasum": "" + }, + "require": { + "php": ">=5.3,<8.0-DEV" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2015-06-14T21:17:01+00:00" + }, + { + "name": "doctrine/lexer", + "version": "v1.0.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Lexer\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "lexer", + "parser" + ], + "time": "2014-09-09T13:34:57+00:00" + }, + { + "name": "erusev/parsedown", + "version": "1.6.1", + "source": { + "type": "git", + "url": "https://github.com/erusev/parsedown.git", + "reference": "20ff8bbb57205368b4b42d094642a3e52dac85fb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/erusev/parsedown/zipball/20ff8bbb57205368b4b42d094642a3e52dac85fb", + "reference": "20ff8bbb57205368b4b42d094642a3e52dac85fb", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "Parsedown": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Emanuil Rusev", + "email": "hello@erusev.com", + "homepage": "http://erusev.com" + } + ], + "description": "Parser for Markdown.", + "homepage": "http://parsedown.org", + "keywords": [ + "markdown", + "parser" + ], + "time": "2016-11-02T15:56:58+00:00" + }, + { + "name": "herrera-io/json", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/kherge-php/json.git", + "reference": "60c696c9370a1e5136816ca557c17f82a6fa83f1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/kherge-php/json/zipball/60c696c9370a1e5136816ca557c17f82a6fa83f1", + "reference": "60c696c9370a1e5136816ca557c17f82a6fa83f1", + "shasum": "" + }, + "require": { + "ext-json": "*", + "justinrainbow/json-schema": ">=1.0,<2.0-dev", + "php": ">=5.3.3", + "seld/jsonlint": ">=1.0,<2.0-dev" + }, + "require-dev": { + "herrera-io/phpunit-test-case": "1.*", + "mikey179/vfsstream": "1.1.0", + "phpunit/phpunit": "3.7.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "files": [ + "src/lib/json_version.php" + ], + "psr-0": { + "Herrera\\Json": "src/lib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kevin Herrera", + "email": "kevin@herrera.io", + "homepage": "http://kevin.herrera.io/", + "role": "Developer" + } + ], + "description": "A library for simplifying JSON linting and validation.", + "homepage": "http://herrera-io.github.com/php-json", + "keywords": [ + "json", + "lint", + "schema", + "validate" + ], + "abandoned": "kherge/json", + "time": "2013-10-30T16:51:34+00:00" + }, + { + "name": "herrera-io/phar-update", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/kherge-abandoned/php-phar-update.git", + "reference": "00a79e1d5b8cf3c080a2e3becf1ddf7a7fea025b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/kherge-abandoned/php-phar-update/zipball/00a79e1d5b8cf3c080a2e3becf1ddf7a7fea025b", + "reference": "00a79e1d5b8cf3c080a2e3becf1ddf7a7fea025b", + "shasum": "" + }, + "require": { + "herrera-io/json": "1.*", + "kherge/version": "1.*", + "php": ">=5.3.3" + }, + "require-dev": { + "herrera-io/phpunit-test-case": "1.*", + "mikey179/vfsstream": "1.1.0", + "phpunit/phpunit": "3.7.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "files": [ + "src/lib/constants.php" + ], + "psr-0": { + "Herrera\\Phar\\Update": "src/lib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kevin Herrera", + "email": "kevin@herrera.io", + "homepage": "http://kevin.herrera.io/", + "role": "Developer" + } + ], + "description": "A library for self-updating Phars.", + "homepage": "http://herrera-io.github.com/php-phar-update", + "keywords": [ + "phar", + "update" + ], + "abandoned": true, + "time": "2013-10-30T17:23:01+00:00" + }, + { + "name": "jms/metadata", + "version": "1.6.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/metadata.git", + "reference": "6a06970a10e0a532fb52d3959547123b84a3b3ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/metadata/zipball/6a06970a10e0a532fb52d3959547123b84a3b3ab", + "reference": "6a06970a10e0a532fb52d3959547123b84a3b3ab", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "doctrine/cache": "~1.0", + "symfony/cache": "~3.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5.x-dev" + } + }, + "autoload": { + "psr-0": { + "Metadata\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Class/method/property metadata management in PHP", + "keywords": [ + "annotations", + "metadata", + "xml", + "yaml" + ], + "time": "2016-12-05T10:18:33+00:00" + }, + { + "name": "jms/parser-lib", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/parser-lib.git", + "reference": "c509473bc1b4866415627af0e1c6cc8ac97fa51d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/parser-lib/zipball/c509473bc1b4866415627af0e1c6cc8ac97fa51d", + "reference": "c509473bc1b4866415627af0e1c6cc8ac97fa51d", + "shasum": "" + }, + "require": { + "phpoption/phpoption": ">=0.9,<2.0-dev" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-0": { + "JMS\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "description": "A library for easily creating recursive-descent parsers.", + "time": "2012-11-18T18:08:43+00:00" + }, + { + "name": "jms/serializer", + "version": "0.16.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/serializer.git", + "reference": "c8a171357ca92b6706e395c757f334902d430ea9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/c8a171357ca92b6706e395c757f334902d430ea9", + "reference": "c8a171357ca92b6706e395c757f334902d430ea9", + "shasum": "" + }, + "require": { + "doctrine/annotations": "1.*", + "jms/metadata": "~1.1", + "jms/parser-lib": "1.*", + "php": ">=5.3.2", + "phpcollection/phpcollection": "~0.1" + }, + "require-dev": { + "doctrine/orm": "~2.1", + "doctrine/phpcr-odm": "~1.0.1", + "jackalope/jackalope-doctrine-dbal": "1.0.*", + "propel/propel1": "~1.7", + "symfony/filesystem": "2.*", + "symfony/form": "~2.1", + "symfony/translation": "~2.0", + "symfony/validator": "~2.0", + "symfony/yaml": "2.*", + "twig/twig": ">=1.8,<2.0-dev" + }, + "suggest": { + "symfony/yaml": "Required if you'd like to serialize data to YAML format." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.15-dev" + } + }, + "autoload": { + "psr-0": { + "JMS\\Serializer": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "authors": [ + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh", + "role": "Developer of wrapped JMSSerializerBundle" + } + ], + "description": "Library for (de-)serializing data of any complexity; supports XML, JSON, and YAML.", + "homepage": "http://jmsyst.com/libs/serializer", + "keywords": [ + "deserialization", + "jaxb", + "json", + "serialization", + "xml" + ], + "time": "2014-03-18T08:39:00+00:00" + }, + { + "name": "justinrainbow/json-schema", + "version": "1.6.1", + "source": { + "type": "git", + "url": "https://github.com/justinrainbow/json-schema.git", + "reference": "cc84765fb7317f6b07bd8ac78364747f95b86341" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/cc84765fb7317f6b07bd8ac78364747f95b86341", + "reference": "cc84765fb7317f6b07bd8ac78364747f95b86341", + "shasum": "" + }, + "require": { + "php": ">=5.3.29" + }, + "require-dev": { + "json-schema/json-schema-test-suite": "1.1.0", + "phpdocumentor/phpdocumentor": "~2", + "phpunit/phpunit": "~3.7" + }, + "bin": [ + "bin/validate-json" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6.x-dev" + } + }, + "autoload": { + "psr-4": { + "JsonSchema\\": "src/JsonSchema/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Bruno Prieto Reis", + "email": "bruno.p.reis@gmail.com" + }, + { + "name": "Justin Rainbow", + "email": "justin.rainbow@gmail.com" + }, + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + }, + { + "name": "Robert Schönthal", + "email": "seroscho@googlemail.com" + } + ], + "description": "A library to validate a json schema.", + "homepage": "https://github.com/justinrainbow/json-schema", + "keywords": [ + "json", + "schema" + ], + "time": "2016-01-25T15:43:01+00:00" + }, + { + "name": "kherge/version", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/kherge-abandoned/Version.git", + "reference": "f07cf83f8ce533be8f93d2893d96d674bbeb7e30" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/kherge-abandoned/Version/zipball/f07cf83f8ce533be8f93d2893d96d674bbeb7e30", + "reference": "f07cf83f8ce533be8f93d2893d96d674bbeb7e30", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-0": { + "KevinGH\\Version": "src/lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kevin Herrera", + "email": "me@kevingh.com", + "homepage": "http://www.kevingh.com/" + } + ], + "description": "A parsing and comparison library for semantic versioning.", + "homepage": "http://github.com/kherge/Version", + "abandoned": true, + "time": "2012-08-16T17:13:03+00:00" + }, + { + "name": "monolog/monolog", + "version": "1.22.1", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "1e044bc4b34e91743943479f1be7a1d5eb93add0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/1e044bc4b34e91743943479f1be7a1d5eb93add0", + "reference": "1e044bc4b34e91743943479f1be7a1d5eb93add0", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "psr/log": "~1.0" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "graylog2/gelf-php": "~1.0", + "jakub-onderka/php-parallel-lint": "0.9", + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "phpunit/phpunit": "~4.5", + "phpunit/phpunit-mock-objects": "2.3.0", + "ruflin/elastica": ">=0.90 <3.0", + "sentry/sentry": "^0.13", + "swiftmailer/swiftmailer": "~5.3" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mongo": "Allow sending log messages to a MongoDB server", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server", + "sentry/sentry": "Allow sending log messages to a Sentry server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "http://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "time": "2017-03-13T07:08:03+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v1.4.1", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "f78af2c9c86107aa1a34cd1dbb5bbe9eeb0d9f51" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f78af2c9c86107aa1a34cd1dbb5bbe9eeb0d9f51", + "reference": "f78af2c9c86107aa1a34cd1dbb5bbe9eeb0d9f51", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "files": [ + "lib/bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "time": "2015-09-19T14:15:08+00:00" + }, + { + "name": "phpcollection/phpcollection", + "version": "0.5.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-collection.git", + "reference": "f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-collection/zipball/f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6", + "reference": "f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6", + "shasum": "" + }, + "require": { + "phpoption/phpoption": "1.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.4-dev" + } + }, + "autoload": { + "psr-0": { + "PhpCollection": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "General-Purpose Collection Library for PHP", + "keywords": [ + "collection", + "list", + "map", + "sequence", + "set" + ], + "time": "2015-05-17T12:39:23+00:00" + }, + { + "name": "phpdocumentor/fileset", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/Fileset.git", + "reference": "bfa78d8fa9763dfce6d0e5d3730c1d8ab25d34b0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/Fileset/zipball/bfa78d8fa9763dfce6d0e5d3730c1d8ab25d34b0", + "reference": "bfa78d8fa9763dfce6d0e5d3730c1d8ab25d34b0", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/finder": "~2.1" + }, + "require-dev": { + "phpunit/phpunit": "~3.7" + }, + "type": "library", + "autoload": { + "psr-0": { + "phpDocumentor": [ + "src/", + "tests/unit/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Fileset component for collecting a set of files given directories and file paths", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "files", + "fileset", + "phpdoc" + ], + "time": "2013-08-06T21:07:42+00:00" + }, + { + "name": "phpdocumentor/graphviz", + "version": "1.0.4", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/GraphViz.git", + "reference": "a906a90a9f230535f25ea31caf81b2323956283f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/GraphViz/zipball/a906a90a9f230535f25ea31caf81b2323956283f", + "reference": "a906a90a9f230535f25ea31caf81b2323956283f", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "phpDocumentor": [ + "src/", + "tests/unit" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "mike.vanriel@naenius.com" + } + ], + "time": "2016-02-02T13:00:08+00:00" + }, + { + "name": "phpdocumentor/phpdocumentor", + "version": "v2.9.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/phpDocumentor2.git", + "reference": "be607da0eef9b9249c43c5b4820d25d631c73667" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/phpDocumentor2/zipball/be607da0eef9b9249c43c5b4820d25d631c73667", + "reference": "be607da0eef9b9249c43c5b4820d25d631c73667", + "shasum": "" + }, + "require": { + "cilex/cilex": "~1.0", + "erusev/parsedown": "~1.0", + "herrera-io/phar-update": "1.0.3", + "jms/serializer": ">=0.12", + "monolog/monolog": "~1.6", + "php": ">=5.3.3", + "phpdocumentor/fileset": "~1.0", + "phpdocumentor/graphviz": "~1.0", + "phpdocumentor/reflection": "^3.0", + "phpdocumentor/reflection-docblock": "~2.0", + "symfony/config": "~2.3", + "symfony/console": "~2.3", + "symfony/event-dispatcher": "~2.1", + "symfony/process": "~2.0", + "symfony/stopwatch": "~2.3", + "symfony/validator": "~2.2", + "twig/twig": "~1.3", + "zendframework/zend-cache": "~2.1", + "zendframework/zend-config": "~2.1", + "zendframework/zend-filter": "~2.1", + "zendframework/zend-i18n": "~2.1", + "zendframework/zend-serializer": "~2.1", + "zendframework/zend-servicemanager": "~2.1", + "zendframework/zend-stdlib": "~2.1", + "zetacomponents/document": ">=1.3.1" + }, + "require-dev": { + "behat/behat": "~3.0", + "mikey179/vfsstream": "~1.2", + "mockery/mockery": "~0.9@dev", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~1.4", + "symfony/expression-language": "~2.4" + }, + "suggest": { + "ext-twig": "Enabling the twig extension improves the generation of twig based templates.", + "ext-xslcache": "Enabling the XSLCache extension improves the generation of xml based templates." + }, + "bin": [ + "bin/phpdoc.php", + "bin/phpdoc" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-develop": "2.9-dev" + } + }, + "autoload": { + "psr-0": { + "phpDocumentor": [ + "src/", + "tests/unit/" + ], + "Cilex\\Provider": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Documentation Generator for PHP", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "api", + "application", + "dga", + "documentation", + "phpdoc" + ], + "time": "2016-05-22T09:50:56+00:00" + }, + { + "name": "phpdocumentor/reflection", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/Reflection.git", + "reference": "793bfd92d9a0fc96ae9608fb3e947c3f59fb3a0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/Reflection/zipball/793bfd92d9a0fc96ae9608fb3e947c3f59fb3a0d", + "reference": "793bfd92d9a0fc96ae9608fb3e947c3f59fb3a0d", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^1.0", + "php": ">=5.3.3", + "phpdocumentor/reflection-docblock": "~2.0", + "psr/log": "~1.0" + }, + "require-dev": { + "behat/behat": "~2.4", + "mockery/mockery": "~0.8", + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "phpDocumentor": [ + "src/", + "tests/unit/", + "tests/mocks/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Reflection library to do Static Analysis for PHP Projects", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2016-05-21T08:42:32+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8", + "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "suggest": { + "dflydev/markdown": "~1.0", + "erusev/parsedown": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "phpDocumentor": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "mike.vanriel@naenius.com" + } + ], + "time": "2015-02-03T12:10:50+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.5.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/94e644f7d2051a5f0fcf77d81605f152eecff0ed", + "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "4.7.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-0": { + "PhpOption\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "time": "2015-07-25T16:39:46+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "v1.7.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "93d39f1f7f9326d746203c7c056f300f7f126073" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/93d39f1f7f9326d746203c7c056f300f7f126073", + "reference": "93d39f1f7f9326d746203c7c056f300f7f126073", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", + "sebastian/comparator": "^1.1|^2.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.5|^3.2", + "phpunit/phpunit": "^4.8 || ^5.6.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6.x-dev" + } + }, + "autoload": { + "psr-0": { + "Prophecy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2017-03-02T20:05:34+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "2.2.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979", + "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "phpunit/php-file-iterator": "~1.3", + "phpunit/php-text-template": "~1.2", + "phpunit/php-token-stream": "~1.3", + "sebastian/environment": "^1.3.2", + "sebastian/version": "~1.0" + }, + "require-dev": { + "ext-xdebug": ">=2.1.4", + "phpunit/phpunit": "~4" + }, + "suggest": { + "ext-dom": "*", + "ext-xdebug": ">=2.2.1", + "ext-xmlwriter": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2015-10-06T15:47:00+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.4.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2016-10-03T07:40:28+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2015-06-21T13:50:34+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "1.0.9", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2017-02-26T11:10:40+00:00" + }, + { + "name": "phpunit/php-token-stream", + "version": "1.4.11", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/e03f8f67534427a787e21a385a67ec3ca6978ea7", + "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2017-02-27T10:12:30+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "4.8.35", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "791b1a67c25af50e230f841ee7a9c6eba507dc87" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/791b1a67c25af50e230f841ee7a9c6eba507dc87", + "reference": "791b1a67c25af50e230f841ee7a9c6eba507dc87", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-spl": "*", + "php": ">=5.3.3", + "phpspec/prophecy": "^1.3.1", + "phpunit/php-code-coverage": "~2.1", + "phpunit/php-file-iterator": "~1.4", + "phpunit/php-text-template": "~1.2", + "phpunit/php-timer": "^1.0.6", + "phpunit/phpunit-mock-objects": "~2.3", + "sebastian/comparator": "~1.2.2", + "sebastian/diff": "~1.2", + "sebastian/environment": "~1.3", + "sebastian/exporter": "~1.2", + "sebastian/global-state": "~1.0", + "sebastian/version": "~1.0", + "symfony/yaml": "~2.1|~3.0" + }, + "suggest": { + "phpunit/php-invoker": "~1.1" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.8.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2017-02-06T05:18:07+00:00" + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "2.3.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983", + "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": ">=5.3.3", + "phpunit/php-text-template": "~1.2", + "sebastian/exporter": "~1.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "suggest": { + "ext-soap": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ], + "time": "2015-10-02T06:51:40+00:00" + }, + { + "name": "pimple/pimple", + "version": "v1.1.1", + "source": { + "type": "git", + "url": "https://github.com/silexphp/Pimple.git", + "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/silexphp/Pimple/zipball/2019c145fe393923f3441b23f29bbdfaa5c58c4d", + "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-0": { + "Pimple": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + } + ], + "description": "Pimple is a simple Dependency Injection Container for PHP 5.3", + "homepage": "http://pimple.sensiolabs.org", + "keywords": [ + "container", + "dependency injection" + ], + "time": "2013-11-22T08:30:29+00:00" + }, + { + "name": "psr/log", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2016-10-10T12:19:37+00:00" + }, + { + "name": "sebastian/comparator", + "version": "1.2.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/diff": "~1.2", + "sebastian/exporter": "~1.2 || ~2.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "http://www.github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2017-01-29T09:50:25+00:00" + }, + { + "name": "sebastian/diff", + "version": "1.4.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e", + "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff" + ], + "time": "2015-12-08T07:14:41+00:00" + }, + { + "name": "sebastian/environment", + "version": "1.3.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea", + "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8 || ^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "time": "2016-08-18T05:49:44+00:00" + }, + { + "name": "sebastian/exporter", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4", + "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/recursion-context": "~1.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2016-06-17T09:04:28+00:00" + }, + { + "name": "sebastian/global-state", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2015-10-12T03:26:01+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7", + "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2016-10-03T07:41:43+00:00" + }, + { + "name": "sebastian/version", + "version": "1.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", + "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", + "shasum": "" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2015-06-21T13:59:46+00:00" + }, + { + "name": "seld/jsonlint", + "version": "1.6.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/jsonlint.git", + "reference": "791f8c594f300d246cdf01c6b3e1e19611e301d8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/791f8c594f300d246cdf01c6b3e1e19611e301d8", + "reference": "791f8c594f300d246cdf01c6b3e1e19611e301d8", + "shasum": "" + }, + "require": { + "php": "^5.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.5" + }, + "bin": [ + "bin/jsonlint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Seld\\JsonLint\\": "src/Seld/JsonLint/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "JSON Linter", + "keywords": [ + "json", + "linter", + "parser", + "validator" + ], + "time": "2017-03-06T16:42:24+00:00" + }, + { + "name": "symfony/config", + "version": "v2.8.18", + "source": { + "type": "git", + "url": "https://github.com/symfony/config.git", + "reference": "06ce6bb46c24963ec09323da45d0f4f85d3cecd2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/config/zipball/06ce6bb46c24963ec09323da45d0f4f85d3cecd2", + "reference": "06ce6bb46c24963ec09323da45d0f4f85d3cecd2", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/filesystem": "~2.3|~3.0.0" + }, + "require-dev": { + "symfony/yaml": "~2.7|~3.0.0" + }, + "suggest": { + "symfony/yaml": "To use the yaml reference dumper" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Config\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Config Component", + "homepage": "https://symfony.com", + "time": "2017-03-01T18:13:50+00:00" + }, + { + "name": "symfony/console", + "version": "v2.8.18", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "81508e6fac4476771275a3f4f53c3fee9b956bfa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/81508e6fac4476771275a3f4f53c3fee9b956bfa", + "reference": "81508e6fac4476771275a3f4f53c3fee9b956bfa", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/debug": "^2.7.2|~3.0.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/event-dispatcher": "~2.1|~3.0.0", + "symfony/process": "~2.1|~3.0.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/process": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Console Component", + "homepage": "https://symfony.com", + "time": "2017-03-04T11:00:12+00:00" + }, + { + "name": "symfony/debug", + "version": "v2.8.18", + "source": { + "type": "git", + "url": "https://github.com/symfony/debug.git", + "reference": "e90099a2958d4833a02d05b504cc06e1c234abcc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/debug/zipball/e90099a2958d4833a02d05b504cc06e1c234abcc", + "reference": "e90099a2958d4833a02d05b504cc06e1c234abcc", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "psr/log": "~1.0" + }, + "conflict": { + "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" + }, + "require-dev": { + "symfony/class-loader": "~2.2|~3.0.0", + "symfony/http-kernel": "~2.3.24|~2.5.9|^2.6.2|~3.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Debug\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Debug Component", + "homepage": "https://symfony.com", + "time": "2017-02-18T19:13:35+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v2.8.18", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "bb4ec47e8e109c1c1172145732d0aa468d967cd0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/bb4ec47e8e109c1c1172145732d0aa468d967cd0", + "reference": "bb4ec47e8e109c1c1172145732d0aa468d967cd0", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "^2.0.5|~3.0.0", + "symfony/dependency-injection": "~2.6|~3.0.0", + "symfony/expression-language": "~2.6|~3.0.0", + "symfony/stopwatch": "~2.3|~3.0.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony EventDispatcher Component", + "homepage": "https://symfony.com", + "time": "2017-02-21T08:33:48+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v2.8.18", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "e542d4765092d22552b1bf01ddccfb01d98ee325" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/e542d4765092d22552b1bf01ddccfb01d98ee325", + "reference": "e542d4765092d22552b1bf01ddccfb01d98ee325", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Filesystem Component", + "homepage": "https://symfony.com", + "time": "2017-02-18T17:06:33+00:00" + }, + { + "name": "symfony/finder", + "version": "v2.8.18", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "5fc4b5cab38b9d28be318fcffd8066988e7d9451" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/5fc4b5cab38b9d28be318fcffd8066988e7d9451", + "reference": "5fc4b5cab38b9d28be318fcffd8066988e7d9451", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Finder Component", + "homepage": "https://symfony.com", + "time": "2017-02-21T08:33:48+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/e79d363049d1c2128f133a2667e4f4190904f7f4", + "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "time": "2016-11-14T01:06:16+00:00" + }, + { + "name": "symfony/process", + "version": "v2.8.18", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "41336b20b52f5fd5b42a227e394e673c8071118f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/41336b20b52f5fd5b42a227e394e673c8071118f", + "reference": "41336b20b52f5fd5b42a227e394e673c8071118f", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Process Component", + "homepage": "https://symfony.com", + "time": "2017-03-04T12:20:59+00:00" + }, + { + "name": "symfony/stopwatch", + "version": "v2.8.18", + "source": { + "type": "git", + "url": "https://github.com/symfony/stopwatch.git", + "reference": "9e4369666d02ee9b8830da878b7f6a769eb96f4b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/9e4369666d02ee9b8830da878b7f6a769eb96f4b", + "reference": "9e4369666d02ee9b8830da878b7f6a769eb96f4b", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Stopwatch\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Stopwatch Component", + "homepage": "https://symfony.com", + "time": "2017-02-18T17:06:33+00:00" + }, + { + "name": "symfony/translation", + "version": "v2.8.18", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "b538355bc99db2ec7cc35284ec76d92ae7d1d256" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/b538355bc99db2ec7cc35284ec76d92ae7d1d256", + "reference": "b538355bc99db2ec7cc35284ec76d92ae7d1d256", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/config": "<2.7" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~2.8", + "symfony/intl": "~2.7.25|^2.8.18|~3.2.5", + "symfony/yaml": "~2.2|~3.0.0" + }, + "suggest": { + "psr/log": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Translation Component", + "homepage": "https://symfony.com", + "time": "2017-03-04T12:20:59+00:00" + }, + { + "name": "symfony/validator", + "version": "v2.8.18", + "source": { + "type": "git", + "url": "https://github.com/symfony/validator.git", + "reference": "8d4bfa7ec24e70ebc28d0cea5f2702d3f1257a63" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/validator/zipball/8d4bfa7ec24e70ebc28d0cea5f2702d3f1257a63", + "reference": "8d4bfa7ec24e70ebc28d0cea5f2702d3f1257a63", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation": "~2.4|~3.0.0" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "doctrine/cache": "~1.0", + "egulias/email-validator": "^1.2.1", + "symfony/config": "~2.2|~3.0.0", + "symfony/expression-language": "~2.4|~3.0.0", + "symfony/http-foundation": "~2.3|~3.0.0", + "symfony/intl": "~2.7.25|^2.8.18|~3.2.5", + "symfony/property-access": "~2.3|~3.0.0", + "symfony/yaml": "^2.0.5|~3.0.0" + }, + "suggest": { + "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.", + "doctrine/cache": "For using the default cached annotation reader and metadata cache.", + "egulias/email-validator": "Strict (RFC compliant) email validation", + "symfony/config": "", + "symfony/expression-language": "For using the 2.4 Expression validator", + "symfony/http-foundation": "", + "symfony/intl": "", + "symfony/property-access": "For using the 2.4 Validator API", + "symfony/yaml": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Validator\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Validator Component", + "homepage": "https://symfony.com", + "time": "2017-02-28T02:24:56+00:00" + }, + { + "name": "symfony/yaml", + "version": "v2.8.18", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "2a7bab3c16f6f452c47818fdd08f3b1e49ffcf7d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/2a7bab3c16f6f452c47818fdd08f3b1e49ffcf7d", + "reference": "2a7bab3c16f6f452c47818fdd08f3b1e49ffcf7d", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "time": "2017-03-01T18:13:50+00:00" + }, + { + "name": "twig/twig", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "9935b662e24d6e634da88901ab534cc12e8c728f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/9935b662e24d6e634da88901ab534cc12e8c728f", + "reference": "9935b662e24d6e634da88901ab534cc12e8c728f", + "shasum": "" + }, + "require": { + "php": ">=5.2.7" + }, + "require-dev": { + "psr/container": "^1.0", + "symfony/debug": "~2.7", + "symfony/phpunit-bridge": "~3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.32-dev" + } + }, + "autoload": { + "psr-0": { + "Twig_": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + }, + { + "name": "Twig Team", + "homepage": "http://twig.sensiolabs.org/contributors", + "role": "Contributors" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "http://twig.sensiolabs.org", + "keywords": [ + "templating" + ], + "time": "2017-02-27T00:07:03+00:00" + }, + { + "name": "zendframework/zend-cache", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-cache.git", + "reference": "5999e5a03f7dcf82abbbe67eea74da641f959684" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-cache/zipball/5999e5a03f7dcf82abbbe67eea74da641f959684", + "reference": "5999e5a03f7dcf82abbbe67eea74da641f959684", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-eventmanager": "~2.5", + "zendframework/zend-serializer": "~2.5", + "zendframework/zend-servicemanager": "~2.5", + "zendframework/zend-stdlib": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-session": "~2.5" + }, + "suggest": { + "ext-apc": "APC >= 3.1.6 to use the APC storage adapter", + "ext-dba": "DBA, to use the DBA storage adapter", + "ext-memcached": "Memcached >= 1.0.0 to use the Memcached storage adapter", + "ext-mongo": "Mongo, to use MongoDb storage adapter", + "ext-wincache": "WinCache, to use the WinCache storage adapter", + "mongofill/mongofill": "Alternative to ext-mongo - a pure PHP implementation designed as a drop in replacement", + "zendframework/zend-serializer": "Zend\\Serializer component", + "zendframework/zend-session": "Zend\\Session component" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides a generic way to cache any data", + "homepage": "https://github.com/zendframework/zend-cache", + "keywords": [ + "cache", + "zf2" + ], + "time": "2015-06-03T15:31:59+00:00" + }, + { + "name": "zendframework/zend-config", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-config.git", + "reference": "ec49b1df1bdd9772df09dc2f612fbfc279bf4c27" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-config/zipball/ec49b1df1bdd9772df09dc2f612fbfc279bf4c27", + "reference": "ec49b1df1bdd9772df09dc2f612fbfc279bf4c27", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-stdlib": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-filter": "~2.5", + "zendframework/zend-i18n": "~2.5", + "zendframework/zend-json": "~2.5", + "zendframework/zend-mvc": "~2.5", + "zendframework/zend-servicemanager": "~2.5" + }, + "suggest": { + "zendframework/zend-filter": "Zend\\Filter component", + "zendframework/zend-i18n": "Zend\\I18n component", + "zendframework/zend-json": "Zend\\Json to use the Json reader or writer classes", + "zendframework/zend-servicemanager": "Zend\\ServiceManager for use with the Config Factory to retrieve reader and writer instances" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Config\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides a nested object property based user interface for accessing this configuration data within application code", + "homepage": "https://github.com/zendframework/zend-config", + "keywords": [ + "config", + "zf2" + ], + "time": "2015-06-03T15:32:00+00:00" + }, + { + "name": "zendframework/zend-eventmanager", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-eventmanager.git", + "reference": "d94a16039144936f107f906896349900fd634443" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/d94a16039144936f107f906896349900fd634443", + "reference": "d94a16039144936f107f906896349900fd634443", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-stdlib": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\EventManager\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-eventmanager", + "keywords": [ + "eventmanager", + "zf2" + ], + "time": "2015-06-03T15:32:01+00:00" + }, + { + "name": "zendframework/zend-filter", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-filter.git", + "reference": "93e6990a198e6cdd811064083acac4693f4b29ae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-filter/zipball/93e6990a198e6cdd811064083acac4693f4b29ae", + "reference": "93e6990a198e6cdd811064083acac4693f4b29ae", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-stdlib": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-config": "~2.5", + "zendframework/zend-crypt": "~2.5", + "zendframework/zend-i18n": "~2.5", + "zendframework/zend-loader": "~2.5", + "zendframework/zend-servicemanager": "~2.5", + "zendframework/zend-uri": "~2.5" + }, + "suggest": { + "zendframework/zend-crypt": "Zend\\Crypt component", + "zendframework/zend-i18n": "Zend\\I18n component", + "zendframework/zend-servicemanager": "Zend\\ServiceManager component", + "zendframework/zend-uri": "Zend\\Uri component for UriNormalize filter" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Filter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides a set of commonly needed data filters", + "homepage": "https://github.com/zendframework/zend-filter", + "keywords": [ + "filter", + "zf2" + ], + "time": "2015-06-03T15:32:01+00:00" + }, + { + "name": "zendframework/zend-i18n", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-i18n.git", + "reference": "509271eb7947e4aabebfc376104179cffea42696" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-i18n/zipball/509271eb7947e4aabebfc376104179cffea42696", + "reference": "509271eb7947e4aabebfc376104179cffea42696", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-stdlib": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-cache": "~2.5", + "zendframework/zend-config": "~2.5", + "zendframework/zend-eventmanager": "~2.5", + "zendframework/zend-filter": "~2.5", + "zendframework/zend-servicemanager": "~2.5", + "zendframework/zend-validator": "~2.5", + "zendframework/zend-view": "~2.5" + }, + "suggest": { + "ext-intl": "Required for most features of Zend\\I18n; included in default builds of PHP", + "zendframework/zend-cache": "Zend\\Cache component", + "zendframework/zend-config": "Zend\\Config component", + "zendframework/zend-eventmanager": "You should install this package to use the events in the translator", + "zendframework/zend-filter": "You should install this package to use the provided filters", + "zendframework/zend-resources": "Translation resources", + "zendframework/zend-servicemanager": "Zend\\ServiceManager component", + "zendframework/zend-validator": "You should install this package to use the provided validators", + "zendframework/zend-view": "You should install this package to use the provided view helpers" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\I18n\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-i18n", + "keywords": [ + "i18n", + "zf2" + ], + "time": "2015-06-03T15:32:01+00:00" + }, + { + "name": "zendframework/zend-json", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-json.git", + "reference": "c74eaf17d2dd37dc1e964be8dfde05706a821ebc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-json/zipball/c74eaf17d2dd37dc1e964be8dfde05706a821ebc", + "reference": "c74eaf17d2dd37dc1e964be8dfde05706a821ebc", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-stdlib": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-http": "~2.5", + "zendframework/zend-server": "~2.5", + "zendframework/zendxml": "~1.0" + }, + "suggest": { + "zendframework/zend-http": "Zend\\Http component", + "zendframework/zend-server": "Zend\\Server component", + "zendframework/zendxml": "To support Zend\\Json\\Json::fromXml() usage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Json\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides convenience methods for serializing native PHP to JSON and decoding JSON to native PHP", + "homepage": "https://github.com/zendframework/zend-json", + "keywords": [ + "json", + "zf2" + ], + "time": "2015-06-03T15:32:01+00:00" + }, + { + "name": "zendframework/zend-math", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-math.git", + "reference": "9f02a1ac4d3374d3332c80f9215deec9c71558fc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-math/zipball/9f02a1ac4d3374d3332c80f9215deec9c71558fc", + "reference": "9f02a1ac4d3374d3332c80f9215deec9c71558fc", + "shasum": "" + }, + "require": { + "php": ">=5.3.23" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "ircmaxell/random-lib": "~1.1", + "phpunit/phpunit": "~4.0", + "zendframework/zend-servicemanager": "~2.5" + }, + "suggest": { + "ext-bcmath": "If using the bcmath functionality", + "ext-gmp": "If using the gmp functionality", + "ircmaxell/random-lib": "Fallback random byte generator for Zend\\Math\\Rand if OpenSSL/Mcrypt extensions are unavailable", + "zendframework/zend-servicemanager": ">= current version, if using the BigInteger::factory functionality" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Math\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-math", + "keywords": [ + "math", + "zf2" + ], + "time": "2015-06-03T15:32:02+00:00" + }, + { + "name": "zendframework/zend-serializer", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-serializer.git", + "reference": "b7208eb17dc4a4fb3a660b85e6c4af035eeed40c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-serializer/zipball/b7208eb17dc4a4fb3a660b85e6c4af035eeed40c", + "reference": "b7208eb17dc4a4fb3a660b85e6c4af035eeed40c", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-json": "~2.5", + "zendframework/zend-math": "~2.5", + "zendframework/zend-stdlib": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-servicemanager": "~2.5" + }, + "suggest": { + "zendframework/zend-servicemanager": "To support plugin manager support" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Serializer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides an adapter based interface to simply generate storable representation of PHP types by different facilities, and recover", + "homepage": "https://github.com/zendframework/zend-serializer", + "keywords": [ + "serializer", + "zf2" + ], + "time": "2015-06-03T15:32:02+00:00" + }, + { + "name": "zendframework/zend-servicemanager", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-servicemanager.git", + "reference": "3b22c403e351d92526c642cba0bd810bc22e1c56" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-servicemanager/zipball/3b22c403e351d92526c642cba0bd810bc22e1c56", + "reference": "3b22c403e351d92526c642cba0bd810bc22e1c56", + "shasum": "" + }, + "require": { + "php": ">=5.3.23" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-di": "~2.5", + "zendframework/zend-mvc": "~2.5" + }, + "suggest": { + "ocramius/proxy-manager": "ProxyManager 0.5.* to handle lazy initialization of services", + "zendframework/zend-di": "Zend\\Di component" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\ServiceManager\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-servicemanager", + "keywords": [ + "servicemanager", + "zf2" + ], + "time": "2015-06-03T15:32:02+00:00" + }, + { + "name": "zendframework/zend-stdlib", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-stdlib.git", + "reference": "cc8e90a60dd5d44b9730b77d07b97550091da1ae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/cc8e90a60dd5d44b9730b77d07b97550091da1ae", + "reference": "cc8e90a60dd5d44b9730b77d07b97550091da1ae", + "shasum": "" + }, + "require": { + "php": ">=5.3.23" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-config": "~2.5", + "zendframework/zend-eventmanager": "~2.5", + "zendframework/zend-filter": "~2.5", + "zendframework/zend-inputfilter": "~2.5", + "zendframework/zend-serializer": "~2.5", + "zendframework/zend-servicemanager": "~2.5" + }, + "suggest": { + "zendframework/zend-eventmanager": "To support aggregate hydrator usage", + "zendframework/zend-filter": "To support naming strategy hydrator usage", + "zendframework/zend-serializer": "Zend\\Serializer component", + "zendframework/zend-servicemanager": "To support hydrator plugin manager usage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Stdlib\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-stdlib", + "keywords": [ + "stdlib", + "zf2" + ], + "time": "2015-06-03T15:32:03+00:00" + }, + { + "name": "zetacomponents/base", + "version": "1.9", + "source": { + "type": "git", + "url": "https://github.com/zetacomponents/Base.git", + "reference": "f20df24e8de3e48b6b69b2503f917e457281e687" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zetacomponents/Base/zipball/f20df24e8de3e48b6b69b2503f917e457281e687", + "reference": "f20df24e8de3e48b6b69b2503f917e457281e687", + "shasum": "" + }, + "require-dev": { + "zetacomponents/unit-test": "*" + }, + "type": "library", + "autoload": { + "classmap": [ + "src" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Sergey Alexeev" + }, + { + "name": "Sebastian Bergmann" + }, + { + "name": "Jan Borsodi" + }, + { + "name": "Raymond Bosman" + }, + { + "name": "Frederik Holljen" + }, + { + "name": "Kore Nordmann" + }, + { + "name": "Derick Rethans" + }, + { + "name": "Vadym Savchuk" + }, + { + "name": "Tobias Schlitt" + }, + { + "name": "Alexandru Stanoi" + } + ], + "description": "The Base package provides the basic infrastructure that all packages rely on. Therefore every component relies on this package.", + "homepage": "https://github.com/zetacomponents", + "time": "2014-09-19T03:28:34+00:00" + }, + { + "name": "zetacomponents/document", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/zetacomponents/Document.git", + "reference": "688abfde573cf3fe0730f82538fbd7aa9fc95bc8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zetacomponents/Document/zipball/688abfde573cf3fe0730f82538fbd7aa9fc95bc8", + "reference": "688abfde573cf3fe0730f82538fbd7aa9fc95bc8", + "shasum": "" + }, + "require": { + "zetacomponents/base": "*" + }, + "require-dev": { + "zetacomponents/unit-test": "dev-master" + }, + "type": "library", + "autoload": { + "classmap": [ + "src" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Sebastian Bergmann" + }, + { + "name": "Kore Nordmann" + }, + { + "name": "Derick Rethans" + }, + { + "name": "Tobias Schlitt" + }, + { + "name": "Alexandru Stanoi" + } + ], + "description": "The Document components provides a general conversion framework for different semantic document markup languages like XHTML, Docbook, RST and similar.", + "homepage": "https://github.com/zetacomponents", + "time": "2013-12-19T11:40:00+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">=5.0.0" + }, + "platform-dev": [] +} diff --git a/lib/vendor/PHPMailer/examples/DKIM.phps b/lib/vendor/PHPMailer/examples/DKIM.phps new file mode 100644 index 0000000..e3d2bae --- /dev/null +++ b/lib/vendor/PHPMailer/examples/DKIM.phps @@ -0,0 +1,38 @@ +setFrom('from@example.com', 'First Last'); +//Set an alternative reply-to address +$mail->addReplyTo('replyto@example.com', 'First Last'); +//Set who the message is to be sent to +$mail->addAddress('whoto@example.com', 'John Doe'); +//Set the subject line +$mail->Subject = 'PHPMailer DKIM test'; +//This should be the same as the domain of your From address +$mail->DKIM_domain = 'example.com'; +//Path to your private key file +$mail->DKIM_private = 'dkim_private.pem'; +//Set this to your own selector +$mail->DKIM_selector = 'phpmailer'; +//If your private key has a passphrase, set it here +$mail->DKIM_passphrase = ''; +//The identity you're signing as - usually your From address +$mail->DKIM_identity = $mail->From; + +//send the message, check for errors +if (!$mail->send()) { + echo "Mailer Error: " . $mail->ErrorInfo; +} else { + echo "Message sent!"; +} diff --git a/lib/vendor/PHPMailer/examples/code_generator.phps b/lib/vendor/PHPMailer/examples/code_generator.phps new file mode 100644 index 0000000..2182663 --- /dev/null +++ b/lib/vendor/PHPMailer/examples/code_generator.phps @@ -0,0 +1,604 @@ +CharSet = 'utf-8'; +ini_set('default_charset', 'UTF-8'); +$mail->Debugoutput = $CFG['smtp_debugoutput']; +$example_code .= "\n\n\$mail = new PHPMailer(true);"; +$example_code .= "\n\$mail->CharSet = 'utf-8';"; +$example_code .= "\nini_set('default_charset', 'UTF-8');"; + +class phpmailerAppException extends phpmailerException +{ +} + +$example_code .= "\n\nclass phpmailerAppException extends phpmailerException {}"; +$example_code .= "\n\ntry {"; + +// Convert a string to its JavaScript representation. +function JSString($s) { + static $from = array("\\", "/", "\n", "\t", "\r", "\b", "\f", '"'); + static $to = array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\\"'); + return is_null($s)? 'null': '"' . str_replace($from, $to, "$s") . '"'; +} + +try { + if (isset($_POST["submit"]) && $_POST['submit'] == "Submit") { + $to = $to_email; + if (!PHPMailer::validateAddress($to)) { + throw new phpmailerAppException("Email address " . $to . " is invalid -- aborting!"); + } + + $example_code .= "\n\$to = '" . addslashes($to_email) . "';"; + $example_code .= "\nif(!PHPMailer::validateAddress(\$to)) {"; + $example_code .= "\n throw new phpmailerAppException(\"Email address \" . " . + "\$to . \" is invalid -- aborting!\");"; + $example_code .= "\n}"; + + switch ($test_type) { + case 'smtp': + $mail->isSMTP(); // telling the class to use SMTP + $mail->SMTPDebug = (integer)$smtp_debug; + $mail->Host = $smtp_server; // SMTP server + $mail->Port = (integer)$smtp_port; // set the SMTP port + if ($smtp_secure) { + $mail->SMTPSecure = strtolower($smtp_secure); + } + $mail->SMTPAuth = array_key_exists('smtp_authenticate', $_POST); // enable SMTP authentication? + if (array_key_exists('smtp_authenticate', $_POST)) { + $mail->Username = $authenticate_username; // SMTP account username + $mail->Password = $authenticate_password; // SMTP account password + } + + $example_code .= "\n\$mail->isSMTP();"; + $example_code .= "\n\$mail->SMTPDebug = " . (integer) $smtp_debug . ";"; + $example_code .= "\n\$mail->Host = \"" . addslashes($smtp_server) . "\";"; + $example_code .= "\n\$mail->Port = \"" . addslashes($smtp_port) . "\";"; + $example_code .= "\n\$mail->SMTPSecure = \"" . addslashes(strtolower($smtp_secure)) . "\";"; + $example_code .= "\n\$mail->SMTPAuth = " . (array_key_exists( + 'smtp_authenticate', + $_POST + ) ? 'true' : 'false') . ";"; + if (array_key_exists('smtp_authenticate', $_POST)) { + $example_code .= "\n\$mail->Username = \"" . addslashes($authenticate_username) . "\";"; + $example_code .= "\n\$mail->Password = \"" . addslashes($authenticate_password) . "\";"; + } + break; + case 'mail': + $mail->isMail(); // telling the class to use PHP's mail() + $example_code .= "\n\$mail->isMail();"; + break; + case 'sendmail': + $mail->isSendmail(); // telling the class to use Sendmail + $example_code .= "\n\$mail->isSendmail();"; + break; + case 'qmail': + $mail->isQmail(); // telling the class to use Qmail + $example_code .= "\n\$mail->isQmail();"; + break; + default: + throw new phpmailerAppException('Invalid test_type provided'); + } + + try { + if ($_POST['From_Name'] != '') { + $mail->addReplyTo($from_email, $from_name); + $mail->setFrom($from_email, $from_name); + + $example_code .= "\n\$mail->addReplyTo(\"" . + addslashes($from_email) . "\", \"" . addslashes($from_name) . "\");"; + $example_code .= "\n\$mail->setFrom(\"" . + addslashes($from_email) . "\", \"" . addslashes($from_name) . "\");"; + } else { + $mail->addReplyTo($from_email); + $mail->setFrom($from_email, $from_email); + + $example_code .= "\n\$mail->addReplyTo(\"" . addslashes($from_email) . "\");"; + $example_code .= "\n\$mail->setFrom(\"" . + addslashes($from_email) . "\", \"" . addslashes($from_email) . "\");"; + } + + if ($_POST['To_Name'] != '') { + $mail->addAddress($to, $to_name); + $example_code .= "\n\$mail->addAddress(\"$to\", \"" . addslashes($to_name) . "\");"; + } else { + $mail->addAddress($to); + $example_code .= "\n\$mail->addAddress(\"$to\");"; + } + + if ($_POST['bcc_Email'] != '') { + $indiBCC = explode(" ", $bcc_email); + foreach ($indiBCC as $key => $value) { + $mail->addBCC($value); + $example_code .= "\n\$mail->addBCC(\"" . addslashes($value) . "\");"; + } + } + + if ($_POST['cc_Email'] != '') { + $indiCC = explode(" ", $cc_Email); + foreach ($indiCC as $key => $value) { + $mail->addCC($value); + $example_code .= "\n\$mail->addCC(\"" . addslashes($value) . "\");"; + } + } + } catch (phpmailerException $e) { //Catch all kinds of bad addressing + throw new phpmailerAppException($e->getMessage()); + } + $mail->Subject = $subject . ' (PHPMailer test using ' . strtoupper($test_type) . ')'; + $example_code .= "\n\$mail->Subject = \"" . addslashes($subject) . + ' (PHPMailer test using ' . addslashes(strtoupper($test_type)) . ')";'; + + if ($_POST['Message'] == '') { + $body = file_get_contents('contents.html'); + } else { + $body = $message; + } + + $example_code .= "\n\$body = <<<'EOT'\n$body\nEOT;"; + + $mail->WordWrap = 78; // set word wrap to the RFC2822 limit + $mail->msgHTML($body, dirname(__FILE__), true); //Create message bodies and embed images + + $example_code .= "\n\$mail->WordWrap = 78;"; + $example_code .= "\n\$mail->msgHTML(\$body, dirname(__FILE__), true); //Create message bodies and embed images"; + + $mail->addAttachment('images/phpmailer_mini.png', 'phpmailer_mini.png'); // optional name + $mail->addAttachment('images/phpmailer.png', 'phpmailer.png'); // optional name + $example_code .= "\n\$mail->addAttachment('images/phpmailer_mini.png'," . + "'phpmailer_mini.png'); // optional name"; + $example_code .= "\n\$mail->addAttachment('images/phpmailer.png', 'phpmailer.png'); // optional name"; + + $example_code .= "\n\ntry {"; + $example_code .= "\n \$mail->send();"; + $example_code .= "\n \$results_messages[] = \"Message has been sent using " . + addslashes(strtoupper($test_type)) . "\";"; + $example_code .= "\n}"; + $example_code .= "\ncatch (phpmailerException \$e) {"; + $example_code .= "\n throw new phpmailerAppException('Unable to send to: ' . \$to. ': '.\$e->getMessage());"; + $example_code .= "\n}"; + + try { + $mail->send(); + $results_messages[] = "Message has been sent using " . strtoupper($test_type); + } catch (phpmailerException $e) { + throw new phpmailerAppException("Unable to send to: " . $to . ': ' . $e->getMessage()); + } + } +} catch (phpmailerAppException $e) { + $results_messages[] = $e->errorMessage(); +} +$example_code .= "\n}"; +$example_code .= "\ncatch (phpmailerAppException \$e) {"; +$example_code .= "\n \$results_messages[] = \$e->errorMessage();"; +$example_code .= "\n}"; +$example_code .= "\n\nif (count(\$results_messages) > 0) {"; +$example_code .= "\n echo \"

Run results

\\n\";"; +$example_code .= "\n echo \"
    \\n\";"; +$example_code .= "\nforeach (\$results_messages as \$result) {"; +$example_code .= "\n echo \"
  • \$result
  • \\n\";"; +$example_code .= "\n}"; +$example_code .= "\necho \"
\\n\";"; +$example_code .= "\n}"; +?> + + + + PHPMailer Test Page + + + + + + + + +"; + echo exit("ERROR: Wrong PHP version. Must be PHP 5 or above."); +} + +if (count($results_messages) > 0) { + echo '

Run results

'; + echo '
    '; + foreach ($results_messages as $result) { + echo "
  • $result
  • "; + } + echo '
'; +} + +if (isset($_POST["submit"]) && $_POST["submit"] == "Submit") { + echo "
\n"; + echo "
Script:\n"; + echo "
\n";
+    echo htmlentities($example_code);
+    echo "\n
\n"; + echo "\n
\n"; +} +?> +
+
+
+
+ Mail Details + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+
Test will include two attachments.
+
+
+
+
+ Mail Test Specs + + + + + +
Test Type +
+ + + required> +
+
+ + + required> +
+
+ + + required> +
+
+ + + required> +
+
+
"> + SMTP Specific Options: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ +
+ +
+ + value="true"> +
+ +
+ +
+
+
+
+
+ +
+
+ +
+ +
+
+
+ + diff --git a/lib/vendor/PHPMailer/examples/contactform.phps b/lib/vendor/PHPMailer/examples/contactform.phps new file mode 100644 index 0000000..d85e204 --- /dev/null +++ b/lib/vendor/PHPMailer/examples/contactform.phps @@ -0,0 +1,71 @@ +isSMTP(); + $mail->Host = 'localhost'; + $mail->Port = 25; + + //Use a fixed address in your own domain as the from address + //**DO NOT** use the submitter's address here as it will be forgery + //and will cause your messages to fail SPF checks + $mail->setFrom('from@example.com', 'First Last'); + //Send the message to yourself, or whoever should receive contact for submissions + $mail->addAddress('whoto@example.com', 'John Doe'); + //Put the submitter's address in a reply-to header + //This will fail if the address provided is invalid, + //in which case we should ignore the whole request + if ($mail->addReplyTo($_POST['email'], $_POST['name'])) { + $mail->Subject = 'PHPMailer contact form'; + //Keep it simple - don't use HTML + $mail->isHTML(false); + //Build a simple message body + $mail->Body = <<send()) { + //The reason for failing to send will be in $mail->ErrorInfo + //but you shouldn't display errors to users - process the error, log it on your server. + $msg = 'Sorry, something went wrong. Please try again later.'; + } else { + $msg = 'Message sent! Thanks for contacting us.'; + } + } else { + $msg = 'Invalid email address, message ignored.'; + } +} +?> + + + + + Contact form + + +

Contact us

+$msg"; +} ?> +
+
+
+
+ +
+ + diff --git a/lib/vendor/PHPMailer/examples/contents.html b/lib/vendor/PHPMailer/examples/contents.html new file mode 100644 index 0000000..dc3fc66 --- /dev/null +++ b/lib/vendor/PHPMailer/examples/contents.html @@ -0,0 +1,17 @@ + + + + + PHPMailer Test + + +
+

This is a test of PHPMailer.

+
+ PHPMailer rocks +
+

This example uses HTML.

+

ISO-8859-1 text:

+
+ + diff --git a/lib/vendor/PHPMailer/examples/contentsutf8.html b/lib/vendor/PHPMailer/examples/contentsutf8.html new file mode 100644 index 0000000..035d10c --- /dev/null +++ b/lib/vendor/PHPMailer/examples/contentsutf8.html @@ -0,0 +1,21 @@ + + + + + PHPMailer Test + + +
+

This is a test of PHPMailer.

+
+ PHPMailer rocks +
+

This example uses HTML.

+

Chinese text: 郵件內容為空

+

Russian text: Пустое тело сообщения

+

Armenian text: Հաղորդագրությունը դատարկ է

+

Czech text: Prázdné tělo zprávy

+

Emoji: 😂 🦄 💥 📤 📧

+
+ + diff --git a/lib/vendor/PHPMailer/examples/exceptions.phps b/lib/vendor/PHPMailer/examples/exceptions.phps new file mode 100644 index 0000000..0e941e7 --- /dev/null +++ b/lib/vendor/PHPMailer/examples/exceptions.phps @@ -0,0 +1,35 @@ +setFrom('from@example.com', 'First Last'); + //Set an alternative reply-to address + $mail->addReplyTo('replyto@example.com', 'First Last'); + //Set who the message is to be sent to + $mail->addAddress('whoto@example.com', 'John Doe'); + //Set the subject line + $mail->Subject = 'PHPMailer Exceptions test'; + //Read an HTML message body from an external file, convert referenced images to embedded, + //and convert the HTML into a basic plain-text alternative body + $mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__)); + //Replace the plain text body with one created manually + $mail->AltBody = 'This is a plain-text message body'; + //Attach an image file + $mail->addAttachment('images/phpmailer_mini.png'); + //send the message + //Note that we don't need check the response from this because it will throw an exception if it has trouble + $mail->send(); + echo "Message sent!"; +} catch (phpmailerException $e) { + echo $e->errorMessage(); //Pretty error messages from PHPMailer +} catch (Exception $e) { + echo $e->getMessage(); //Boring error messages from anything else! +} diff --git a/lib/vendor/PHPMailer/examples/gmail.phps b/lib/vendor/PHPMailer/examples/gmail.phps new file mode 100644 index 0000000..121ca70 --- /dev/null +++ b/lib/vendor/PHPMailer/examples/gmail.phps @@ -0,0 +1,99 @@ +isSMTP(); + +//Enable SMTP debugging +// 0 = off (for production use) +// 1 = client messages +// 2 = client and server messages +$mail->SMTPDebug = 2; + +//Ask for HTML-friendly debug output +$mail->Debugoutput = 'html'; + +//Set the hostname of the mail server +$mail->Host = 'smtp.gmail.com'; +// use +// $mail->Host = gethostbyname('smtp.gmail.com'); +// if your network does not support SMTP over IPv6 + +//Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission +$mail->Port = 587; + +//Set the encryption system to use - ssl (deprecated) or tls +$mail->SMTPSecure = 'tls'; + +//Whether to use SMTP authentication +$mail->SMTPAuth = true; + +//Username to use for SMTP authentication - use full email address for gmail +$mail->Username = "username@gmail.com"; + +//Password to use for SMTP authentication +$mail->Password = "yourpassword"; + +//Set who the message is to be sent from +$mail->setFrom('from@example.com', 'First Last'); + +//Set an alternative reply-to address +$mail->addReplyTo('replyto@example.com', 'First Last'); + +//Set who the message is to be sent to +$mail->addAddress('whoto@example.com', 'John Doe'); + +//Set the subject line +$mail->Subject = 'PHPMailer GMail SMTP test'; + +//Read an HTML message body from an external file, convert referenced images to embedded, +//convert HTML into a basic plain-text alternative body +$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__)); + +//Replace the plain text body with one created manually +$mail->AltBody = 'This is a plain-text message body'; + +//Attach an image file +$mail->addAttachment('images/phpmailer_mini.png'); + +//send the message, check for errors +if (!$mail->send()) { + echo "Mailer Error: " . $mail->ErrorInfo; +} else { + echo "Message sent!"; + //Section 2: IMAP + //Uncomment these to save your message in the 'Sent Mail' folder. + #if (save_mail($mail)) { + # echo "Message saved!"; + #} +} + +//Section 2: IMAP +//IMAP commands requires the PHP IMAP Extension, found at: https://php.net/manual/en/imap.setup.php +//Function to call which uses the PHP imap_*() functions to save messages: https://php.net/manual/en/book.imap.php +//You can use imap_getmailboxes($imapStream, '/imap/ssl') to get a list of available folders or labels, this can +//be useful if you are trying to get this working on a non-Gmail IMAP server. +function save_mail($mail) { + //You can change 'Sent Mail' to any other folder or tag + $path = "{imap.gmail.com:993/imap/ssl}[Gmail]/Sent Mail"; + + //Tell your server to open an IMAP connection using the same username and password as you used for SMTP + $imapStream = imap_open($path, $mail->Username, $mail->Password); + + $result = imap_append($imapStream, $path, $mail->getSentMIMEMessage()); + imap_close($imapStream); + + return $result; +} diff --git a/lib/vendor/PHPMailer/examples/gmail_xoauth.phps b/lib/vendor/PHPMailer/examples/gmail_xoauth.phps new file mode 100644 index 0000000..2aec181 --- /dev/null +++ b/lib/vendor/PHPMailer/examples/gmail_xoauth.phps @@ -0,0 +1,85 @@ +isSMTP(); + +//Enable SMTP debugging +// 0 = off (for production use) +// 1 = client messages +// 2 = client and server messages +$mail->SMTPDebug = 0; + +//Ask for HTML-friendly debug output +$mail->Debugoutput = 'html'; + +//Set the hostname of the mail server +$mail->Host = 'smtp.gmail.com'; + +//Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission +$mail->Port = 587; + +//Set the encryption system to use - ssl (deprecated) or tls +$mail->SMTPSecure = 'tls'; + +//Whether to use SMTP authentication +$mail->SMTPAuth = true; + +//Set AuthType +$mail->AuthType = 'XOAUTH2'; + +//User Email to use for SMTP authentication - user who gave consent to our app +$mail->oauthUserEmail = "from@gmail.com"; + +//Obtained From Google Developer Console +$mail->oauthClientId = "RANDOMCHARS-----duv1n2.apps.googleusercontent.com"; + +//Obtained From Google Developer Console +$mail->oauthClientSecret = "RANDOMCHARS-----lGyjPcRtvP"; + +//Obtained By running get_oauth_token.php after setting up APP in Google Developer Console. +//Set Redirect URI in Developer Console as [https/http]:////get_oauth_token.php +// eg: http://localhost/phpmail/get_oauth_token.php +$mail->oauthRefreshToken = "RANDOMCHARS-----DWxgOvPT003r-yFUV49TQYag7_Aod7y0"; + +//Set who the message is to be sent from +//For gmail, this generally needs to be the same as the user you logged in as +$mail->setFrom('from@example.com', 'First Last'); + +//Set who the message is to be sent to +$mail->addAddress('whoto@example.com', 'John Doe'); + +//Set the subject line +$mail->Subject = 'PHPMailer GMail SMTP test'; + +//Read an HTML message body from an external file, convert referenced images to embedded, +//convert HTML into a basic plain-text alternative body +$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__)); + +//Replace the plain text body with one created manually +$mail->AltBody = 'This is a plain-text message body'; + +//Attach an image file +$mail->addAttachment('images/phpmailer_mini.png'); + +//send the message, check for errors +if (!$mail->send()) { + echo "Mailer Error: " . $mail->ErrorInfo; +} else { + echo "Message sent!"; +} diff --git a/lib/vendor/PHPMailer/examples/images/phpmailer.png b/lib/vendor/PHPMailer/examples/images/phpmailer.png new file mode 100644 index 0000000..9bdd83c Binary files /dev/null and b/lib/vendor/PHPMailer/examples/images/phpmailer.png differ diff --git a/lib/vendor/PHPMailer/examples/images/phpmailer_mini.png b/lib/vendor/PHPMailer/examples/images/phpmailer_mini.png new file mode 100644 index 0000000..e6915f4 Binary files /dev/null and b/lib/vendor/PHPMailer/examples/images/phpmailer_mini.png differ diff --git a/lib/vendor/PHPMailer/examples/index.html b/lib/vendor/PHPMailer/examples/index.html new file mode 100644 index 0000000..bbb830d --- /dev/null +++ b/lib/vendor/PHPMailer/examples/index.html @@ -0,0 +1,48 @@ + + + + + PHPMailer Examples + + +

PHPMailer code examplesPHPMailer logo

+

This folder contains a collection of examples of using PHPMailer.

+

About testing email sending

+

When working on email sending code you'll find yourself worrying about what might happen if all these test emails got sent to your mailing list. The solution is to use a fake mail server, one that acts just like the real thing, but just doesn't actually send anything out. Some offer web interfaces, feedback, logging, the ability to return specific error codes, all things that are useful for testing error handling, authentication etc. Here's a selection of mail testing tools you might like to try:

+
    +
  • FakeSMTP, a Java desktop app with the ability to show an SMTP log and save messages to a folder.
  • +
  • FakeEmail, a Python-based fake mail server with a web interface.
  • +
  • smtp-sink, part of the Postfix mail server, so you probably already have this installed. This is used in the Travis-CI configuration to run PHPMailer's unit tests.
  • +
  • smtp4dev, a dummy SMTP server for Windows.
  • +
  • fakesendmail.sh, part of PHPMailer's test setup, this is a shell script that emulates sendmail for testing 'mail' or 'sendmail' methods in PHPMailer.
  • +
  • msglint, not a mail server, the IETF's MIME structure analyser checks the formatting of your messages.
  • +
+
+

Security note

+

Before running these examples you'll need to rename them with '.php' extensions. They are supplied as '.phps' files which will usually be displayed with syntax highlighting by PHP instead of running them. This prevents potential security issues with running potential spam-gateway code if you happen to deploy these code examples on a live site - please don't do that! Similarly, don't leave your passwords in these files as they will be visible to the world!

+
+

code_generator.phps

+

This script is a simple code generator - fill in the form and hit submit, and it will use when you entered to email you a message, and will also generate PHP code using your settings that you can copy and paste to use in your own apps. If you need to get going quickly, this is probably the best place to start.

+

mail.phps

+

This script is a basic example which creates an email message from an external HTML file, creates a plain text body, sets various addresses, adds an attachment and sends the message. It uses PHP's built-in mail() function which is the simplest to use, but relies on the presence of a local mail server, something which is not usually available on Windows. If you find yourself in that situation, either install a local mail server, or use a remote one and send using SMTP instead.

+

exceptions.phps

+

The same as the mail example, but shows how to use PHPMailer's optional exceptions for error handling.

+

smtp.phps

+

A simple example sending using SMTP with authentication.

+

smtp_no_auth.phps

+

A simple example sending using SMTP without authentication.

+

sendmail.phps

+

A simple example using sendmail. Sendmail is a program (usually found on Linux/BSD, OS X and other UNIX-alikes) that can be used to submit messages to a local mail server without a lengthy SMTP conversation. It's probably the fastest sending mechanism, but lacks some error reporting features. There are sendmail emulators for most popular mail servers including postfix, qmail, exim etc.

+

gmail.phps

+

Submitting email via Google's Gmail service is a popular use of PHPMailer. It's much the same as normal SMTP sending, just with some specific settings, namely using TLS encryption, authentication is enabled, and it connects to the SMTP submission port 587 on the smtp.gmail.com host. This example does all that.

+

pop_before_smtp.phps

+

Before effective SMTP authentication mechanisms were available, it was common for ISPs to use POP-before-SMTP authentication. As it implies, you authenticate using the POP3 protocol (an older protocol now mostly replaced by the far superior IMAP), and then the SMTP server will allow send access from your IP address for a short while, usually 5-15 minutes. PHPMailer includes a POP3 protocol client, so it can carry out this sequence - it's just like a normal SMTP conversation (without authentication), but connects via POP first.

+

mailing_list.phps

+

This is a somewhat naïve example of sending similar emails to a list of different addresses. It sets up a PHPMailer instance using SMTP, then connects to a MySQL database to retrieve a list of recipients. The code loops over this list, sending email to each person using their info and marks them as sent in the database. It makes use of SMTP keepalive which saves reconnecting and re-authenticating between each message.

+
+

smtp_check.phps

+

This is an example showing how to use the SMTP class by itself (without PHPMailer) to check an SMTP connection.

+
+

Most of these examples use the 'example.com' domain. This domain is reserved by IANA for illustrative purposes, as documented in RFC 2606. Don't use made-up domains like 'mydomain.com' or 'somedomain.com' in examples as someone, somewhere, probably owns them!

+ + diff --git a/lib/vendor/PHPMailer/examples/mail.phps b/lib/vendor/PHPMailer/examples/mail.phps new file mode 100644 index 0000000..8e129f4 --- /dev/null +++ b/lib/vendor/PHPMailer/examples/mail.phps @@ -0,0 +1,31 @@ +setFrom('from@example.com', 'First Last'); +//Set an alternative reply-to address +$mail->addReplyTo('replyto@example.com', 'First Last'); +//Set who the message is to be sent to +$mail->addAddress('whoto@example.com', 'John Doe'); +//Set the subject line +$mail->Subject = 'PHPMailer mail() test'; +//Read an HTML message body from an external file, convert referenced images to embedded, +//convert HTML into a basic plain-text alternative body +$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__)); +//Replace the plain text body with one created manually +$mail->AltBody = 'This is a plain-text message body'; +//Attach an image file +$mail->addAttachment('images/phpmailer_mini.png'); + +//send the message, check for errors +if (!$mail->send()) { + echo "Mailer Error: " . $mail->ErrorInfo; +} else { + echo "Message sent!"; +} diff --git a/lib/vendor/PHPMailer/examples/mailing_list.phps b/lib/vendor/PHPMailer/examples/mailing_list.phps new file mode 100644 index 0000000..8644bb5 --- /dev/null +++ b/lib/vendor/PHPMailer/examples/mailing_list.phps @@ -0,0 +1,59 @@ +isSMTP(); +$mail->Host = 'smtp.example.com'; +$mail->SMTPAuth = true; +$mail->SMTPKeepAlive = true; // SMTP connection will not close after each email sent, reduces SMTP overhead +$mail->Port = 25; +$mail->Username = 'yourname@example.com'; +$mail->Password = 'yourpassword'; +$mail->setFrom('list@example.com', 'List manager'); +$mail->addReplyTo('list@example.com', 'List manager'); + +$mail->Subject = "PHPMailer Simple database mailing list test"; + +//Same body for all messages, so set this before the sending loop +//If you generate a different body for each recipient (e.g. you're using a templating system), +//set it inside the loop +$mail->msgHTML($body); +//msgHTML also sets AltBody, but if you want a custom one, set it afterwards +$mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; + +//Connect to the database and select the recipients from your mailing list that have not yet been sent to +//You'll need to alter this to match your database +$mysql = mysqli_connect('localhost', 'username', 'password'); +mysqli_select_db($mysql, 'mydb'); +$result = mysqli_query($mysql, 'SELECT full_name, email, photo FROM mailinglist WHERE sent = false'); + +foreach ($result as $row) { //This iterator syntax only works in PHP 5.4+ + $mail->addAddress($row['email'], $row['full_name']); + if (!empty($row['photo'])) { + $mail->addStringAttachment($row['photo'], 'YourPhoto.jpg'); //Assumes the image data is stored in the DB + } + + if (!$mail->send()) { + echo "Mailer Error (" . str_replace("@", "@", $row["email"]) . ') ' . $mail->ErrorInfo . '
'; + break; //Abandon sending + } else { + echo "Message sent to :" . $row['full_name'] . ' (' . str_replace("@", "@", $row['email']) . ')
'; + //Mark it as sent in the DB + mysqli_query( + $mysql, + "UPDATE mailinglist SET sent = true WHERE email = '" . + mysqli_real_escape_string($mysql, $row['email']) . "'" + ); + } + // Clear all addresses and attachments for next loop + $mail->clearAddresses(); + $mail->clearAttachments(); +} diff --git a/lib/vendor/PHPMailer/examples/pop_before_smtp.phps b/lib/vendor/PHPMailer/examples/pop_before_smtp.phps new file mode 100644 index 0000000..164dfe8 --- /dev/null +++ b/lib/vendor/PHPMailer/examples/pop_before_smtp.phps @@ -0,0 +1,54 @@ +isSMTP(); + //Enable SMTP debugging + // 0 = off (for production use) + // 1 = client messages + // 2 = client and server messages + $mail->SMTPDebug = 2; + //Ask for HTML-friendly debug output + $mail->Debugoutput = 'html'; + //Set the hostname of the mail server + $mail->Host = "mail.example.com"; + //Set the SMTP port number - likely to be 25, 465 or 587 + $mail->Port = 25; + //Whether to use SMTP authentication + $mail->SMTPAuth = false; + //Set who the message is to be sent from + $mail->setFrom('from@example.com', 'First Last'); + //Set an alternative reply-to address + $mail->addReplyTo('replyto@example.com', 'First Last'); + //Set who the message is to be sent to + $mail->addAddress('whoto@example.com', 'John Doe'); + //Set the subject line + $mail->Subject = 'PHPMailer POP-before-SMTP test'; + //Read an HTML message body from an external file, convert referenced images to embedded, + //and convert the HTML into a basic plain-text alternative body + $mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__)); + //Replace the plain text body with one created manually + $mail->AltBody = 'This is a plain-text message body'; + //Attach an image file + $mail->addAttachment('images/phpmailer_mini.png'); + //send the message + //Note that we don't need check the response from this because it will throw an exception if it has trouble + $mail->send(); + echo "Message sent!"; +} catch (phpmailerException $e) { + echo $e->errorMessage(); //Pretty error messages from PHPMailer +} catch (Exception $e) { + echo $e->getMessage(); //Boring error messages from anything else! +} diff --git a/lib/vendor/PHPMailer/examples/scripts/XRegExp.js b/lib/vendor/PHPMailer/examples/scripts/XRegExp.js new file mode 100644 index 0000000..feb6679 --- /dev/null +++ b/lib/vendor/PHPMailer/examples/scripts/XRegExp.js @@ -0,0 +1,664 @@ +// XRegExp 1.5.1 +// (c) 2007-2012 Steven Levithan +// MIT License +// +// Provides an augmented, extensible, cross-browser implementation of regular expressions, +// including support for additional syntax, flags, and methods + +var XRegExp; + +if (XRegExp) { + // Avoid running twice, since that would break references to native globals + throw Error("can't load XRegExp twice in the same frame"); +} + +// Run within an anonymous function to protect variables and avoid new globals +(function (undefined) { + + //--------------------------------- + // Constructor + //--------------------------------- + + // Accepts a pattern and flags; returns a new, extended `RegExp` object. Differs from a native + // regular expression in that additional syntax and flags are supported and cross-browser + // syntax inconsistencies are ameliorated. `XRegExp(/regex/)` clones an existing regex and + // converts to type XRegExp + XRegExp = function (pattern, flags) { + var output = [], + currScope = XRegExp.OUTSIDE_CLASS, + pos = 0, + context, tokenResult, match, chr, regex; + + if (XRegExp.isRegExp(pattern)) { + if (flags !== undefined) + throw TypeError("can't supply flags when constructing one RegExp from another"); + return clone(pattern); + } + // Tokens become part of the regex construction process, so protect against infinite + // recursion when an XRegExp is constructed within a token handler or trigger + if (isInsideConstructor) + throw Error("can't call the XRegExp constructor within token definition functions"); + + flags = flags || ""; + context = { // `this` object for custom tokens + hasNamedCapture: false, + captureNames: [], + hasFlag: function (flag) {return flags.indexOf(flag) > -1;}, + setFlag: function (flag) {flags += flag;} + }; + + while (pos < pattern.length) { + // Check for custom tokens at the current position + tokenResult = runTokens(pattern, pos, currScope, context); + + if (tokenResult) { + output.push(tokenResult.output); + pos += (tokenResult.match[0].length || 1); + } else { + // Check for native multicharacter metasequences (excluding character classes) at + // the current position + if (match = nativ.exec.call(nativeTokens[currScope], pattern.slice(pos))) { + output.push(match[0]); + pos += match[0].length; + } else { + chr = pattern.charAt(pos); + if (chr === "[") + currScope = XRegExp.INSIDE_CLASS; + else if (chr === "]") + currScope = XRegExp.OUTSIDE_CLASS; + // Advance position one character + output.push(chr); + pos++; + } + } + } + + regex = RegExp(output.join(""), nativ.replace.call(flags, flagClip, "")); + regex._xregexp = { + source: pattern, + captureNames: context.hasNamedCapture ? context.captureNames : null + }; + return regex; + }; + + + //--------------------------------- + // Public properties + //--------------------------------- + + XRegExp.version = "1.5.1"; + + // Token scope bitflags + XRegExp.INSIDE_CLASS = 1; + XRegExp.OUTSIDE_CLASS = 2; + + + //--------------------------------- + // Private variables + //--------------------------------- + + var replacementToken = /\$(?:(\d\d?|[$&`'])|{([$\w]+)})/g, + flagClip = /[^gimy]+|([\s\S])(?=[\s\S]*\1)/g, // Nonnative and duplicate flags + quantifier = /^(?:[?*+]|{\d+(?:,\d*)?})\??/, + isInsideConstructor = false, + tokens = [], + // Copy native globals for reference ("native" is an ES3 reserved keyword) + nativ = { + exec: RegExp.prototype.exec, + test: RegExp.prototype.test, + match: String.prototype.match, + replace: String.prototype.replace, + split: String.prototype.split + }, + compliantExecNpcg = nativ.exec.call(/()??/, "")[1] === undefined, // check `exec` handling of nonparticipating capturing groups + compliantLastIndexIncrement = function () { + var x = /^/g; + nativ.test.call(x, ""); + return !x.lastIndex; + }(), + hasNativeY = RegExp.prototype.sticky !== undefined, + nativeTokens = {}; + + // `nativeTokens` match native multicharacter metasequences only (including deprecated octals, + // excluding character classes) + nativeTokens[XRegExp.INSIDE_CLASS] = /^(?:\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\dA-Fa-f]{2}|u[\dA-Fa-f]{4}|c[A-Za-z]|[\s\S]))/; + nativeTokens[XRegExp.OUTSIDE_CLASS] = /^(?:\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\d*|x[\dA-Fa-f]{2}|u[\dA-Fa-f]{4}|c[A-Za-z]|[\s\S])|\(\?[:=!]|[?*+]\?|{\d+(?:,\d*)?}\??)/; + + + //--------------------------------- + // Public methods + //--------------------------------- + + // Lets you extend or change XRegExp syntax and create custom flags. This is used internally by + // the XRegExp library and can be used to create XRegExp plugins. This function is intended for + // users with advanced knowledge of JavaScript's regular expression syntax and behavior. It can + // be disabled by `XRegExp.freezeTokens` + XRegExp.addToken = function (regex, handler, scope, trigger) { + tokens.push({ + pattern: clone(regex, "g" + (hasNativeY ? "y" : "")), + handler: handler, + scope: scope || XRegExp.OUTSIDE_CLASS, + trigger: trigger || null + }); + }; + + // Accepts a pattern and flags; returns an extended `RegExp` object. If the pattern and flag + // combination has previously been cached, the cached copy is returned; otherwise the newly + // created regex is cached + XRegExp.cache = function (pattern, flags) { + var key = pattern + "/" + (flags || ""); + return XRegExp.cache[key] || (XRegExp.cache[key] = XRegExp(pattern, flags)); + }; + + // Accepts a `RegExp` instance; returns a copy with the `/g` flag set. The copy has a fresh + // `lastIndex` (set to zero). If you want to copy a regex without forcing the `global` + // property, use `XRegExp(regex)`. Do not use `RegExp(regex)` because it will not preserve + // special properties required for named capture + XRegExp.copyAsGlobal = function (regex) { + return clone(regex, "g"); + }; + + // Accepts a string; returns the string with regex metacharacters escaped. The returned string + // can safely be used at any point within a regex to match the provided literal string. Escaped + // characters are [ ] { } ( ) * + ? - . , \ ^ $ | # and whitespace + XRegExp.escape = function (str) { + return str.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); + }; + + // Accepts a string to search, regex to search with, position to start the search within the + // string (default: 0), and an optional Boolean indicating whether matches must start at-or- + // after the position or at the specified position only. This function ignores the `lastIndex` + // of the provided regex in its own handling, but updates the property for compatibility + XRegExp.execAt = function (str, regex, pos, anchored) { + var r2 = clone(regex, "g" + ((anchored && hasNativeY) ? "y" : "")), + match; + r2.lastIndex = pos = pos || 0; + match = r2.exec(str); // Run the altered `exec` (required for `lastIndex` fix, etc.) + if (anchored && match && match.index !== pos) + match = null; + if (regex.global) + regex.lastIndex = match ? r2.lastIndex : 0; + return match; + }; + + // Breaks the unrestorable link to XRegExp's private list of tokens, thereby preventing + // syntax and flag changes. Should be run after XRegExp and any plugins are loaded + XRegExp.freezeTokens = function () { + XRegExp.addToken = function () { + throw Error("can't run addToken after freezeTokens"); + }; + }; + + // Accepts any value; returns a Boolean indicating whether the argument is a `RegExp` object. + // Note that this is also `true` for regex literals and regexes created by the `XRegExp` + // constructor. This works correctly for variables created in another frame, when `instanceof` + // and `constructor` checks would fail to work as intended + XRegExp.isRegExp = function (o) { + return Object.prototype.toString.call(o) === "[object RegExp]"; + }; + + // Executes `callback` once per match within `str`. Provides a simpler and cleaner way to + // iterate over regex matches compared to the traditional approaches of subverting + // `String.prototype.replace` or repeatedly calling `exec` within a `while` loop + XRegExp.iterate = function (str, regex, callback, context) { + var r2 = clone(regex, "g"), + i = -1, match; + while (match = r2.exec(str)) { // Run the altered `exec` (required for `lastIndex` fix, etc.) + if (regex.global) + regex.lastIndex = r2.lastIndex; // Doing this to follow expectations if `lastIndex` is checked within `callback` + callback.call(context, match, ++i, str, regex); + if (r2.lastIndex === match.index) + r2.lastIndex++; + } + if (regex.global) + regex.lastIndex = 0; + }; + + // Accepts a string and an array of regexes; returns the result of using each successive regex + // to search within the matches of the previous regex. The array of regexes can also contain + // objects with `regex` and `backref` properties, in which case the named or numbered back- + // references specified are passed forward to the next regex or returned. E.g.: + // var xregexpImgFileNames = XRegExp.matchChain(html, [ + // {regex: /]+)>/i, backref: 1}, // tag attributes + // {regex: XRegExp('(?ix) \\s src=" (? [^"]+ )'), backref: "src"}, // src attribute values + // {regex: XRegExp("^http://xregexp\\.com(/[^#?]+)", "i"), backref: 1}, // xregexp.com paths + // /[^\/]+$/ // filenames (strip directory paths) + // ]); + XRegExp.matchChain = function (str, chain) { + return function recurseChain (values, level) { + var item = chain[level].regex ? chain[level] : {regex: chain[level]}, + regex = clone(item.regex, "g"), + matches = [], i; + for (i = 0; i < values.length; i++) { + XRegExp.iterate(values[i], regex, function (match) { + matches.push(item.backref ? (match[item.backref] || "") : match[0]); + }); + } + return ((level === chain.length - 1) || !matches.length) ? + matches : recurseChain(matches, level + 1); + }([str], 0); + }; + + + //--------------------------------- + // New RegExp prototype methods + //--------------------------------- + + // Accepts a context object and arguments array; returns the result of calling `exec` with the + // first value in the arguments array. the context is ignored but is accepted for congruity + // with `Function.prototype.apply` + RegExp.prototype.apply = function (context, args) { + return this.exec(args[0]); + }; + + // Accepts a context object and string; returns the result of calling `exec` with the provided + // string. the context is ignored but is accepted for congruity with `Function.prototype.call` + RegExp.prototype.call = function (context, str) { + return this.exec(str); + }; + + + //--------------------------------- + // Overridden native methods + //--------------------------------- + + // Adds named capture support (with backreferences returned as `result.name`), and fixes two + // cross-browser issues per ES3: + // - Captured values for nonparticipating capturing groups should be returned as `undefined`, + // rather than the empty string. + // - `lastIndex` should not be incremented after zero-length matches. + RegExp.prototype.exec = function (str) { + var match, name, r2, origLastIndex; + if (!this.global) + origLastIndex = this.lastIndex; + match = nativ.exec.apply(this, arguments); + if (match) { + // Fix browsers whose `exec` methods don't consistently return `undefined` for + // nonparticipating capturing groups + if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) { + r2 = RegExp(this.source, nativ.replace.call(getNativeFlags(this), "g", "")); + // Using `str.slice(match.index)` rather than `match[0]` in case lookahead allowed + // matching due to characters outside the match + nativ.replace.call((str + "").slice(match.index), r2, function () { + for (var i = 1; i < arguments.length - 2; i++) { + if (arguments[i] === undefined) + match[i] = undefined; + } + }); + } + // Attach named capture properties + if (this._xregexp && this._xregexp.captureNames) { + for (var i = 1; i < match.length; i++) { + name = this._xregexp.captureNames[i - 1]; + if (name) + match[name] = match[i]; + } + } + // Fix browsers that increment `lastIndex` after zero-length matches + if (!compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index)) + this.lastIndex--; + } + if (!this.global) + this.lastIndex = origLastIndex; // Fix IE, Opera bug (last tested IE 9.0.5, Opera 11.61 on Windows) + return match; + }; + + // Fix browser bugs in native method + RegExp.prototype.test = function (str) { + // Use the native `exec` to skip some processing overhead, even though the altered + // `exec` would take care of the `lastIndex` fixes + var match, origLastIndex; + if (!this.global) + origLastIndex = this.lastIndex; + match = nativ.exec.call(this, str); + // Fix browsers that increment `lastIndex` after zero-length matches + if (match && !compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index)) + this.lastIndex--; + if (!this.global) + this.lastIndex = origLastIndex; // Fix IE, Opera bug (last tested IE 9.0.5, Opera 11.61 on Windows) + return !!match; + }; + + // Adds named capture support and fixes browser bugs in native method + String.prototype.match = function (regex) { + if (!XRegExp.isRegExp(regex)) + regex = RegExp(regex); // Native `RegExp` + if (regex.global) { + var result = nativ.match.apply(this, arguments); + regex.lastIndex = 0; // Fix IE bug + return result; + } + return regex.exec(this); // Run the altered `exec` + }; + + // Adds support for `${n}` tokens for named and numbered backreferences in replacement text, + // and provides named backreferences to replacement functions as `arguments[0].name`. Also + // fixes cross-browser differences in replacement text syntax when performing a replacement + // using a nonregex search value, and the value of replacement regexes' `lastIndex` property + // during replacement iterations. Note that this doesn't support SpiderMonkey's proprietary + // third (`flags`) parameter + String.prototype.replace = function (search, replacement) { + var isRegex = XRegExp.isRegExp(search), + captureNames, result, str, origLastIndex; + + // There are too many combinations of search/replacement types/values and browser bugs that + // preclude passing to native `replace`, so don't try + //if (...) + // return nativ.replace.apply(this, arguments); + + if (isRegex) { + if (search._xregexp) + captureNames = search._xregexp.captureNames; // Array or `null` + if (!search.global) + origLastIndex = search.lastIndex; + } else { + search = search + ""; // Type conversion + } + + if (Object.prototype.toString.call(replacement) === "[object Function]") { + result = nativ.replace.call(this + "", search, function () { + if (captureNames) { + // Change the `arguments[0]` string primitive to a String object which can store properties + arguments[0] = new String(arguments[0]); + // Store named backreferences on `arguments[0]` + for (var i = 0; i < captureNames.length; i++) { + if (captureNames[i]) + arguments[0][captureNames[i]] = arguments[i + 1]; + } + } + // Update `lastIndex` before calling `replacement` (fix browsers) + if (isRegex && search.global) + search.lastIndex = arguments[arguments.length - 2] + arguments[0].length; + return replacement.apply(null, arguments); + }); + } else { + str = this + ""; // Type conversion, so `args[args.length - 1]` will be a string (given nonstring `this`) + result = nativ.replace.call(str, search, function () { + var args = arguments; // Keep this function's `arguments` available through closure + return nativ.replace.call(replacement + "", replacementToken, function ($0, $1, $2) { + // Numbered backreference (without delimiters) or special variable + if ($1) { + switch ($1) { + case "$": return "$"; + case "&": return args[0]; + case "`": return args[args.length - 1].slice(0, args[args.length - 2]); + case "'": return args[args.length - 1].slice(args[args.length - 2] + args[0].length); + // Numbered backreference + default: + // What does "$10" mean? + // - Backreference 10, if 10 or more capturing groups exist + // - Backreference 1 followed by "0", if 1-9 capturing groups exist + // - Otherwise, it's the string "$10" + // Also note: + // - Backreferences cannot be more than two digits (enforced by `replacementToken`) + // - "$01" is equivalent to "$1" if a capturing group exists, otherwise it's the string "$01" + // - There is no "$0" token ("$&" is the entire match) + var literalNumbers = ""; + $1 = +$1; // Type conversion; drop leading zero + if (!$1) // `$1` was "0" or "00" + return $0; + while ($1 > args.length - 3) { + literalNumbers = String.prototype.slice.call($1, -1) + literalNumbers; + $1 = Math.floor($1 / 10); // Drop the last digit + } + return ($1 ? args[$1] || "" : "$") + literalNumbers; + } + // Named backreference or delimited numbered backreference + } else { + // What does "${n}" mean? + // - Backreference to numbered capture n. Two differences from "$n": + // - n can be more than two digits + // - Backreference 0 is allowed, and is the entire match + // - Backreference to named capture n, if it exists and is not a number overridden by numbered capture + // - Otherwise, it's the string "${n}" + var n = +$2; // Type conversion; drop leading zeros + if (n <= args.length - 3) + return args[n]; + n = captureNames ? indexOf(captureNames, $2) : -1; + return n > -1 ? args[n + 1] : $0; + } + }); + }); + } + + if (isRegex) { + if (search.global) + search.lastIndex = 0; // Fix IE, Safari bug (last tested IE 9.0.5, Safari 5.1.2 on Windows) + else + search.lastIndex = origLastIndex; // Fix IE, Opera bug (last tested IE 9.0.5, Opera 11.61 on Windows) + } + + return result; + }; + + // A consistent cross-browser, ES3 compliant `split` + String.prototype.split = function (s /* separator */, limit) { + // If separator `s` is not a regex, use the native `split` + if (!XRegExp.isRegExp(s)) + return nativ.split.apply(this, arguments); + + var str = this + "", // Type conversion + output = [], + lastLastIndex = 0, + match, lastLength; + + // Behavior for `limit`: if it's... + // - `undefined`: No limit + // - `NaN` or zero: Return an empty array + // - A positive number: Use `Math.floor(limit)` + // - A negative number: No limit + // - Other: Type-convert, then use the above rules + if (limit === undefined || +limit < 0) { + limit = Infinity; + } else { + limit = Math.floor(+limit); + if (!limit) + return []; + } + + // This is required if not `s.global`, and it avoids needing to set `s.lastIndex` to zero + // and restore it to its original value when we're done using the regex + s = XRegExp.copyAsGlobal(s); + + while (match = s.exec(str)) { // Run the altered `exec` (required for `lastIndex` fix, etc.) + if (s.lastIndex > lastLastIndex) { + output.push(str.slice(lastLastIndex, match.index)); + + if (match.length > 1 && match.index < str.length) + Array.prototype.push.apply(output, match.slice(1)); + + lastLength = match[0].length; + lastLastIndex = s.lastIndex; + + if (output.length >= limit) + break; + } + + if (s.lastIndex === match.index) + s.lastIndex++; + } + + if (lastLastIndex === str.length) { + if (!nativ.test.call(s, "") || lastLength) + output.push(""); + } else { + output.push(str.slice(lastLastIndex)); + } + + return output.length > limit ? output.slice(0, limit) : output; + }; + + + //--------------------------------- + // Private helper functions + //--------------------------------- + + // Supporting function for `XRegExp`, `XRegExp.copyAsGlobal`, etc. Returns a copy of a `RegExp` + // instance with a fresh `lastIndex` (set to zero), preserving properties required for named + // capture. Also allows adding new flags in the process of copying the regex + function clone (regex, additionalFlags) { + if (!XRegExp.isRegExp(regex)) + throw TypeError("type RegExp expected"); + var x = regex._xregexp; + regex = XRegExp(regex.source, getNativeFlags(regex) + (additionalFlags || "")); + if (x) { + regex._xregexp = { + source: x.source, + captureNames: x.captureNames ? x.captureNames.slice(0) : null + }; + } + return regex; + } + + function getNativeFlags (regex) { + return (regex.global ? "g" : "") + + (regex.ignoreCase ? "i" : "") + + (regex.multiline ? "m" : "") + + (regex.extended ? "x" : "") + // Proposed for ES4; included in AS3 + (regex.sticky ? "y" : ""); + } + + function runTokens (pattern, index, scope, context) { + var i = tokens.length, + result, match, t; + // Protect against constructing XRegExps within token handler and trigger functions + isInsideConstructor = true; + // Must reset `isInsideConstructor`, even if a `trigger` or `handler` throws + try { + while (i--) { // Run in reverse order + t = tokens[i]; + if ((scope & t.scope) && (!t.trigger || t.trigger.call(context))) { + t.pattern.lastIndex = index; + match = t.pattern.exec(pattern); // Running the altered `exec` here allows use of named backreferences, etc. + if (match && match.index === index) { + result = { + output: t.handler.call(context, match, scope), + match: match + }; + break; + } + } + } + } catch (err) { + throw err; + } finally { + isInsideConstructor = false; + } + return result; + } + + function indexOf (array, item, from) { + if (Array.prototype.indexOf) // Use the native array method if available + return array.indexOf(item, from); + for (var i = from || 0; i < array.length; i++) { + if (array[i] === item) + return i; + } + return -1; + } + + + //--------------------------------- + // Built-in tokens + //--------------------------------- + + // Augment XRegExp's regular expression syntax and flags. Note that when adding tokens, the + // third (`scope`) argument defaults to `XRegExp.OUTSIDE_CLASS` + + // Comment pattern: (?# ) + XRegExp.addToken( + /\(\?#[^)]*\)/, + function (match) { + // Keep tokens separated unless the following token is a quantifier + return nativ.test.call(quantifier, match.input.slice(match.index + match[0].length)) ? "" : "(?:)"; + } + ); + + // Capturing group (match the opening parenthesis only). + // Required for support of named capturing groups + XRegExp.addToken( + /\((?!\?)/, + function () { + this.captureNames.push(null); + return "("; + } + ); + + // Named capturing group (match the opening delimiter only): (? + XRegExp.addToken( + /\(\?<([$\w]+)>/, + function (match) { + this.captureNames.push(match[1]); + this.hasNamedCapture = true; + return "("; + } + ); + + // Named backreference: \k + XRegExp.addToken( + /\\k<([\w$]+)>/, + function (match) { + var index = indexOf(this.captureNames, match[1]); + // Keep backreferences separate from subsequent literal numbers. Preserve back- + // references to named groups that are undefined at this point as literal strings + return index > -1 ? + "\\" + (index + 1) + (isNaN(match.input.charAt(match.index + match[0].length)) ? "" : "(?:)") : + match[0]; + } + ); + + // Empty character class: [] or [^] + XRegExp.addToken( + /\[\^?]/, + function (match) { + // For cross-browser compatibility with ES3, convert [] to \b\B and [^] to [\s\S]. + // (?!) should work like \b\B, but is unreliable in Firefox + return match[0] === "[]" ? "\\b\\B" : "[\\s\\S]"; + } + ); + + // Mode modifier at the start of the pattern only, with any combination of flags imsx: (?imsx) + // Does not support x(?i), (?-i), (?i-m), (?i: ), (?i)(?m), etc. + XRegExp.addToken( + /^\(\?([imsx]+)\)/, + function (match) { + this.setFlag(match[1]); + return ""; + } + ); + + // Whitespace and comments, in free-spacing (aka extended) mode only + XRegExp.addToken( + /(?:\s+|#.*)+/, + function (match) { + // Keep tokens separated unless the following token is a quantifier + return nativ.test.call(quantifier, match.input.slice(match.index + match[0].length)) ? "" : "(?:)"; + }, + XRegExp.OUTSIDE_CLASS, + function () {return this.hasFlag("x");} + ); + + // Dot, in dotall (aka singleline) mode only + XRegExp.addToken( + /\./, + function () {return "[\\s\\S]";}, + XRegExp.OUTSIDE_CLASS, + function () {return this.hasFlag("s");} + ); + + + //--------------------------------- + // Backward compatibility + //--------------------------------- + + // Uncomment the following block for compatibility with XRegExp 1.0-1.2: + /* + XRegExp.matchWithinChain = XRegExp.matchChain; + RegExp.prototype.addFlags = function (s) {return clone(this, s);}; + RegExp.prototype.execAll = function (s) {var r = []; XRegExp.iterate(s, this, function (m) {r.push(m);}); return r;}; + RegExp.prototype.forEachExec = function (s, f, c) {return XRegExp.iterate(s, this, f, c);}; + RegExp.prototype.validate = function (s) {var r = RegExp("^(?:" + this.source + ")$(?!\\s)", getNativeFlags(this)); if (this.global) this.lastIndex = 0; return s.search(r) === 0;}; + */ + +})(); + diff --git a/lib/vendor/PHPMailer/examples/scripts/shAutoloader.js b/lib/vendor/PHPMailer/examples/scripts/shAutoloader.js new file mode 100644 index 0000000..9f5942e --- /dev/null +++ b/lib/vendor/PHPMailer/examples/scripts/shAutoloader.js @@ -0,0 +1,122 @@ +(function() { + +var sh = SyntaxHighlighter; + +/** + * Provides functionality to dynamically load only the brushes that a needed to render the current page. + * + * There are two syntaxes that autoload understands. For example: + * + * SyntaxHighlighter.autoloader( + * [ 'applescript', 'Scripts/shBrushAppleScript.js' ], + * [ 'actionscript3', 'as3', 'Scripts/shBrushAS3.js' ] + * ); + * + * or a more easily comprehendable one: + * + * SyntaxHighlighter.autoloader( + * 'applescript Scripts/shBrushAppleScript.js', + * 'actionscript3 as3 Scripts/shBrushAS3.js' + * ); + */ +sh.autoloader = function() +{ + var list = arguments, + elements = sh.findElements(), + brushes = {}, + scripts = {}, + all = SyntaxHighlighter.all, + allCalled = false, + allParams = null, + i + ; + + SyntaxHighlighter.all = function(params) + { + allParams = params; + allCalled = true; + }; + + function addBrush(aliases, url) + { + for (var i = 0; i < aliases.length; i++) + brushes[aliases[i]] = url; + }; + + function getAliases(item) + { + return item.pop + ? item + : item.split(/\s+/) + ; + } + + // create table of aliases and script urls + for (i = 0; i < list.length; i++) + { + var aliases = getAliases(list[i]), + url = aliases.pop() + ; + + addBrush(aliases, url); + } + + // dynamically add + + + \ No newline at end of file diff --git a/www/include/vendor/pdfjs/web/locale/ach/viewer.properties b/www/include/vendor/pdfjs/web/locale/ach/viewer.properties new file mode 100644 index 0000000..2d04fd0 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/ach/viewer.properties @@ -0,0 +1,200 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Pot buk mukato +previous_label=Mukato +next.title=Pot buk malubo +next_label=Malubo + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Pot buk +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=pi {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} me {{pagesCount}}) + +zoom_out.title=Jwik Matidi +zoom_out_label=Jwik Matidi +zoom_in.title=Kwot Madit +zoom_in_label=Kwot Madit +zoom.title=Kwoti +presentation_mode.title=Lokke i kit me tyer +presentation_mode_label=Kit me tyer +open_file.title=Yab Pwail +open_file_label=Yab +print.title=Go +print_label=Go +download.title=Gam +download_label=Gam +bookmark.title=Neno ma kombedi (lok onyo yab i dirica manyen) +bookmark_label=Neno ma kombedi + +# Secondary toolbar and context menu +tools.title=Gintic +tools_label=Gintic +first_page.title=Cit i pot buk mukwongo +first_page_label=Cit i pot buk mukwongo +last_page.title=Cit i pot buk magiko +last_page_label=Cit i pot buk magiko +page_rotate_cw.title=Wire i tung lacuc +page_rotate_cw_label=Wire i tung lacuc +page_rotate_ccw.title=Wire i tung lacam +page_rotate_ccw_label=Wire i tung lacam + +cursor_text_select_tool.title=Cak gitic me yero coc +cursor_text_select_tool_label=Gitic me yero coc +cursor_hand_tool.title=Cak gitic me cing +cursor_hand_tool_label=Gitic cing + + + +# Document properties dialog box +document_properties.title=Jami me gin acoya… +document_properties_label=Jami me gin acoya… +document_properties_file_name=Nying pwail: +document_properties_file_size=Dit pa pwail: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Wiye: +document_properties_author=Ngat mucoyo: +document_properties_subject=Subjek: +document_properties_keywords=Lok mapire tek: +document_properties_creation_date=Nino dwe me cwec: +document_properties_modification_date=Nino dwe me yub: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Lacwec: +document_properties_producer=Layub PDF: +document_properties_version=Kit PDF: +document_properties_page_count=Kwan me pot buk: +document_properties_page_size=Dit pa potbuk: +document_properties_page_size_unit_inches=i +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=atir +document_properties_page_size_orientation_landscape=arii +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Waraga +document_properties_page_size_name_legal=Cik +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized_yes=Eyo +document_properties_linearized_no=Pe +document_properties_close=Lor + +print_progress_message=Yubo coc me agoya… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Juki + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Lok gintic ma inget +toggle_sidebar_label=Lok gintic ma inget +document_outline.title=Nyut Wiyewiye me Gin acoya (dii-kiryo me yaro/kano jami weng) +document_outline_label=Pek pa gin acoya +attachments.title=Nyut twec +attachments_label=Twec +thumbs.title=Nyut cal +thumbs_label=Cal +findbar.title=Nong iye gin acoya +findbar_label=Nong + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Pot buk {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Cal me pot buk {{page}} + +# Find panel button title and messages +find_input.title=Nong +find_input.placeholder=Nong i dokumen… +find_previous.title=Nong timme pa lok mukato +find_previous_label=Mukato +find_next.title=Nong timme pa lok malubo +find_next_label=Malubo +find_highlight=Wer weng +find_match_case_label=Lok marwate +find_reached_top=Oo iwi gin acoya, omede ki i tere +find_reached_bottom=Oo i agiki me gin acoya, omede ki iwiye +find_not_found=Lok pe ononge + +# Error panel labels +error_more_info=Ngec Mukene +error_less_info=Ngec Manok +error_close=Lor +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Kwena: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Can kikore {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Pwail: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Rek: {{line}} +rendering_error=Bal otime i kare me nyuto pot buk. + +# Predefined zoom values +page_scale_width=Lac me iye pot buk +page_scale_fit=Porre me pot buk +page_scale_auto=Kwot pire kene +page_scale_actual=Dite kikome +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=Bal otime kun cano PDF. +invalid_file_error=Pwail me PDF ma pe atir onyo obale woko. +missing_file_error=Pwail me PDF tye ka rem. +unexpected_response_error=Lagam mape kigeno pa lapok tic. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Lok angea manok] +password_label=Ket mung me donyo me yabo pwail me PDF man. +password_invalid=Mung me donyo pe atir. Tim ber i tem doki. +password_ok=OK +password_cancel=Juki + +printing_not_supported=Ciko: Layeny ma pe teno goyo liweng. +printing_not_ready=Ciko: PDF pe ocane weng me agoya. +web_fonts_disabled=Kijuko dit pa coc me kakube woko: pe romo tic ki dit pa coc me PDF ma kiketo i kine. + diff --git a/www/include/vendor/pdfjs/web/locale/af/viewer.properties b/www/include/vendor/pdfjs/web/locale/af/viewer.properties new file mode 100644 index 0000000..7c8e485 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/af/viewer.properties @@ -0,0 +1,177 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Vorige bladsy +previous_label=Vorige +next.title=Volgende bladsy +next_label=Volgende + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Bladsy +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=van {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} van {{pagesCount}}) + +zoom_out.title=Zoem uit +zoom_out_label=Zoem uit +zoom_in.title=Zoem in +zoom_in_label=Zoem in +zoom.title=Zoem +presentation_mode.title=Wissel na voorleggingsmodus +presentation_mode_label=Voorleggingsmodus +open_file.title=Open lêer +open_file_label=Open +print.title=Druk +print_label=Druk +download.title=Laai af +download_label=Laai af +bookmark.title=Huidige aansig (kopieer of open in nuwe venster) +bookmark_label=Huidige aansig + +# Secondary toolbar and context menu +tools.title=Nutsgoed +tools_label=Nutsgoed +first_page.title=Gaan na eerste bladsy +first_page_label=Gaan na eerste bladsy +last_page.title=Gaan na laaste bladsy +last_page_label=Gaan na laaste bladsy +page_rotate_cw.title=Roteer kloksgewys +page_rotate_cw_label=Roteer kloksgewys +page_rotate_ccw.title=Roteer anti-kloksgewys +page_rotate_ccw_label=Roteer anti-kloksgewys + +cursor_text_select_tool.title=Aktiveer gereedskap om teks te merk +cursor_text_select_tool_label=Teksmerkgereedskap +cursor_hand_tool.title=Aktiveer handjie +cursor_hand_tool_label=Handjie + +# Document properties dialog box +document_properties.title=Dokumenteienskappe… +document_properties_label=Dokumenteienskappe… +document_properties_file_name=Lêernaam: +document_properties_file_size=Lêergrootte: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} kG ({{size_b}} grepe) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MG ({{size_b}} grepe) +document_properties_title=Titel: +document_properties_author=Outeur: +document_properties_subject=Onderwerp: +document_properties_keywords=Sleutelwoorde: +document_properties_creation_date=Skeppingsdatum: +document_properties_modification_date=Wysigingsdatum: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Skepper: +document_properties_producer=PDF-vervaardiger: +document_properties_version=PDF-weergawe: +document_properties_page_count=Aantal bladsye: +document_properties_close=Sluit + +print_progress_message=Berei tans dokument voor om te druk… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Kanselleer + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Sypaneel aan/af +toggle_sidebar_label=Sypaneel aan/af +document_outline.title=Wys dokumentskema (dubbelklik om alle items oop/toe te vou) +document_outline_label=Dokumentoorsig +attachments.title=Wys aanhegsels +attachments_label=Aanhegsels +thumbs.title=Wys duimnaels +thumbs_label=Duimnaels +findbar.title=Soek in dokument +findbar_label=Vind + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Bladsy {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Duimnael van bladsy {{page}} + +# Find panel button title and messages +find_input.title=Vind +find_input.placeholder=Soek in dokument… +find_previous.title=Vind die vorige voorkoms van die frase +find_previous_label=Vorige +find_next.title=Vind die volgende voorkoms van die frase +find_next_label=Volgende +find_highlight=Verlig almal +find_match_case_label=Kassensitief +find_reached_top=Bokant van dokument is bereik; gaan voort van onder af +find_reached_bottom=Einde van dokument is bereik; gaan voort van bo af +find_not_found=Frase nie gevind nie + +# Error panel labels +error_more_info=Meer inligting +error_less_info=Minder inligting +error_close=Sluit +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (ID: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Boodskap: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stapel: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Lêer: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Lyn: {{line}} +rendering_error='n Fout het voorgekom toe die bladsy weergegee is. + +# Predefined zoom values +page_scale_width=Bladsywydte +page_scale_fit=Pas bladsy +page_scale_auto=Outomatiese zoem +page_scale_actual=Werklike grootte +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error='n Fout het voorgekom met die laai van die PDF. +invalid_file_error=Ongeldige of korrupte PDF-lêer. +missing_file_error=PDF-lêer is weg. +unexpected_response_error=Onverwagse antwoord van bediener. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}}-annotasie] +password_label=Gee die wagwoord om dié PDF-lêer mee te open. +password_invalid=Ongeldige wagwoord. Probeer gerus weer. +password_ok=OK +password_cancel=Kanselleer + +printing_not_supported=Waarskuwing: Dié blaaier ondersteun nie drukwerk ten volle nie. +printing_not_ready=Waarskuwing: Die PDF is nog nie volledig gelaai vir drukwerk nie. +web_fonts_disabled=Webfonte is gedeaktiveer: kan nie PDF-fonte wat ingebed is, gebruik nie. + diff --git a/www/include/vendor/pdfjs/web/locale/an/viewer.properties b/www/include/vendor/pdfjs/web/locale/an/viewer.properties new file mode 100644 index 0000000..a33eb65 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/an/viewer.properties @@ -0,0 +1,243 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Pachina anterior +previous_label=Anterior +next.title=Pachina siguient +next_label=Siguient + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Pachina +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=de {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} de {{pagesCount}}) + +zoom_out.title=Achiquir +zoom_out_label=Achiquir +zoom_in.title=Agrandir +zoom_in_label=Agrandir +zoom.title=Grandaria +presentation_mode.title=Cambear t'o modo de presentación +presentation_mode_label=Modo de presentación +open_file.title=Ubrir o fichero +open_file_label=Ubrir +print.title=Imprentar +print_label=Imprentar +download.title=Descargar +download_label=Descargar +bookmark.title=Vista actual (copiar u ubrir en una nueva finestra) +bookmark_label=Vista actual + +# Secondary toolbar and context menu +tools.title=Ferramientas +tools_label=Ferramientas +first_page.title=Ir ta la primer pachina +first_page_label=Ir ta la primer pachina +last_page.title=Ir ta la zaguer pachina +last_page_label=Ir ta la zaguer pachina +page_rotate_cw.title=Chirar enta la dreita +page_rotate_cw_label=Chira enta la dreita +page_rotate_ccw.title=Chirar enta la zurda +page_rotate_ccw_label=Chirar enta la zurda + +cursor_text_select_tool.title=Activar la ferramienta de selección de texto +cursor_text_select_tool_label=Ferramienta de selección de texto +cursor_hand_tool.title=Activar la ferramienta man +cursor_hand_tool_label=Ferramienta man + +scroll_vertical.title=Usar lo desplazamiento vertical +scroll_vertical_label=Desplazamiento vertical +scroll_horizontal.title=Usar lo desplazamiento horizontal +scroll_horizontal_label=Desplazamiento horizontal +scroll_wrapped.title=Activaar lo desplazamiento contino +scroll_wrapped_label=Desplazamiento contino + +spread_none.title=No unir vistas de pachinas +spread_none_label=Una pachina nomás +spread_odd.title=Mostrar vista de pachinas, con as impars a la zurda +spread_odd_label=Doble pachina, impar a la zurda +spread_even.title=Amostrar vista de pachinas, con as pars a la zurda +spread_even_label=Doble pachina, para a la zurda + +# Document properties dialog box +document_properties.title=Propiedatz d'o documento... +document_properties_label=Propiedatz d'o documento... +document_properties_file_name=Nombre de fichero: +document_properties_file_size=Grandaria d'o fichero: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Titol: +document_properties_author=Autor: +document_properties_subject=Afer: +document_properties_keywords=Parolas clau: +document_properties_creation_date=Calendata de creyación: +document_properties_modification_date=Calendata de modificación: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Creyador: +document_properties_producer=Creyador de PDF: +document_properties_version=Versión de PDF: +document_properties_page_count=Numero de pachinas: +document_properties_page_size=Mida de pachina: +document_properties_page_size_unit_inches=pulgadas +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=vertical +document_properties_page_size_orientation_landscape=horizontal +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Carta +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} x {{height}} {{unit}} {{orientation}} +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} x {{height}} {{unit}} {{name}}, {{orientation}} +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Vista web rapida: +document_properties_linearized_yes=Sí +document_properties_linearized_no=No +document_properties_close=Zarrar + +print_progress_message=Se ye preparando la documentación pa imprentar… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cancelar + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Amostrar u amagar a barra lateral +toggle_sidebar_notification2.title=Cambiar barra lateral (lo documento contiene esquema/adchuntos/capas) +toggle_sidebar_label=Amostrar a barra lateral +document_outline.title=Amostrar esquema d'o documento (fer doble clic pa expandir/compactar totz los items) +document_outline_label=Esquema d'o documento +attachments.title=Amostrar os adchuntos +attachments_label=Adchuntos +layers.title=Amostrar capas (doble clic para reiniciar totas las capas a lo estau per defecto) +layers_label=Capas +thumbs.title=Amostrar as miniaturas +thumbs_label=Miniaturas +findbar.title=Trobar en o documento +findbar_label=Trobar + +additional_layers=Capas adicionals +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Pachina {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura d'a pachina {{page}} + +# Find panel button title and messages +find_input.title=Trobar +find_input.placeholder=Trobar en o documento… +find_previous.title=Trobar l'anterior coincidencia d'a frase +find_previous_label=Anterior +find_next.title=Trobar a siguient coincidencia d'a frase +find_next_label=Siguient +find_highlight=Resaltar-lo tot +find_match_case_label=Coincidencia de mayusclas/minusclas +find_entire_word_label=Parolas completas +find_reached_top=S'ha plegau a l'inicio d'o documento, se contina dende baixo +find_reached_bottom=S'ha plegau a la fin d'o documento, se contina dende alto +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} de {{total}} coincidencia +find_match_count[two]={{current}} de {{total}} coincidencias +find_match_count[few]={{current}} de {{total}} coincidencias +find_match_count[many]={{current}} de {{total}} coincidencias +find_match_count[other]={{current}} de {{total}} coincidencias +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Mas de {{limit}} coincidencias +find_match_count_limit[one]=Mas de {{limit}} coincidencias +find_match_count_limit[two]=Mas que {{limit}} coincidencias +find_match_count_limit[few]=Mas que {{limit}} coincidencias +find_match_count_limit[many]=Mas que {{limit}} coincidencias +find_match_count_limit[other]=Mas que {{limit}} coincidencias +find_not_found=No s'ha trobau a frase + +# Error panel labels +error_more_info=Mas información +error_less_info=Menos información +error_close=Zarrar +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Mensache: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Pila: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fichero: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Linia: {{line}} +rendering_error=Ha ocurriu una error en renderizar a pachina. + +# Predefined zoom values +page_scale_width=Amplaria d'a pachina +page_scale_fit=Achuste d'a pachina +page_scale_auto=Grandaria automatica +page_scale_actual=Grandaria actual +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=S'ha produciu una error en cargar o PDF. +invalid_file_error=O PDF no ye valido u ye estorbau. +missing_file_error=No i ha fichero PDF. +unexpected_response_error=Respuesta a lo servicio inasperada. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anotación {{type}}] +password_label=Introduzca a clau ta ubrir iste fichero PDF. +password_invalid=Clau invalida. Torna a intentar-lo. +password_ok=Acceptar +password_cancel=Cancelar + +printing_not_supported=Pare cuenta: Iste navegador no maneya totalment as impresions. +printing_not_ready=Aviso: Encara no se ha cargau completament o PDF ta imprentar-lo. +web_fonts_disabled=As fuents web son desactivadas: no se puet incrustar fichers PDF. + diff --git a/www/include/vendor/pdfjs/web/locale/ar/viewer.properties b/www/include/vendor/pdfjs/web/locale/ar/viewer.properties new file mode 100644 index 0000000..1d389e8 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/ar/viewer.properties @@ -0,0 +1,247 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=الصفحة السابقة +previous_label=السابقة +next.title=الصفحة التالية +next_label=التالية + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=صفحة +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=من {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} من {{pagesCount}}) + +zoom_out.title=بعّد +zoom_out_label=بعّد +zoom_in.title=قرّب +zoom_in_label=قرّب +zoom.title=التقريب +presentation_mode.title=انتقل لوضع العرض التقديمي +presentation_mode_label=وضع العرض التقديمي +open_file.title=افتح ملفًا +open_file_label=افتح +print.title=اطبع +print_label=اطبع +download.title=نزّل +download_label=نزّل +bookmark.title=المنظور الحالي (انسخ أو افتح في نافذة جديدة) +bookmark_label=المنظور الحالي + +# Secondary toolbar and context menu +tools.title=الأدوات +tools_label=الأدوات +first_page.title=انتقل إلى الصفحة الأولى +first_page_label=انتقل إلى الصفحة الأولى +last_page.title=انتقل إلى الصفحة الأخيرة +last_page_label=انتقل إلى الصفحة الأخيرة +page_rotate_cw.title=أدر باتجاه عقارب الساعة +page_rotate_cw_label=أدر باتجاه عقارب الساعة +page_rotate_ccw.title=أدر بعكس اتجاه عقارب الساعة +page_rotate_ccw_label=أدر بعكس اتجاه عقارب الساعة + +cursor_text_select_tool.title=فعّل أداة اختيار النص +cursor_text_select_tool_label=أداة اختيار النص +cursor_hand_tool.title=فعّل أداة اليد +cursor_hand_tool_label=أداة اليد + +scroll_vertical.title=استخدم التمرير الرأسي +scroll_vertical_label=التمرير الرأسي +scroll_horizontal.title=استخدم التمرير الأفقي +scroll_horizontal_label=التمرير الأفقي +scroll_wrapped.title=استخدم التمرير الملتف +scroll_wrapped_label=التمرير الملتف + +spread_none.title=لا تدمج هوامش الصفحات مع بعضها البعض +spread_none_label=بلا هوامش +spread_odd.title=ادمج هوامش الصفحات الفردية +spread_odd_label=هوامش الصفحات الفردية +spread_even.title=ادمج هوامش الصفحات الزوجية +spread_even_label=هوامش الصفحات الزوجية + +# Document properties dialog box +document_properties.title=خصائص المستند… +document_properties_label=خصائص المستند… +document_properties_file_name=اسم الملف: +document_properties_file_size=حجم الملف: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} ك.بايت ({{size_b}} بايت) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} م.بايت ({{size_b}} بايت) +document_properties_title=العنوان: +document_properties_author=المؤلف: +document_properties_subject=الموضوع: +document_properties_keywords=الكلمات الأساسية: +document_properties_creation_date=تاريخ الإنشاء: +document_properties_modification_date=تاريخ التعديل: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}، {{time}} +document_properties_creator=المنشئ: +document_properties_producer=منتج PDF: +document_properties_version=إصدارة PDF: +document_properties_page_count=عدد الصفحات: +document_properties_page_size=مقاس الورقة: +document_properties_page_size_unit_inches=بوصة +document_properties_page_size_unit_millimeters=ملم +document_properties_page_size_orientation_portrait=طوليّ +document_properties_page_size_orientation_landscape=عرضيّ +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=خطاب +document_properties_page_size_name_legal=قانونيّ +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string=‏{{width}} × ‏{{height}} ‏{{unit}} (‏{{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string=‏{{width}} × ‏{{height}} ‏{{unit}} (‏{{name}}، {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=العرض السريع عبر الوِب: +document_properties_linearized_yes=نعم +document_properties_linearized_no=لا +document_properties_close=أغلق + +print_progress_message=يُحضّر المستند للطباعة… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}٪ +print_progress_close=ألغِ + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=بدّل ظهور الشريط الجانبي +toggle_sidebar_notification2.title=بدّل ظهور الشريط الجانبي (يحتوي المستند على مخطط أو مرفقات أو طبقات) +toggle_sidebar_label=بدّل ظهور الشريط الجانبي +document_outline.title=اعرض فهرس المستند (نقر مزدوج لتمديد أو تقليص كل العناصر) +document_outline_label=مخطط المستند +attachments.title=اعرض المرفقات +attachments_label=المُرفقات +layers.title=اعرض الطبقات (انقر مرتين لتصفير كل الطبقات إلى الحالة المبدئية) +layers_label=‏‏الطبقات +thumbs.title=اعرض مُصغرات +thumbs_label=مُصغّرات +findbar.title=ابحث في المستند +findbar_label=ابحث + +additional_layers=الطبقات الإضافية +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=صفحة {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=صفحة {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=مصغّرة صفحة {{page}} + +# Find panel button title and messages +find_input.title=ابحث +find_input.placeholder=ابحث في المستند… +find_previous.title=ابحث عن التّواجد السّابق للعبارة +find_previous_label=السابق +find_next.title=ابحث عن التّواجد التّالي للعبارة +find_next_label=التالي +find_highlight=أبرِز الكل +find_match_case_label=طابق حالة الأحرف +find_entire_word_label=كلمات كاملة +find_reached_top=تابعت من الأسفل بعدما وصلت إلى بداية المستند +find_reached_bottom=تابعت من الأعلى بعدما وصلت إلى نهاية المستند +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} من أصل مطابقة واحدة +find_match_count[two]={{current}} من أصل مطابقتين +find_match_count[few]={{current}} من أصل {{total}} مطابقات +find_match_count[many]={{current}} من أصل {{total}} مطابقة +find_match_count[other]={{current}} من أصل {{total}} مطابقة +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=فقط +find_match_count_limit[one]=أكثر من مطابقة واحدة +find_match_count_limit[two]=أكثر من مطابقتين +find_match_count_limit[few]=أكثر من {{limit}} مطابقات +find_match_count_limit[many]=أكثر من {{limit}} مطابقة +find_match_count_limit[other]=أكثر من {{limit}} مطابقة +find_not_found=لا وجود للعبارة + +# Error panel labels +error_more_info=معلومات أكثر +error_less_info=معلومات أقل +error_close=أغلق +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=‏PDF.js ن{{version}} ‏(بناء: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=الرسالة: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=الرصّة: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=الملف: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=السطر: {{line}} +rendering_error=حدث خطأ أثناء عرض الصفحة. + +# Predefined zoom values +page_scale_width=عرض الصفحة +page_scale_fit=ملائمة الصفحة +page_scale_auto=تقريب تلقائي +page_scale_actual=الحجم الفعلي +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}٪ + +# Loading indicator messages +loading=يحمّل… +loading_error=حدث عطل أثناء تحميل ملف PDF. +invalid_file_error=ملف PDF تالف أو غير صحيح. +missing_file_error=ملف PDF غير موجود. +unexpected_response_error=استجابة خادوم غير متوقعة. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}، {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[تعليق {{type}}] +password_label=أدخل لكلمة السر لفتح هذا الملف. +password_invalid=كلمة سر خطأ. من فضلك أعد المحاولة. +password_ok=حسنا +password_cancel=ألغِ + +printing_not_supported=تحذير: لا يدعم هذا المتصفح الطباعة بشكل كامل. +printing_not_ready=تحذير: ملف PDF لم يُحمّل كاملًا للطباعة. +web_fonts_disabled=خطوط الوب مُعطّلة: تعذّر استخدام خطوط PDF المُضمّنة. + diff --git a/www/include/vendor/pdfjs/web/locale/ast/viewer.properties b/www/include/vendor/pdfjs/web/locale/ast/viewer.properties new file mode 100644 index 0000000..1f8bb2e --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/ast/viewer.properties @@ -0,0 +1,207 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Páxina anterior +previous_label=Anterior +next.title=Páxina siguiente +next_label=Siguiente + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Páxina +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=de {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} de {{pagesCount}}) + +zoom_out.title=Alloñar +zoom_out_label=Alloña +zoom_in.title=Averar +zoom_in_label=Avera +zoom.title=Zoom +presentation_mode.title=Cambiar al mou de presentación +presentation_mode_label=Mou de presentación +open_file_label=Abrir +print.title=Imprentar +print_label=Imprentar +download.title=Baxar +download_label=Baxar +bookmark_label=Vista actual + +# Secondary toolbar and context menu +tools.title=Ferramientes +tools_label=Ferramientes +first_page_label=Dir a la primer páxina +last_page_label=Dir a la última páxina +page_rotate_cw.title=Voltia a la derecha +page_rotate_cw_label=Voltiar a la derecha +page_rotate_ccw.title=Voltia a la esquierda +page_rotate_ccw_label=Voltiar a la esquierda + +cursor_text_select_tool.title=Activa la ferramienta d'esbilla de testu +cursor_text_select_tool_label=Ferramienta d'esbilla de testu +cursor_hand_tool.title=Activa la ferramienta de mano +cursor_hand_tool_label=Ferramienta de mano + +scroll_vertical.title=Usa'l desplazamientu vertical +scroll_vertical_label=Desplazamientu vertical +scroll_horizontal.title=Usa'l desplazamientu horizontal +scroll_horizontal_label=Desplazamientu horizontal +scroll_wrapped.title=Usa'l desplazamientu continuu +scroll_wrapped_label=Desplazamientu continuu + +spread_none_label=Fueyes individuales +spread_odd_label=Fueyes pares +spread_even_label=Fueyes impares + +# Document properties dialog box +document_properties.title=Propiedaes del documentu… +document_properties_label=Propiedaes del documentu… +document_properties_file_name=Nome del ficheru: +document_properties_file_size=Tamañu del ficheru: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Títulu: +document_properties_keywords=Pallabres clave: +document_properties_creation_date=Data de creación: +document_properties_modification_date=Data de modificación: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_producer=Productor del PDF: +document_properties_version=Versión del PDF: +document_properties_page_count=Númberu de páxines: +document_properties_page_size=Tamañu de páxina: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=vertical +document_properties_page_size_orientation_landscape=horizontal +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Vista web rápida: +document_properties_linearized_yes=Sí +document_properties_linearized_no=Non +document_properties_close=Zarrar + +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Encaboxar + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Alternar la barra llateral +attachments.title=Amosar los axuntos +attachments_label=Axuntos +layers_label=Capes +thumbs.title=Amosar les miniatures +thumbs_label=Miniatures +findbar_label=Atopar + +additional_layers=Capes adicionales +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Páxina {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Páxina {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. + +# Find panel button title and messages +find_previous_label=Anterior +find_next_label=Siguiente +find_entire_word_label=Pallabres completes +find_reached_top=Algamóse'l comienzu de la páxina, síguese dende abaxo +find_reached_bottom=Algamóse la fin del documentu, síguese dende arriba +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count[one]={{current}} de {{total}} coincidencia +find_match_count[two]={{current}} de {{total}} coincidencies +find_match_count[few]={{current}} de {{total}} coincidencies +find_match_count[many]={{current}} de {{total}} coincidencies +find_match_count[other]={{current}} de {{total}} coincidencies +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit[zero]=Más de {{limit}} coincidencies +find_match_count_limit[one]=Más de {{limit}} coincidencia +find_match_count_limit[two]=Más de {{limit}} coincidencies +find_match_count_limit[few]=Más de {{limit}} coincidencies +find_match_count_limit[many]=Más de {{limit}} coincidencies +find_match_count_limit[other]=Más de {{limit}} coincidencies + +# Error panel labels +error_more_info=Más información +error_less_info=Menos información +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (compilación: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Mensaxe: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Pila: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Ficheru: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Llinia: {{line}} + +# Predefined zoom values +page_scale_auto=Zoom automáticu +page_scale_actual=Tamañu real +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Cargando… +loading_error=Asocedió un fallu mentanto se cargaba'l PDF. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +password_ok=Aceptar +password_cancel=Encaboxar + +# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same +# exact string as in the `chrome.properties` file. + diff --git a/www/include/vendor/pdfjs/web/locale/az/viewer.properties b/www/include/vendor/pdfjs/web/locale/az/viewer.properties new file mode 100644 index 0000000..3cb27ec --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/az/viewer.properties @@ -0,0 +1,243 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Əvvəlki səhifə +previous_label=Əvvəlkini tap +next.title=Növbəti səhifə +next_label=İrəli + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Səhifə +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=/ {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} / {{pagesCount}}) + +zoom_out.title=Uzaqlaş +zoom_out_label=Uzaqlaş +zoom_in.title=Yaxınlaş +zoom_in_label=Yaxınlaş +zoom.title=Yaxınlaşdırma +presentation_mode.title=Təqdimat Rejiminə Keç +presentation_mode_label=Təqdimat Rejimi +open_file.title=Fayl Aç +open_file_label=Aç +print.title=Yazdır +print_label=Yazdır +download.title=Endir +download_label=Endir +bookmark.title=Hazırkı görünüş (köçür və ya yeni pəncərədə aç) +bookmark_label=Hazırkı görünüş + +# Secondary toolbar and context menu +tools.title=Alətlər +tools_label=Alətlər +first_page.title=İlk Səhifəyə get +first_page_label=İlk Səhifəyə get +last_page.title=Son Səhifəyə get +last_page_label=Son Səhifəyə get +page_rotate_cw.title=Saat İstiqamətində Fırlat +page_rotate_cw_label=Saat İstiqamətində Fırlat +page_rotate_ccw.title=Saat İstiqamətinin Əksinə Fırlat +page_rotate_ccw_label=Saat İstiqamətinin Əksinə Fırlat + +cursor_text_select_tool.title=Yazı seçmə alətini aktivləşdir +cursor_text_select_tool_label=Yazı seçmə aləti +cursor_hand_tool.title=Əl alətini aktivləşdir +cursor_hand_tool_label=Əl aləti + +scroll_vertical.title=Şaquli sürüşdürmə işlət +scroll_vertical_label=Şaquli sürüşdürmə +scroll_horizontal.title=Üfüqi sürüşdürmə işlət +scroll_horizontal_label=Üfüqi sürüşdürmə +scroll_wrapped.title=Bükülü sürüşdürmə işlət +scroll_wrapped_label=Bükülü sürüşdürmə + +spread_none.title=Yan-yana birləşdirilmiş səhifələri işlətmə +spread_none_label=Birləşdirmə +spread_odd.title=Yan-yana birləşdirilmiş səhifələri tək nömrəli səhifələrdən başlat +spread_odd_label=Tək nömrəli +spread_even.title=Yan-yana birləşdirilmiş səhifələri cüt nömrəli səhifələrdən başlat +spread_even_label=Cüt nömrəli + +# Document properties dialog box +document_properties.title=Sənəd xüsusiyyətləri… +document_properties_label=Sənəd xüsusiyyətləri… +document_properties_file_name=Fayl adı: +document_properties_file_size=Fayl ölçüsü: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bayt) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bayt) +document_properties_title=Başlık: +document_properties_author=Müəllif: +document_properties_subject=Mövzu: +document_properties_keywords=Açar sözlər: +document_properties_creation_date=Yaradılış Tarixi : +document_properties_modification_date=Dəyişdirilmə Tarixi : +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Yaradan: +document_properties_producer=PDF yaradıcısı: +document_properties_version=PDF versiyası: +document_properties_page_count=Səhifə sayı: +document_properties_page_size=Səhifə Ölçüsü: +document_properties_page_size_unit_inches=inç +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=portret +document_properties_page_size_orientation_landscape=albom +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Məktub +document_properties_page_size_name_legal=Hüquqi +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Fast Web View: +document_properties_linearized_yes=Bəli +document_properties_linearized_no=Xeyr +document_properties_close=Qapat + +print_progress_message=Sənəd çap üçün hazırlanır… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Ləğv et + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Yan Paneli Aç/Bağla +toggle_sidebar_notification2.title=Yan paneli çevir (sənəddə icmal/bağlamalar/laylar mövcuddur) +toggle_sidebar_label=Yan Paneli Aç/Bağla +document_outline.title=Sənədin eskizini göstər (bütün bəndləri açmaq/yığmaq üçün iki dəfə klikləyin) +document_outline_label=Sənəd strukturu +attachments.title=Bağlamaları göstər +attachments_label=Bağlamalar +layers.title=Layları göstər (bütün layları ilkin halına sıfırlamaq üçün iki dəfə klikləyin) +layers_label=Laylar +thumbs.title=Kiçik şəkilləri göstər +thumbs_label=Kiçik şəkillər +findbar.title=Sənəddə Tap +findbar_label=Tap + +additional_layers=Əlavə laylar +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Səhifə{{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas={{page}} səhifəsinin kiçik vəziyyəti + +# Find panel button title and messages +find_input.title=Tap +find_input.placeholder=Sənəddə tap… +find_previous.title=Bir öncəki uyğun gələn sözü tapır +find_previous_label=Geri +find_next.title=Bir sonrakı uyğun gələn sözü tapır +find_next_label=İrəli +find_highlight=İşarələ +find_match_case_label=Böyük/kiçik hərfə həssaslıq +find_entire_word_label=Tam sözlər +find_reached_top=Sənədin yuxarısına çatdı, aşağıdan davam edir +find_reached_bottom=Sənədin sonuna çatdı, yuxarıdan davam edir +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} / {{total}} uyğunluq +find_match_count[two]={{current}} / {{total}} uyğunluq +find_match_count[few]={{current}} / {{total}} uyğunluq +find_match_count[many]={{current}} / {{total}} uyğunluq +find_match_count[other]={{current}} / {{total}} uyğunluq +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]={{limit}}-dan çox uyğunluq +find_match_count_limit[one]={{limit}}-dən çox uyğunluq +find_match_count_limit[two]={{limit}}-dən çox uyğunluq +find_match_count_limit[few]={{limit}} uyğunluqdan daha çox +find_match_count_limit[many]={{limit}} uyğunluqdan daha çox +find_match_count_limit[other]={{limit}} uyğunluqdan daha çox +find_not_found=Uyğunlaşma tapılmadı + +# Error panel labels +error_more_info=Daha çox məlumati +error_less_info=Daha az məlumat +error_close=Qapat +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (yığma: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=İsmarıc: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stek: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fayl: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Sətir: {{line}} +rendering_error=Səhifə göstərilərkən səhv yarandı. + +# Predefined zoom values +page_scale_width=Səhifə genişliyi +page_scale_fit=Səhifəni sığdır +page_scale_auto=Avtomatik yaxınlaşdır +page_scale_actual=Hazırkı Həcm +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=PDF yüklenərkən bir səhv yarandı. +invalid_file_error=Səhv və ya zədələnmiş olmuş PDF fayl. +missing_file_error=PDF fayl yoxdur. +unexpected_response_error=Gözlənilməz server cavabı. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Annotasiyası] +password_label=Bu PDF faylı açmaq üçün parolu daxil edin. +password_invalid=Parol səhvdir. Bir daha yoxlayın. +password_ok=Tamam +password_cancel=Ləğv et + +printing_not_supported=Xəbərdarlıq: Çap bu səyyah tərəfindən tam olaraq dəstəklənmir. +printing_not_ready=Xəbərdarlıq: PDF çap üçün tam yüklənməyib. +web_fonts_disabled=Web Şriftlər söndürülüb: yerləşdirilmiş PDF şriftlərini istifadə etmək mümkün deyil. + diff --git a/www/include/vendor/pdfjs/web/locale/be/viewer.properties b/www/include/vendor/pdfjs/web/locale/be/viewer.properties new file mode 100644 index 0000000..d235a96 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/be/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Папярэдняя старонка +previous_label=Папярэдняя +next.title=Наступная старонка +next_label=Наступная + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Старонка +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=з {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} з {{pagesCount}}) + +zoom_out.title=Паменшыць +zoom_out_label=Паменшыць +zoom_in.title=Павялічыць +zoom_in_label=Павялічыць +zoom.title=Павялічэнне тэксту +presentation_mode.title=Пераключыцца ў рэжым паказу +presentation_mode_label=Рэжым паказу +open_file.title=Адкрыць файл +open_file_label=Адкрыць +print.title=Друкаваць +print_label=Друкаваць +download.title=Сцягнуць +download_label=Сцягнуць +save.title=Захаваць +save_label=Захаваць +bookmark.title=Цяперашні выгляд (скапіяваць або адкрыць у новым акне) +bookmark_label=Цяперашняя праява + +bookmark1.title=Дзейная старонка (паглядзець URL-адрас з дзейнай старонкі) +bookmark1_label=Цяперашняя старонка + +# Secondary toolbar and context menu +tools.title=Прылады +tools_label=Прылады +first_page.title=Перайсці на першую старонку +first_page_label=Перайсці на першую старонку +last_page.title=Перайсці на апошнюю старонку +last_page_label=Перайсці на апошнюю старонку +page_rotate_cw.title=Павярнуць па сонцу +page_rotate_cw_label=Павярнуць па сонцу +page_rotate_ccw.title=Павярнуць супраць сонца +page_rotate_ccw_label=Павярнуць супраць сонца + +cursor_text_select_tool.title=Уключыць прыладу выбару тэксту +cursor_text_select_tool_label=Прылада выбару тэксту +cursor_hand_tool.title=Уключыць ручную прыладу +cursor_hand_tool_label=Ручная прылада + +scroll_page.title=Выкарыстоўваць пракрутку старонкi +scroll_page_label=Пракрутка старонкi +scroll_vertical.title=Ужываць вертыкальную пракрутку +scroll_vertical_label=Вертыкальная пракрутка +scroll_horizontal.title=Ужываць гарызантальную пракрутку +scroll_horizontal_label=Гарызантальная пракрутка +scroll_wrapped.title=Ужываць маштабавальную пракрутку +scroll_wrapped_label=Маштабавальная пракрутка + +spread_none.title=Не выкарыстоўваць разгорнутыя старонкі +spread_none_label=Без разгорнутых старонак +spread_odd.title=Разгорнутыя старонкі пачынаючы з няцотных нумароў +spread_odd_label=Няцотныя старонкі злева +spread_even.title=Разгорнутыя старонкі пачынаючы з цотных нумароў +spread_even_label=Цотныя старонкі злева + +# Document properties dialog box +document_properties.title=Уласцівасці дакумента… +document_properties_label=Уласцівасці дакумента… +document_properties_file_name=Назва файла: +document_properties_file_size=Памер файла: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} КБ ({{size_b}} байт) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} МБ ({{size_b}} байт) +document_properties_title=Загаловак: +document_properties_author=Аўтар: +document_properties_subject=Тэма: +document_properties_keywords=Ключавыя словы: +document_properties_creation_date=Дата стварэння: +document_properties_modification_date=Дата змянення: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Стваральнік: +document_properties_producer=Вырабнік PDF: +document_properties_version=Версія PDF: +document_properties_page_count=Колькасць старонак: +document_properties_page_size=Памер старонкі: +document_properties_page_size_unit_inches=цаляў +document_properties_page_size_unit_millimeters=мм +document_properties_page_size_orientation_portrait=кніжная +document_properties_page_size_orientation_landscape=альбомная +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Хуткі прагляд у Інтэрнэце: +document_properties_linearized_yes=Так +document_properties_linearized_no=Не +document_properties_close=Закрыць + +print_progress_message=Падрыхтоўка дакумента да друку… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Скасаваць + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Паказаць/схаваць бакавую панэль +toggle_sidebar_notification2.title=Паказаць/схаваць бакавую панэль (дакумент мае змест/укладанні/пласты) +toggle_sidebar_label=Паказаць/схаваць бакавую панэль +document_outline.title=Паказаць структуру дакумента (двайная пстрычка, каб разгарнуць /згарнуць усе элементы) +document_outline_label=Структура дакумента +attachments.title=Паказаць далучэнні +attachments_label=Далучэнні +layers.title=Паказаць пласты (націсніце двойчы, каб скінуць усе пласты да прадвызначанага стану) +layers_label=Пласты +thumbs.title=Паказ мініяцюр +thumbs_label=Мініяцюры +current_outline_item.title=Знайсці бягучы элемент структуры +current_outline_item_label=Бягучы элемент структуры +findbar.title=Пошук у дакуменце +findbar_label=Знайсці + +additional_layers=Дадатковыя пласты +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Старонка {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Старонка {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Мініяцюра старонкі {{page}} + +# Find panel button title and messages +find_input.title=Шукаць +find_input.placeholder=Шукаць у дакуменце… +find_previous.title=Знайсці папярэдні выпадак выразу +find_previous_label=Папярэдні +find_next.title=Знайсці наступны выпадак выразу +find_next_label=Наступны +find_highlight=Падфарбаваць усе +find_match_case_label=Адрозніваць вялікія/малыя літары +find_match_diacritics_label=З улікам дыякрытык +find_entire_word_label=Словы цалкам +find_reached_top=Дасягнуты пачатак дакумента, працяг з канца +find_reached_bottom=Дасягнуты канец дакумента, працяг з пачатку +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} з {{total}} супадзення +find_match_count[two]={{current}} з {{total}} супадзенняў +find_match_count[few]={{current}} з {{total}} супадзенняў +find_match_count[many]={{current}} з {{total}} супадзенняў +find_match_count[other]={{current}} з {{total}} супадзенняў +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Больш за {{limit}} супадзенняў +find_match_count_limit[one]=Больш за {{limit}} супадзенне +find_match_count_limit[two]=Больш за {{limit}} супадзенняў +find_match_count_limit[few]=Больш за {{limit}} супадзенняў +find_match_count_limit[many]=Больш за {{limit}} супадзенняў +find_match_count_limit[other]=Больш за {{limit}} супадзенняў +find_not_found=Выраз не знойдзены + +# Error panel labels +error_more_info=Падрабязней +error_less_info=Сцісла +error_close=Закрыць +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js в{{version}} (зборка: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Паведамленне: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Стос: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Файл: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Радок: {{line}} + +# Predefined zoom values +page_scale_width=Шырыня старонкі +page_scale_fit=Уцісненне старонкі +page_scale_auto=Аўтаматычнае павелічэнне +page_scale_actual=Сапраўдны памер +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Чытаецца… +loading_error=Здарылася памылка ў часе загрузкі PDF. +invalid_file_error=Няспраўны або пашкоджаны файл PDF. +missing_file_error=Адсутны файл PDF. +unexpected_response_error=Нечаканы адказ сервера. + +rendering_error=Здарылася памылка падчас адлюстравання старонкі. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Annotation] +password_label=Увядзіце пароль, каб адкрыць гэты файл PDF. +password_invalid=Нядзейсны пароль. Паспрабуйце зноў. +password_ok=Добра +password_cancel=Скасаваць + +printing_not_supported=Папярэджанне: друк не падтрымліваецца цалкам гэтым браўзерам. +printing_not_ready=Увага: PDF не сцягнуты цалкам для друкавання. +web_fonts_disabled=Шрыфты Сеціва забаронены: немагчыма ўжываць укладзеныя шрыфты PDF. + +# Editor +editor_free_text2.title=Тэкст +editor_free_text2_label=Тэкст +editor_ink2.title=Маляваць +editor_ink2_label=Маляваць + +free_text2_default_content=Пачніце набор тэксту… + +# Editor Parameters +editor_free_text_color=Колер +editor_free_text_size=Памер +editor_ink_color=Колер +editor_ink_thickness=Таўшчыня +editor_ink_opacity=Непразрыстасць + +# Editor aria +editor_free_text2_aria_label=Тэкставы рэдактар +editor_ink2_aria_label=Графічны рэдактар +editor_ink_canvas_aria_label=Выява, створаная карыстальнікам diff --git a/www/include/vendor/pdfjs/web/locale/bg/viewer.properties b/www/include/vendor/pdfjs/web/locale/bg/viewer.properties new file mode 100644 index 0000000..8c27398 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/bg/viewer.properties @@ -0,0 +1,235 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Предишна страница +previous_label=Предишна +next.title=Следваща страница +next_label=Следваща + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Страница +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=от {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} от {{pagesCount}}) + +zoom_out.title=Намаляване +zoom_out_label=Намаляване +zoom_in.title=Увеличаване +zoom_in_label=Увеличаване +zoom.title=Мащабиране +presentation_mode.title=Превключване към режим на представяне +presentation_mode_label=Режим на представяне +open_file.title=Отваряне на файл +open_file_label=Отваряне +print.title=Отпечатване +print_label=Отпечатване +download.title=Изтегляне +download_label=Изтегляне +bookmark.title=Текущ изглед (копиране или отваряне в нов прозорец) +bookmark_label=Текущ изглед + +# Secondary toolbar and context menu +tools.title=Инструменти +tools_label=Инструменти +first_page.title=Към първата страница +first_page_label=Към първата страница +last_page.title=Към последната страница +last_page_label=Към последната страница +page_rotate_cw.title=Завъртане по час. стрелка +page_rotate_cw_label=Завъртане по часовниковата стрелка +page_rotate_ccw.title=Завъртане обратно на час. стрелка +page_rotate_ccw_label=Завъртане обратно на часовниковата стрелка + +cursor_text_select_tool.title=Включване на инструмента за избор на текст +cursor_text_select_tool_label=Инструмент за избор на текст +cursor_hand_tool.title=Включване на инструмента ръка +cursor_hand_tool_label=Инструмент ръка + +scroll_vertical.title=Използване на вертикално плъзгане +scroll_vertical_label=Вертикално плъзгане +scroll_horizontal.title=Използване на хоризонтално +scroll_horizontal_label=Хоризонтално плъзгане +scroll_wrapped.title=Използване на мащабируемо плъзгане +scroll_wrapped_label=Мащабируемо плъзгане + +spread_none.title=Режимът на сдвояване е изключен +spread_none_label=Без сдвояване +spread_odd.title=Сдвояване, започвайки от нечетните страници +spread_odd_label=Нечетните отляво +spread_even.title=Сдвояване, започвайки от четните страници +spread_even_label=Четните отляво + +# Document properties dialog box +document_properties.title=Свойства на документа… +document_properties_label=Свойства на документа… +document_properties_file_name=Име на файл: +document_properties_file_size=Големина на файл: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} КБ ({{size_b}} байта) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} МБ ({{size_b}} байта) +document_properties_title=Заглавие: +document_properties_author=Автор: +document_properties_subject=Тема: +document_properties_keywords=Ключови думи: +document_properties_creation_date=Дата на създаване: +document_properties_modification_date=Дата на промяна: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Създател: +document_properties_producer=PDF произведен от: +document_properties_version=Издание на PDF: +document_properties_page_count=Брой страници: +document_properties_page_size=Размер на страницата: +document_properties_page_size_unit_inches=инч +document_properties_page_size_unit_millimeters=мм +document_properties_page_size_orientation_portrait=портрет +document_properties_page_size_orientation_landscape=пейзаж +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Правни въпроси +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Бърз преглед: +document_properties_linearized_yes=Да +document_properties_linearized_no=Не +document_properties_close=Затваряне + +print_progress_message=Подготвяне на документа за отпечатване… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Отказ + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Превключване на страничната лента +toggle_sidebar_label=Превключване на страничната лента +document_outline.title=Показване на структурата на документа (двукратно щракване за свиване/разгъване на всичко) +document_outline_label=Структура на документа +attachments.title=Показване на притурките +attachments_label=Притурки +thumbs.title=Показване на миниатюрите +thumbs_label=Миниатюри +findbar.title=Намиране в документа +findbar_label=Търсене + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Страница {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Миниатюра на страница {{page}} + +# Find panel button title and messages +find_input.title=Търсене +find_input.placeholder=Търсене в документа… +find_previous.title=Намиране на предишно съвпадение на фразата +find_previous_label=Предишна +find_next.title=Намиране на следващо съвпадение на фразата +find_next_label=Следваща +find_highlight=Открояване на всички +find_match_case_label=Съвпадение на регистъра +find_entire_word_label=Цели думи +find_reached_top=Достигнато е началото на документа, продължаване от края +find_reached_bottom=Достигнат е краят на документа, продължаване от началото +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} от {{total}} съвпадение +find_match_count[two]={{current}} от {{total}} съвпадения +find_match_count[few]={{current}} от {{total}} съвпадения +find_match_count[many]={{current}} от {{total}} съвпадения +find_match_count[other]={{current}} от {{total}} съвпадения +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Повече от {{limit}} съвпадения +find_match_count_limit[one]=Повече от {{limit}} съвпадение +find_match_count_limit[two]=Повече от {{limit}} съвпадения +find_match_count_limit[few]=Повече от {{limit}} съвпадения +find_match_count_limit[many]=Повече от {{limit}} съвпадения +find_match_count_limit[other]=Повече от {{limit}} съвпадения +find_not_found=Фразата не е намерена + +# Error panel labels +error_more_info=Повече информация +error_less_info=По-малко информация +error_close=Затваряне +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=Издание на PDF.js {{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Съобщение: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Стек: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Файл: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Ред: {{line}} +rendering_error=Грешка при изчертаване на страницата. + +# Predefined zoom values +page_scale_width=Ширина на страницата +page_scale_fit=Вместване в страницата +page_scale_auto=Автоматично мащабиране +page_scale_actual=Действителен размер +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=Получи се грешка при зареждане на PDF-а. +invalid_file_error=Невалиден или повреден PDF файл. +missing_file_error=Липсващ PDF файл. +unexpected_response_error=Неочакван отговор от сървъра. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Анотация {{type}}] +password_label=Въведете парола за отваряне на този PDF файл. +password_invalid=Невалидна парола. Моля, опитайте отново. +password_ok=Добре +password_cancel=Отказ + +printing_not_supported=Внимание: Този четец няма пълна поддръжка на отпечатване. +printing_not_ready=Внимание: Този PDF файл не е напълно зареден за печат. +web_fonts_disabled=Уеб-шрифтовете са забранени: разрешаване на използването на вградените PDF шрифтове. + diff --git a/www/include/vendor/pdfjs/web/locale/bn/viewer.properties b/www/include/vendor/pdfjs/web/locale/bn/viewer.properties new file mode 100644 index 0000000..366f2e5 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/bn/viewer.properties @@ -0,0 +1,239 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=পূর্ববর্তী পাতা +previous_label=পূর্ববর্তী +next.title=পরবর্তী পাতা +next_label=পরবর্তী + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=পাতা +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}} এর +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pagesCount}} এর {{pageNumber}}) + +zoom_out.title=ছোট আকারে প্রদর্শন +zoom_out_label=ছোট আকারে প্রদর্শন +zoom_in.title=বড় আকারে প্রদর্শন +zoom_in_label=বড় আকারে প্রদর্শন +zoom.title=বড় আকারে প্রদর্শন +presentation_mode.title=উপস্থাপনা মোডে স্যুইচ করুন +presentation_mode_label=উপস্থাপনা মোড +open_file.title=ফাইল খুলুন +open_file_label=খুলুন +print.title=মুদ্রণ +print_label=মুদ্রণ +download.title=ডাউনলোড +download_label=ডাউনলোড +bookmark.title=বর্তমান অবস্থা (অনুলিপি অথবা নতুন উইন্ডো তে খুলুন) +bookmark_label=বর্তমান অবস্থা + +# Secondary toolbar and context menu +tools.title=টুল +tools_label=টুল +first_page.title=প্রথম পাতায় যাও +first_page_label=প্রথম পাতায় যাও +last_page.title=শেষ পাতায় যাও +last_page_label=শেষ পাতায় যাও +page_rotate_cw.title=ঘড়ির কাঁটার দিকে ঘোরাও +page_rotate_cw_label=ঘড়ির কাঁটার দিকে ঘোরাও +page_rotate_ccw.title=ঘড়ির কাঁটার বিপরীতে ঘোরাও +page_rotate_ccw_label=ঘড়ির কাঁটার বিপরীতে ঘোরাও + +cursor_text_select_tool.title=লেখা নির্বাচক টুল সক্রিয় করুন +cursor_text_select_tool_label=লেখা নির্বাচক টুল +cursor_hand_tool.title=হ্যান্ড টুল সক্রিয় করুন +cursor_hand_tool_label=হ্যান্ড টুল + +scroll_vertical.title=উলম্ব স্ক্রলিং ব্যবহার করুন +scroll_vertical_label=উলম্ব স্ক্রলিং +scroll_horizontal.title=অনুভূমিক স্ক্রলিং ব্যবহার করুন +scroll_horizontal_label=অনুভূমিক স্ক্রলিং +scroll_wrapped.title=Wrapped স্ক্রোলিং ব্যবহার করুন +scroll_wrapped_label=Wrapped স্ক্রোলিং + +spread_none.title=পেজ স্প্রেডগুলোতে যোগদান করবেন না +spread_none_label=Spreads নেই +spread_odd_label=বিজোড় Spreads +spread_even_label=জোড় Spreads + +# Document properties dialog box +document_properties.title=নথি বৈশিষ্ট্য… +document_properties_label=নথি বৈশিষ্ট্য… +document_properties_file_name=ফাইলের নাম: +document_properties_file_size=ফাইলের আকার: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} কেবি ({{size_b}} বাইট) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} এমবি ({{size_b}} বাইট) +document_properties_title=শিরোনাম: +document_properties_author=লেখক: +document_properties_subject=বিষয়: +document_properties_keywords=কীওয়ার্ড: +document_properties_creation_date=তৈরির তারিখ: +document_properties_modification_date=পরিবর্তনের তারিখ: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=প্রস্তুতকারক: +document_properties_producer=পিডিএফ প্রস্তুতকারক: +document_properties_version=পিডিএফ সংষ্করণ: +document_properties_page_count=মোট পাতা: +document_properties_page_size=পাতার সাইজ: +document_properties_page_size_unit_inches=এর মধ্যে +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=উলম্ব +document_properties_page_size_orientation_landscape=অনুভূমিক +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=লেটার +document_properties_page_size_name_legal=লীগাল +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Fast Web View: +document_properties_linearized_yes=হ্যাঁ +document_properties_linearized_no=না +document_properties_close=বন্ধ + +print_progress_message=মুদ্রণের জন্য নথি প্রস্তুত করা হচ্ছে… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=বাতিল + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=সাইডবার টগল করুন +toggle_sidebar_label=সাইডবার টগল করুন +document_outline.title=নথির আউটলাইন দেখাও (সব আইটেম প্রসারিত/সঙ্কুচিত করতে ডবল ক্লিক করুন) +document_outline_label=নথির রূপরেখা +attachments.title=সংযুক্তি দেখাও +attachments_label=সংযুক্তি +thumbs.title=থাম্বনেইল সমূহ প্রদর্শন করুন +thumbs_label=থাম্বনেইল সমূহ +findbar.title=নথির মধ্যে খুঁজুন +findbar_label=খুঁজুন + +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=পাতা {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas={{page}} পাতার থাম্বনেইল + +# Find panel button title and messages +find_input.title=খুঁজুন +find_input.placeholder=নথির মধ্যে খুঁজুন… +find_previous.title=বাক্যাংশের পূর্ববর্তী উপস্থিতি অনুসন্ধান +find_previous_label=পূর্ববর্তী +find_next.title=বাক্যাংশের পরবর্তী উপস্থিতি অনুসন্ধান +find_next_label=পরবর্তী +find_highlight=সব হাইলাইট করুন +find_match_case_label=অক্ষরের ছাঁদ মেলানো +find_entire_word_label=সম্পূর্ণ শব্দ +find_reached_top=পাতার শুরুতে পৌছে গেছে, নীচ থেকে আরম্ভ করা হয়েছে +find_reached_bottom=পাতার শেষে পৌছে গেছে, উপর থেকে আরম্ভ করা হয়েছে +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{total}} এর {{current}} মিল +find_match_count[two]={{total}} এর {{current}} মিল +find_match_count[few]={{total}} এর {{current}} মিল +find_match_count[many]={{total}} এর {{current}} মিল +find_match_count[other]={{total}} এর {{current}} মিল +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]={{limit}} এর বেশি মিল +find_match_count_limit[one]={{limit}} এর বেশি মিল +find_match_count_limit[two]={{limit}} এর বেশি মিল +find_match_count_limit[few]={{limit}} এর বেশি মিল +find_match_count_limit[many]={{limit}} এর বেশি মিল +find_match_count_limit[other]={{limit}} এর বেশি মিল +find_not_found=বাক্যাংশ পাওয়া যায়নি + +# Error panel labels +error_more_info=আরও তথ্য +error_less_info=কম তথ্য +error_close=বন্ধ +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=বার্তা: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=নথি: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=লাইন: {{line}} +rendering_error=পাতা উপস্থাপনার সময় ত্রুটি দেখা দিয়েছে। + +# Predefined zoom values +page_scale_width=পাতার প্রস্থ +page_scale_fit=পাতা ফিট করুন +page_scale_auto=স্বয়ংক্রিয় জুম +page_scale_actual=প্রকৃত আকার +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading_error=পিডিএফ লোড করার সময় ত্রুটি দেখা দিয়েছে। +invalid_file_error=অকার্যকর অথবা ক্ষতিগ্রস্ত পিডিএফ ফাইল। +missing_file_error=নিখোঁজ PDF ফাইল। +unexpected_response_error=অপ্রত্যাশীত সার্ভার প্রতিক্রিয়া। + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} টীকা] +password_label=পিডিএফ ফাইলটি ওপেন করতে পাসওয়ার্ড দিন। +password_invalid=ভুল পাসওয়ার্ড। অনুগ্রহ করে আবার চেষ্টা করুন। +password_ok=ঠিক আছে +password_cancel=বাতিল + +printing_not_supported=সতর্কতা: এই ব্রাউজারে মুদ্রণ সম্পূর্ণভাবে সমর্থিত নয়। +printing_not_ready=সতর্কীকরণ: পিডিএফটি মুদ্রণের জন্য সম্পূর্ণ লোড হয়নি। +web_fonts_disabled=ওয়েব ফন্ট নিষ্ক্রিয়: সংযুক্ত পিডিএফ ফন্ট ব্যবহার করা যাচ্ছে না। + diff --git a/www/include/vendor/pdfjs/web/locale/bo/viewer.properties b/www/include/vendor/pdfjs/web/locale/bo/viewer.properties new file mode 100644 index 0000000..d3b3933 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/bo/viewer.properties @@ -0,0 +1,238 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=དྲ་ངོས་སྔོན་མ +previous_label=སྔོན་མ +next.title=དྲ་ངོས་རྗེས་མ +next_label=རྗེས་མ + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=ཤོག་ངོས +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=of {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} of {{pagesCount}}) + +zoom_out.title=Zoom Out +zoom_out_label=Zoom Out +zoom_in.title=Zoom In +zoom_in_label=Zoom In +zoom.title=Zoom +presentation_mode.title=Switch to Presentation Mode +presentation_mode_label=Presentation Mode +open_file.title=Open File +open_file_label=Open +print.title=Print +print_label=Print +download.title=Download +download_label=Download +bookmark.title=Current view (copy or open in new window) +bookmark_label=Current View + +# Secondary toolbar and context menu +tools.title=Tools +tools_label=Tools +first_page.title=Go to First Page +first_page_label=Go to First Page +last_page.title=Go to Last Page +last_page_label=Go to Last Page +page_rotate_cw.title=Rotate Clockwise +page_rotate_cw_label=Rotate Clockwise +page_rotate_ccw.title=Rotate Counterclockwise +page_rotate_ccw_label=Rotate Counterclockwise + +cursor_text_select_tool.title=Enable Text Selection Tool +cursor_text_select_tool_label=Text Selection Tool +cursor_hand_tool.title=Enable Hand Tool +cursor_hand_tool_label=Hand Tool + +scroll_vertical.title=Use Vertical Scrolling +scroll_vertical_label=Vertical Scrolling +scroll_horizontal.title=Use Horizontal Scrolling +scroll_horizontal_label=Horizontal Scrolling +scroll_wrapped.title=Use Wrapped Scrolling +scroll_wrapped_label=Wrapped Scrolling + +spread_none.title=Do not join page spreads +spread_none_label=No Spreads +spread_odd.title=Join page spreads starting with odd-numbered pages +spread_odd_label=Odd Spreads +spread_even.title=Join page spreads starting with even-numbered pages +spread_even_label=Even Spreads + +# Document properties dialog box +document_properties.title=Document Properties… +document_properties_label=Document Properties… +document_properties_file_name=File name: +document_properties_file_size=File size: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Title: +document_properties_author=Author: +document_properties_subject=Subject: +document_properties_keywords=Keywords: +document_properties_creation_date=Creation Date: +document_properties_modification_date=Modification Date: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Creator: +document_properties_producer=PDF Producer: +document_properties_version=PDF Version: +document_properties_page_count=Page Count: +document_properties_page_size=Page Size: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=portrait +document_properties_page_size_orientation_landscape=landscape +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Fast Web View: +document_properties_linearized_yes=Yes +document_properties_linearized_no=No +document_properties_close=Close + +print_progress_message=Preparing document for printing… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cancel + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Toggle Sidebar +toggle_sidebar_label=Toggle Sidebar +document_outline.title=Show Document Outline (double-click to expand/collapse all items) +document_outline_label=Document Outline +attachments.title=Show Attachments +attachments_label=Attachments +thumbs.title=Show Thumbnails +thumbs_label=Thumbnails +findbar.title=Find in Document +findbar_label=Find + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Page {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Thumbnail of Page {{page}} + +# Find panel button title and messages +find_input.title=Find +find_input.placeholder=Find in document… +find_previous.title=Find the previous occurrence of the phrase +find_previous_label=Previous +find_next.title=Find the next occurrence of the phrase +find_next_label=Next +find_highlight=Highlight all +find_match_case_label=Match case +find_entire_word_label=Whole words +find_reached_top=Reached top of document, continued from bottom +find_reached_bottom=Reached end of document, continued from top +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} of {{total}} match +find_match_count[two]={{current}} of {{total}} matches +find_match_count[few]={{current}} of {{total}} matches +find_match_count[many]={{current}} of {{total}} matches +find_match_count[other]={{current}} of {{total}} matches +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=More than {{limit}} matches +find_match_count_limit[one]=More than {{limit}} match +find_match_count_limit[two]=More than {{limit}} matches +find_match_count_limit[few]=More than {{limit}} matches +find_match_count_limit[many]=More than {{limit}} matches +find_match_count_limit[other]=More than {{limit}} matches +find_not_found=Phrase not found + +# Error panel labels +error_more_info=More Information +error_less_info=Less Information +error_close=Close +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Message: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=File: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Line: {{line}} +rendering_error=An error occurred while rendering the page. + +# Predefined zoom values +page_scale_width=Page Width +page_scale_fit=Page Fit +page_scale_auto=Automatic Zoom +page_scale_actual=Actual Size +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=An error occurred while loading the PDF. +invalid_file_error=Invalid or corrupted PDF file. +missing_file_error=Missing PDF file. +unexpected_response_error=Unexpected server response. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Annotation] +password_label=Enter the password to open this PDF file. +password_invalid=Invalid password. Please try again. +password_ok=OK +password_cancel=Cancel + +printing_not_supported=Warning: Printing is not fully supported by this browser. +printing_not_ready=Warning: The PDF is not fully loaded for printing. +web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. + diff --git a/www/include/vendor/pdfjs/web/locale/br/viewer.properties b/www/include/vendor/pdfjs/web/locale/br/viewer.properties new file mode 100644 index 0000000..ea3b696 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/br/viewer.properties @@ -0,0 +1,247 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Pajenn a-raok +previous_label=A-raok +next.title=Pajenn war-lerc'h +next_label=War-lerc'h + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Pajenn +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=eus {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} war {{pagesCount}}) + +zoom_out.title=Zoum bihanaat +zoom_out_label=Zoum bihanaat +zoom_in.title=Zoum brasaat +zoom_in_label=Zoum brasaat +zoom.title=Zoum +presentation_mode.title=Trec'haoliñ etrezek ar mod kinnigadenn +presentation_mode_label=Mod kinnigadenn +open_file.title=Digeriñ ur restr +open_file_label=Digeriñ ur restr +print.title=Moullañ +print_label=Moullañ +download.title=Pellgargañ +download_label=Pellgargañ +bookmark.title=Gwel bremanel (eilañ pe zigeriñ e-barzh ur prenestr nevez) +bookmark_label=Gwel bremanel + +# Secondary toolbar and context menu +tools.title=Ostilhoù +tools_label=Ostilhoù +first_page.title=Mont d'ar bajenn gentañ +first_page_label=Mont d'ar bajenn gentañ +last_page.title=Mont d'ar bajenn diwezhañ +last_page_label=Mont d'ar bajenn diwezhañ +page_rotate_cw.title=C'hwelañ gant roud ar bizied +page_rotate_cw_label=C'hwelañ gant roud ar bizied +page_rotate_ccw.title=C'hwelañ gant roud gin ar bizied +page_rotate_ccw_label=C'hwelañ gant roud gin ar bizied + +cursor_text_select_tool.title=Gweredekaat an ostilh diuzañ testenn +cursor_text_select_tool_label=Ostilh diuzañ testenn +cursor_hand_tool.title=Gweredekaat an ostilh dorn +cursor_hand_tool_label=Ostilh dorn + +scroll_vertical.title=Arverañ an dibunañ a-blom +scroll_vertical_label=Dibunañ a-serzh +scroll_horizontal.title=Arverañ an dibunañ a-blaen +scroll_horizontal_label=Dibunañ a-blaen +scroll_wrapped.title=Arverañ an dibunañ paket +scroll_wrapped_label=Dibunañ paket + +spread_none.title=Chom hep stagañ ar skignadurioù +spread_none_label=Skignadenn ebet +spread_odd.title=Lakaat ar pajennadoù en ur gregiñ gant ar pajennoù ampar +spread_odd_label=Pajennoù ampar +spread_even.title=Lakaat ar pajennadoù en ur gregiñ gant ar pajennoù par +spread_even_label=Pajennoù par + +# Document properties dialog box +document_properties.title=Perzhioù an teul… +document_properties_label=Perzhioù an teul… +document_properties_file_name=Anv restr: +document_properties_file_size=Ment ar restr: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} Ke ({{size_b}} eizhbit) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} Me ({{size_b}} eizhbit) +document_properties_title=Titl: +document_properties_author=Aozer: +document_properties_subject=Danvez: +document_properties_keywords=Gerioù-alc'hwez: +document_properties_creation_date=Deiziad krouiñ: +document_properties_modification_date=Deiziad kemmañ: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Krouer: +document_properties_producer=Kenderc'her PDF: +document_properties_version=Handelv PDF: +document_properties_page_count=Niver a bajennoù: +document_properties_page_size=Ment ar bajenn: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=poltred +document_properties_page_size_orientation_landscape=gweledva +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Lizher +document_properties_page_size_name_legal=Lezennel +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Gwel Web Herrek: +document_properties_linearized_yes=Ya +document_properties_linearized_no=Ket +document_properties_close=Serriñ + +print_progress_message=O prientiñ an teul evit moullañ... +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Nullañ + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Diskouez/kuzhat ar varrenn gostez +toggle_sidebar_notification2.title=Trec'haoliñ ar varrenn-gostez (ur steuñv pe stagadennoù a zo en teul) +toggle_sidebar_label=Diskouez/kuzhat ar varrenn gostez +document_outline.title=Diskouez steuñv an teul (daouglikit evit brasaat/bihanaat an holl elfennoù) +document_outline_label=Sinedoù an teuliad +attachments.title=Diskouez ar c'henstagadurioù +attachments_label=Kenstagadurioù +layers.title=Diskouez ar gwiskadoù (daou-glikañ evit adderaouekaat an holl gwiskadoù d'o stad dre ziouer) +layers_label=Gwiskadoù +thumbs.title=Diskouez ar melvennoù +thumbs_label=Melvennoù +findbar.title=Klask e-barzh an teuliad +findbar_label=Klask + +additional_layers=Gwiskadoù ouzhpenn +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Pajenn {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Pajenn {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Melvenn ar bajenn {{page}} + +# Find panel button title and messages +find_input.title=Klask +find_input.placeholder=Klask e-barzh an teuliad +find_previous.title=Kavout an tamm frazenn kent o klotañ ganti +find_previous_label=Kent +find_next.title=Kavout an tamm frazenn war-lerc'h o klotañ ganti +find_next_label=War-lerc'h +find_highlight=Usskediñ pep tra +find_match_case_label=Teurel evezh ouzh ar pennlizherennoù +find_entire_word_label=Gerioù a-bezh +find_reached_top=Tizhet eo bet derou ar bajenn, kenderc'hel diouzh an diaz +find_reached_bottom=Tizhet eo bet dibenn ar bajenn, kenderc'hel diouzh ar c'hrec'h +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]=Klotadenn {{current}} war {{total}} +find_match_count[two]=Klotadenn {{current}} war {{total}} +find_match_count[few]=Klotadenn {{current}} war {{total}} +find_match_count[many]=Klotadenn {{current}} war {{total}} +find_match_count[other]=Klotadenn {{current}} war {{total}} +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Muioc'h eget {{limit}} a glotadennoù +find_match_count_limit[one]=Muioc'h eget {{limit}} a glotadennoù +find_match_count_limit[two]=Muioc'h eget {{limit}} a glotadennoù +find_match_count_limit[few]=Muioc'h eget {{limit}} a glotadennoù +find_match_count_limit[many]=Muioc'h eget {{limit}} a glotadennoù +find_match_count_limit[other]=Muioc'h eget {{limit}} a glotadennoù +find_not_found=N'haller ket kavout ar frazenn + +# Error panel labels +error_more_info=Muioc'h a ditouroù +error_less_info=Nebeutoc'h a ditouroù +error_close=Serriñ +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js handelv {{version}} (kempunadur: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Kemennadenn: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Torn: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Restr: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Linenn: {{line}} +rendering_error=Degouezhet ez eus bet ur fazi e-pad skrammañ ar bajennad. + +# Predefined zoom values +page_scale_width=Led ar bajenn +page_scale_fit=Pajenn a-bezh +page_scale_auto=Zoum emgefreek +page_scale_actual=Ment wir +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=O kargañ… +loading_error=Degouezhet ez eus bet ur fazi e-pad kargañ ar PDF. +invalid_file_error=Restr PDF didalvoudek pe kontronet. +missing_file_error=Restr PDF o vankout. +unexpected_response_error=Respont dic'hortoz a-berzh an dafariad + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Notennañ] +password_label=Enankit ar ger-tremen evit digeriñ ar restr PDF-mañ. +password_invalid=Ger-tremen didalvoudek. Klaskit en-dro mar plij. +password_ok=Mat eo +password_cancel=Nullañ + +printing_not_supported=Kemenn: N'eo ket skoret penn-da-benn ar moullañ gant ar merdeer-mañ. +printing_not_ready=Kemenn: N'hall ket bezañ moullet ar restr PDF rak n'eo ket karget penn-da-benn. +web_fonts_disabled=Diweredekaet eo an nodrezhoù web: n'haller ket arverañ an nodrezhoù PDF enframmet. + diff --git a/www/include/vendor/pdfjs/web/locale/brx/viewer.properties b/www/include/vendor/pdfjs/web/locale/brx/viewer.properties new file mode 100644 index 0000000..8211505 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/brx/viewer.properties @@ -0,0 +1,205 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=आगोलनि बिलाइ +previous_label=आगोलनि +next.title=उननि बिलाइ +next_label=उननि + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=बिलाइ +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}} नि +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pagesCount}} नि {{pageNumber}}) + +zoom_out.title=फिसायै जुम खालाम +zoom_out_label=फिसायै जुम खालाम +zoom_in.title=गेदेरै जुम खालाम +zoom_in_label=गेदेरै जुम खालाम +zoom.title=जुम खालाम +presentation_mode.title=दिन्थिफुंनाय म'डआव थां +presentation_mode_label=दिन्थिफुंनाय म'ड +open_file.title=फाइलखौ खेव +open_file_label=खेव +print.title=साफाय +print_label=साफाय +download.title=डाउनल'ड खालाम +download_label=डाउनल'ड खालाम +bookmark.title=दानि नुथाय (गोदान उइन्ड'आव कपि खालाम एबा खेव) +bookmark_label=दानि नुथाय + +# Secondary toolbar and context menu +tools.title=टुल +tools_label=टुल +first_page.title=गिबि बिलाइआव थां +first_page_label=गिबि बिलाइआव थां +last_page.title=जोबथा बिलाइआव थां +last_page_label=जोबथा बिलाइआव थां +page_rotate_cw.title=घरि गिदिंनाय फार्से फिदिं +page_rotate_cw_label=घरि गिदिंनाय फार्से फिदिं +page_rotate_ccw.title=घरि गिदिंनाय उल्था फार्से फिदिं +page_rotate_ccw_label=घरि गिदिंनाय उल्था फार्से फिदिं + + + + +# Document properties dialog box +document_properties.title=फोरमान बिलाइनि आखुथाय... +document_properties_label=फोरमान बिलाइनि आखुथाय... +document_properties_file_name=फाइलनि मुं: +document_properties_file_size=फाइलनि महर: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} बाइट) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} बाइट) +document_properties_title=बिमुं: +document_properties_author=लिरगिरि: +document_properties_subject=आयदा: +document_properties_keywords=गाहाय सोदोब: +document_properties_creation_date=सोरजिनाय अक्ट': +document_properties_modification_date=सुद्रायनाय अक्ट': +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=सोरजिग्रा: +document_properties_producer=PDF दिहुनग्रा: +document_properties_version=PDF बिसान: +document_properties_page_count=बिलाइनि हिसाब: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=प'र्ट्रेट +document_properties_page_size_orientation_landscape=लेण्डस्केप +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=लायजाम +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized_yes=नंगौ +document_properties_linearized_no=नङा +document_properties_close=बन्द खालाम + +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=नेवसि + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=टग्गल साइडबार +toggle_sidebar_label=टग्गल साइडबार +document_outline_label=फोरमान बिलाइ सिमा हांखो +attachments.title=नांजाब होनायखौ दिन्थि +attachments_label=नांजाब होनाय +thumbs.title=थामनेइलखौ दिन्थि +thumbs_label=थामनेइल +findbar.title=फोरमान बिलाइआव नागिरना दिहुन +findbar_label=नायगिरना दिहुन + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=बिलाइ {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=बिलाइ {{page}} नि थामनेइल + +# Find panel button title and messages +find_input.title=नायगिरना दिहुन +find_input.placeholder=फोरमान बिलाइआव नागिरना दिहुन... +find_previous.title=बाथ्रा खोन्दोबनि सिगांनि नुजाथिनायखौ नागिर +find_previous_label=आगोलनि +find_next.title=बाथ्रा खोन्दोबनि उननि नुजाथिनायखौ नागिर +find_next_label=उननि +find_highlight=गासैखौबो हाइलाइट खालाम +find_match_case_label=गोरोबनाय केस +find_reached_top=थालो निफ्राय जागायनानै फोरमान बिलाइनि बिजौआव सौहैबाय +find_reached_bottom=बिजौ निफ्राय जागायनानै फोरमान बिलाइनि बिजौआव सौहैबाय +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_not_found=बाथ्रा खोन्दोब मोनाखै + +# Error panel labels +error_more_info=गोबां फोरमायथिहोग्रा +error_less_info=खम फोरमायथिहोग्रा +error_close=बन्द खालाम +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=खौरां: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=स्टेक: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=फाइल: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=सारि: {{line}} +rendering_error=बिलाइखौ राव सोलायनाय समाव मोनसे गोरोन्थि जादों। + +# Predefined zoom values +page_scale_width=बिलाइनि गुवार +page_scale_fit=बिलाइ गोरोबनाय +page_scale_auto=गावनोगाव जुम +page_scale_actual=थार महर +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=PDF ल'ड खालामनाय समाव मोनसे गोरोन्थि जाबाय। +invalid_file_error=बाहायजायै एबा गाज्रि जानाय PDF फाइल +missing_file_error=गोमानाय PDF फाइल +unexpected_response_error=मिजिंथियै सार्भार फिननाय। + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} सोदोब बेखेवनाय] +password_label=बे PDF फाइलखौ खेवनो पासवार्ड हाबहो। +password_invalid=बाहायजायै पासवार्ड। अननानै फिन नाजा। +password_ok=OK +password_cancel=नेवसि + +printing_not_supported=सांग्रांथि: साफायनाया बे ब्राउजारजों आबुङै हेफाजाब होजाया। +printing_not_ready=सांग्रांथि: PDF खौ साफायनायनि थाखाय फुरायै ल'ड खालामाखै। +web_fonts_disabled=वेब फन्टखौ लोरबां खालामबाय: अरजाबहोनाय PDF फन्टखौ बाहायनो हायाखै। + diff --git a/www/include/vendor/pdfjs/web/locale/bs/viewer.properties b/www/include/vendor/pdfjs/web/locale/bs/viewer.properties new file mode 100644 index 0000000..b482bb1 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/bs/viewer.properties @@ -0,0 +1,194 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Prethodna strana +previous_label=Prethodna +next.title=Sljedeća strna +next_label=Sljedeća + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Strana +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=od {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} od {{pagesCount}}) + +zoom_out.title=Umanji +zoom_out_label=Umanji +zoom_in.title=Uvećaj +zoom_in_label=Uvećaj +zoom.title=Uvećanje +presentation_mode.title=Prebaci se u prezentacijski režim +presentation_mode_label=Prezentacijski režim +open_file.title=Otvori fajl +open_file_label=Otvori +print.title=Štampaj +print_label=Štampaj +download.title=Preuzmi +download_label=Preuzmi +bookmark.title=Trenutni prikaz (kopiraj ili otvori u novom prozoru) +bookmark_label=Trenutni prikaz + +# Secondary toolbar and context menu +tools.title=Alati +tools_label=Alati +first_page.title=Idi na prvu stranu +first_page_label=Idi na prvu stranu +last_page.title=Idi na zadnju stranu +last_page_label=Idi na zadnju stranu +page_rotate_cw.title=Rotiraj u smjeru kazaljke na satu +page_rotate_cw_label=Rotiraj u smjeru kazaljke na satu +page_rotate_ccw.title=Rotiraj suprotno smjeru kazaljke na satu +page_rotate_ccw_label=Rotiraj suprotno smjeru kazaljke na satu + +cursor_text_select_tool.title=Omogući alat za označavanje teksta +cursor_text_select_tool_label=Alat za označavanje teksta +cursor_hand_tool.title=Omogući ručni alat +cursor_hand_tool_label=Ručni alat + +# Document properties dialog box +document_properties.title=Svojstva dokumenta... +document_properties_label=Svojstva dokumenta... +document_properties_file_name=Naziv fajla: +document_properties_file_size=Veličina fajla: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bajta) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bajta) +document_properties_title=Naslov: +document_properties_author=Autor: +document_properties_subject=Predmet: +document_properties_keywords=Ključne riječi: +document_properties_creation_date=Datum kreiranja: +document_properties_modification_date=Datum promjene: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Kreator: +document_properties_producer=PDF stvaratelj: +document_properties_version=PDF verzija: +document_properties_page_count=Broj stranica: +document_properties_page_size=Veličina stranice: +document_properties_page_size_unit_inches=u +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=uspravno +document_properties_page_size_orientation_landscape=vodoravno +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Pismo +document_properties_page_size_name_legal=Pravni +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +document_properties_close=Zatvori + +print_progress_message=Pripremam dokument za štampu… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Otkaži + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Uključi/isključi bočnu traku +toggle_sidebar_label=Uključi/isključi bočnu traku +document_outline.title=Prikaži outline dokumenta (dvoklik za skupljanje/širenje svih stavki) +document_outline_label=Konture dokumenta +attachments.title=Prikaži priloge +attachments_label=Prilozi +thumbs.title=Prikaži thumbnailove +thumbs_label=Thumbnailovi +findbar.title=Pronađi u dokumentu +findbar_label=Pronađi + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Strana {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Thumbnail strane {{page}} + +# Find panel button title and messages +find_input.title=Pronađi +find_input.placeholder=Pronađi u dokumentu… +find_previous.title=Pronađi prethodno pojavljivanje fraze +find_previous_label=Prethodno +find_next.title=Pronađi sljedeće pojavljivanje fraze +find_next_label=Sljedeće +find_highlight=Označi sve +find_match_case_label=Osjetljivost na karaktere +find_reached_top=Dostigao sam vrh dokumenta, nastavljam sa dna +find_reached_bottom=Dostigao sam kraj dokumenta, nastavljam sa vrha +find_not_found=Fraza nije pronađena + +# Error panel labels +error_more_info=Više informacija +error_less_info=Manje informacija +error_close=Zatvori +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Poruka: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fajl: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Linija: {{line}} +rendering_error=Došlo je do greške prilikom renderiranja strane. + +# Predefined zoom values +page_scale_width=Širina strane +page_scale_fit=Uklopi stranu +page_scale_auto=Automatsko uvećanje +page_scale_actual=Stvarna veličina +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=Došlo je do greške prilikom učitavanja PDF-a. +invalid_file_error=Neispravan ili oštećen PDF fajl. +missing_file_error=Nedostaje PDF fajl. +unexpected_response_error=Neočekivani odgovor servera. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} pribilješka] +password_label=Upišite lozinku da biste otvorili ovaj PDF fajl. +password_invalid=Pogrešna lozinka. Pokušajte ponovo. +password_ok=OK +password_cancel=Otkaži + +printing_not_supported=Upozorenje: Štampanje nije u potpunosti podržano u ovom browseru. +printing_not_ready=Upozorenje: PDF nije u potpunosti učitan za štampanje. +web_fonts_disabled=Web fontovi su onemogućeni: nemoguće koristiti ubačene PDF fontove. + diff --git a/www/include/vendor/pdfjs/web/locale/ca/viewer.properties b/www/include/vendor/pdfjs/web/locale/ca/viewer.properties new file mode 100644 index 0000000..969b91e --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/ca/viewer.properties @@ -0,0 +1,279 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Pàgina anterior +previous_label=Anterior +next.title=Pàgina següent +next_label=Següent + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Pàgina +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=de {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} de {{pagesCount}}) + +zoom_out.title=Redueix +zoom_out_label=Redueix +zoom_in.title=Amplia +zoom_in_label=Amplia +zoom.title=Escala +presentation_mode.title=Canvia al mode de presentació +presentation_mode_label=Mode de presentació +open_file.title=Obre el fitxer +open_file_label=Obre +print.title=Imprimeix +print_label=Imprimeix +download.title=Baixa +download_label=Baixa +save.title=Desa +save_label=Desa +bookmark.title=Vista actual (copia o obre en una finestra nova) +bookmark_label=Vista actual + +bookmark1.title=Pàgina actual (mostra l'URL de la pàgina actual) +bookmark1_label=Pàgina actual + +# Secondary toolbar and context menu +tools.title=Eines +tools_label=Eines +first_page.title=Vés a la primera pàgina +first_page_label=Vés a la primera pàgina +last_page.title=Vés a l'última pàgina +last_page_label=Vés a l'última pàgina +page_rotate_cw.title=Gira cap a la dreta +page_rotate_cw_label=Gira cap a la dreta +page_rotate_ccw.title=Gira cap a l'esquerra +page_rotate_ccw_label=Gira cap a l'esquerra + +cursor_text_select_tool.title=Habilita l'eina de selecció de text +cursor_text_select_tool_label=Eina de selecció de text +cursor_hand_tool.title=Habilita l'eina de mà +cursor_hand_tool_label=Eina de mà + +scroll_page.title=Usa el desplaçament de pàgina +scroll_page_label=Desplaçament de pàgina +scroll_vertical.title=Utilitza el desplaçament vertical +scroll_vertical_label=Desplaçament vertical +scroll_horizontal.title=Utilitza el desplaçament horitzontal +scroll_horizontal_label=Desplaçament horitzontal +scroll_wrapped.title=Activa el desplaçament continu +scroll_wrapped_label=Desplaçament continu + +spread_none.title=No agrupis les pàgines de dues en dues +spread_none_label=Una sola pàgina +spread_odd.title=Mostra dues pàgines començant per les pàgines de numeració senar +spread_odd_label=Doble pàgina (senar) +spread_even.title=Mostra dues pàgines començant per les pàgines de numeració parell +spread_even_label=Doble pàgina (parell) + +# Document properties dialog box +document_properties.title=Propietats del document… +document_properties_label=Propietats del document… +document_properties_file_name=Nom del fitxer: +document_properties_file_size=Mida del fitxer: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Títol: +document_properties_author=Autor: +document_properties_subject=Assumpte: +document_properties_keywords=Paraules clau: +document_properties_creation_date=Data de creació: +document_properties_modification_date=Data de modificació: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Creador: +document_properties_producer=Generador de PDF: +document_properties_version=Versió de PDF: +document_properties_page_count=Nombre de pàgines: +document_properties_page_size=Mida de la pàgina: +document_properties_page_size_unit_inches=polzades +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=vertical +document_properties_page_size_orientation_landscape=apaïsat +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Carta +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Vista web ràpida: +document_properties_linearized_yes=Sí +document_properties_linearized_no=No +document_properties_close=Tanca + +print_progress_message=S'està preparant la impressió del document… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cancel·la + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Mostra/amaga la barra lateral +toggle_sidebar_notification2.title=Mostra/amaga la barra lateral (el document conté un esquema, adjuncions o capes) +toggle_sidebar_label=Mostra/amaga la barra lateral +document_outline.title=Mostra l'esquema del document (doble clic per ampliar/reduir tots els elements) +document_outline_label=Esquema del document +attachments.title=Mostra les adjuncions +attachments_label=Adjuncions +layers.title=Mostra les capes (doble clic per restablir totes les capes al seu estat per defecte) +layers_label=Capes +thumbs.title=Mostra les miniatures +thumbs_label=Miniatures +current_outline_item.title=Cerca l'element d'esquema actual +current_outline_item_label=Element d'esquema actual +findbar.title=Cerca al document +findbar_label=Cerca + +additional_layers=Capes addicionals +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Pàgina {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Pàgina {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura de la pàgina {{page}} + +# Find panel button title and messages +find_input.title=Cerca +find_input.placeholder=Cerca al document… +find_previous.title=Cerca l'anterior coincidència de l'expressió +find_previous_label=Anterior +find_next.title=Cerca la següent coincidència de l'expressió +find_next_label=Següent +find_highlight=Ressalta-ho tot +find_match_case_label=Distingeix entre majúscules i minúscules +find_match_diacritics_label=Respecta els diacrítics +find_entire_word_label=Paraules senceres +find_reached_top=S'ha arribat al principi del document, es continua pel final +find_reached_bottom=S'ha arribat al final del document, es continua pel principi +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} de {{total}} coincidència +find_match_count[two]={{current}} de {{total}} coincidències +find_match_count[few]={{current}} de {{total}} coincidències +find_match_count[many]={{current}} de {{total}} coincidències +find_match_count[other]={{current}} de {{total}} coincidències +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Més de {{limit}} coincidències +find_match_count_limit[one]=Més d'{{limit}} coincidència +find_match_count_limit[two]=Més de {{limit}} coincidències +find_match_count_limit[few]=Més de {{limit}} coincidències +find_match_count_limit[many]=Més de {{limit}} coincidències +find_match_count_limit[other]=Més de {{limit}} coincidències +find_not_found=No s'ha trobat l'expressió + +# Error panel labels +error_more_info=Més informació +error_less_info=Menys informació +error_close=Tanca +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (muntatge: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Missatge: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Pila: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fitxer: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Línia: {{line}} + +# Predefined zoom values +page_scale_width=Amplada de la pàgina +page_scale_fit=Ajusta la pàgina +page_scale_auto=Zoom automàtic +page_scale_actual=Mida real +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=S'està carregant… + +# Loading indicator messages +loading_error=S'ha produït un error en carregar el PDF. +invalid_file_error=El fitxer PDF no és vàlid o està malmès. +missing_file_error=Falta el fitxer PDF. +unexpected_response_error=Resposta inesperada del servidor. + +rendering_error=S'ha produït un error mentre es renderitzava la pàgina. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anotació {{type}}] +password_label=Introduïu la contrasenya per obrir aquest fitxer PDF. +password_invalid=La contrasenya no és vàlida. Torneu-ho a provar. +password_ok=D'acord +password_cancel=Cancel·la + +printing_not_supported=Avís: la impressió no és plenament funcional en aquest navegador. +printing_not_ready=Atenció: el PDF no s'ha acabat de carregar per imprimir-lo. +web_fonts_disabled=Els tipus de lletra web estan desactivats: no es poden utilitzar els tipus de lletra incrustats al PDF. + +# Editor +editor_free_text2.title=Text +editor_free_text2_label=Text +editor_ink2.title=Dibuixa +editor_ink2_label=Dibuixa + +free_text2_default_content=Escriviu… + +# Editor Parameters +editor_free_text_color=Color +editor_free_text_size=Mida +editor_ink_color=Color +editor_ink_thickness=Gruix +editor_ink_opacity=Opacitat + +# Editor aria +editor_free_text2_aria_label=Editor de text +editor_ink2_aria_label=Editor de dibuix +editor_ink_canvas_aria_label=Imatge creada per l'usuari diff --git a/www/include/vendor/pdfjs/web/locale/cak/viewer.properties b/www/include/vendor/pdfjs/web/locale/cak/viewer.properties new file mode 100644 index 0000000..211209e --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/cak/viewer.properties @@ -0,0 +1,275 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Jun kan ruxaq +previous_label=Jun kan +next.title=Jun chik ruxaq +next_label=Jun chik + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Ruxaq +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=richin {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} richin {{pagesCount}}) + +zoom_out.title=Tich'utinirisäx +zoom_out_label=Tich'utinirisäx +zoom_in.title=Tinimirisäx +zoom_in_label=Tinimirisäx +zoom.title=Sum +presentation_mode.title=Tijal ri rub'anikil niwachin +presentation_mode_label=Pa rub'eyal niwachin +open_file.title=Tijaq Yakb'äl +open_file_label=Tijaq +print.title=Titz'ajb'äx +print_label=Titz'ajb'äx +download.title=Tiqasäx +download_label=Tiqasäx +save.title=Tiyak +save_label=Tiyak +bookmark.title=Rutz'etik wakami (tiwachib'ëx o tijaq pa jun k'ak'a' tzuwäch) +bookmark_label=Rutzub'al wakami + +bookmark1_label=Ruxaq k'o wakami + +# Secondary toolbar and context menu +tools.title=Samajib'äl +tools_label=Samajib'äl +first_page.title=Tib'e pa nab'ey ruxaq +first_page_label=Tib'e pa nab'ey ruxaq +last_page.title=Tib'e pa ruk'isib'äl ruxaq +last_page_label=Tib'e pa ruk'isib'äl ruxaq +page_rotate_cw.title=Tisutïx pan ajkiq'a' +page_rotate_cw_label=Tisutïx pan ajkiq'a' +page_rotate_ccw.title=Tisutïx pan ajxokon +page_rotate_ccw_label=Tisutïx pan ajxokon + +cursor_text_select_tool.title=Titzij ri rusamajib'al Rucha'ik Rucholajem Tzij +cursor_text_select_tool_label=Rusamajib'al Rucha'ik Rucholajem Tzij +cursor_hand_tool.title=Titzij ri q'ab'aj samajib'äl +cursor_hand_tool_label=Q'ab'aj Samajib'äl + +scroll_vertical.title=Tokisäx Pa'äl Q'axanem +scroll_vertical_label=Pa'äl Q'axanem +scroll_horizontal.title=Tokisäx Kotz'öl Q'axanem +scroll_horizontal_label=Kotz'öl Q'axanem +scroll_wrapped.title=Tokisäx Tzub'aj Q'axanem +scroll_wrapped_label=Tzub'aj Q'axanem + +spread_none.title=Man ketun taq ruxaq pa rub'eyal wuj +spread_none_label=Majun Rub'eyal +spread_odd.title=Ke'atunu' ri taq ruxaq rik'in natikirisaj rik'in jun man k'ulaj ta rajilab'al +spread_odd_label=Man K'ulaj Ta Rub'eyal +spread_even.title=Ke'atunu' ri taq ruxaq rik'in natikirisaj rik'in jun k'ulaj rajilab'al +spread_even_label=K'ulaj Rub'eyal + +# Document properties dialog box +document_properties.title=Taq richinil wuj… +document_properties_label=Taq richinil wuj… +document_properties_file_name=Rub'i' yakb'äl: +document_properties_file_size=Runimilem yakb'äl: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=B'i'aj: +document_properties_author=B'anel: +document_properties_subject=Taqikil: +document_properties_keywords=Kixe'el taq tzij: +document_properties_creation_date=Ruq'ijul xtz'uk: +document_properties_modification_date=Ruq'ijul xjalwachïx: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Q'inonel: +document_properties_producer=PDF b'anöy: +document_properties_version=PDF ruwäch: +document_properties_page_count=Jarupe' ruxaq: +document_properties_page_size=Runimilem ri Ruxaq: +document_properties_page_size_unit_inches=pa +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=rupalem +document_properties_page_size_orientation_landscape=rukotz'olem +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Loman wuj +document_properties_page_size_name_legal=Taqanel tzijol +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Anin Rutz'etik Ajk'amaya'l: +document_properties_linearized_yes=Ja' +document_properties_linearized_no=Mani +document_properties_close=Titz'apïx + +print_progress_message=Ruchojmirisaxik wuj richin nitz'ajb'äx… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Tiq'at + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Tijal ri ajxikin kajtz'ik +toggle_sidebar_notification2.title=Tik'ex ri ajxikin yuqkajtz'ik (ri wuj eruk'wan taq ruchi'/taqo/kuchuj) +toggle_sidebar_label=Tijal ri ajxikin kajtz'ik +document_outline.title=Tik'ut pe ruch'akulal wuj (kamul-pitz'oj richin nirik'/nich'utinirisäx ronojel ruch'akulal) +document_outline_label=Ruch'akulal wuj +attachments.title=Kek'ut pe ri taq taqoj +attachments_label=Taq taqoj +layers.title=Kek'ut taq Kuchuj (ka'i'-pitz' richin yetzolïx ronojel ri taq kuchuj e k'o wi) +layers_label=Taq kuchuj +thumbs.title=Kek'ut pe taq ch'utiq +thumbs_label=Koköj +current_outline_item.title=Kekanöx Taq Ch'akulal Kik'wan Chib'äl +current_outline_item_label=Taq Ch'akulal Kik'wan Chib'äl +findbar.title=Tikanöx chupam ri wuj +findbar_label=Tikanöx + +additional_layers=Tz'aqat ta Kuchuj +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Ruxaq {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Ruxaq {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Ruch'utinirisaxik ruxaq {{page}} + +# Find panel button title and messages +find_input.title=Tikanöx +find_input.placeholder=Tikanöx pa wuj… +find_previous.title=Tib'an b'enam pa ri jun kan q'aptzij xilitäj +find_previous_label=Jun kan +find_next.title=Tib'e pa ri jun chik pajtzij xilitäj +find_next_label=Jun chik +find_highlight=Tiya' retal ronojel +find_match_case_label=Tuk'äm ri' kik'in taq nimatz'ib' chuqa' taq ch'utitz'ib' +find_match_diacritics_label=Tiya' Kikojol Tz'aqat taq Tz'ib' +find_entire_word_label=Tz'aqät taq tzij +find_reached_top=Xb'eq'i' ri rutikirib'al wuj, xtikanöx k'a pa ruk'isib'äl +find_reached_bottom=Xb'eq'i' ri ruk'isib'äl wuj, xtikanöx pa rutikirib'al +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} richin {{total}} nuk'äm ri' +find_match_count[two]={{current}} richin {{total}} nikik'äm ki' +find_match_count[few]={{current}} richin {{total}} nikik'äm ki' +find_match_count[many]={{current}} richin {{total}} nikik'äm ki' +find_match_count[other]={{current}} richin {{total}} nikik'äm ki' +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=K'ïy chi re {{limit}} nikik'äm ki' +find_match_count_limit[one]=K'ïy chi re {{limit}} nuk'äm ri' +find_match_count_limit[two]=K'ïy chi re {{limit}} nikik'äm ki' +find_match_count_limit[few]=K'ïy chi re {{limit}} nikik'äm ki' +find_match_count_limit[many]=K'ïy chi re {{limit}} nikik'äm ki' +find_match_count_limit[other]=K'ïy chi re {{limit}} nikik'äm ki' +find_not_found=Man xilitäj ta ri pajtzij + +# Error panel labels +error_more_info=Ch'aqa' chik rutzijol +error_less_info=Jub'a' ok rutzijol +error_close=Titz'apïx +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Uqxa'n: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Tzub'aj: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Yakb'äl: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=B'ey: {{line}} + +# Predefined zoom values +page_scale_width=Ruwa ruxaq +page_scale_fit=Tinuk' ruxaq +page_scale_auto=Yonil chi nimilem +page_scale_actual=Runimilem Wakami +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Nisamäj… + +# Loading indicator messages +loading_error=\u0020Xk'ulwachitäj jun sach'oj toq xnuk'ux ri PDF . +invalid_file_error=Man oke ta o yujtajinäq ri PDF yakb'äl. +missing_file_error=Man xilitäj ta ri PDF yakb'äl. +unexpected_response_error=Man oyob'en ta tz'olin rutzij ruk'u'x samaj. + +rendering_error=Xk'ulwachitäj jun sachoj toq ninuk'wachij ri ruxaq. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Tz'ib'anïk] +password_label=Tatz'ib'aj ri ewan tzij richin najäq re yakb'äl re' pa PDF. +password_invalid=Man okel ta ri ewan tzij: Tatojtob'ej chik. +password_ok=Ütz +password_cancel=Tiq'at + +printing_not_supported=Rutzijol k'ayewal: Ri rutz'ajb'axik man koch'el ta ronojel pa re okik'amaya'l re'. +printing_not_ready=Rutzijol k'ayewal: Ri PDF man xusamajij ta ronojel richin nitz'ajb'äx. +web_fonts_disabled=E chupül ri taq ajk'amaya'l tz'ib': man tikirel ta nokisäx ri taq tz'ib' PDF pa ch'ikenïk + +# Editor +editor_free_text2.title=Rucholajem tz'ib' +editor_free_text2_label=Rucholajem tz'ib' +editor_ink2.title=Tiwachib'ëx +editor_ink2_label=Tiwachib'ëx + +free_text2_default_content=Titikitisäx rutz'ib'axik… + +# Editor Parameters +editor_free_text_color=B'onil +editor_free_text_size=Nimilem +editor_ink_color=B'onil +editor_ink_thickness=Rupimil +editor_ink_opacity=Q'equmal + +# Editor aria +editor_free_text2_aria_label=Nuk'unel tz'ib'atzij +editor_ink2_aria_label=Nuk'unel wachib'äl diff --git a/www/include/vendor/pdfjs/web/locale/ckb/viewer.properties b/www/include/vendor/pdfjs/web/locale/ckb/viewer.properties new file mode 100644 index 0000000..91403cd --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/ckb/viewer.properties @@ -0,0 +1,234 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=پەڕەی پێشوو +previous_label=پێشوو +next.title=پەڕەی دوواتر +next_label=دوواتر + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=پەرە +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=لە {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} لە {{pagesCount}}) + +zoom_out.title=ڕۆچوونی +zoom_out_label=ڕۆچوونی +zoom_in.title=هێنانەپێش +zoom_in_label=هێنانەپێش +zoom.title=زووم +presentation_mode.title=گۆڕین بۆ دۆخی پێشکەشکردن +presentation_mode_label=دۆخی پێشکەشکردن +open_file.title=پەڕگە بکەرەوە +open_file_label=کردنەوە +print.title=چاپکردن +print_label=چاپکردن +download.title=داگرتن +download_label=داگرتن +bookmark.title=پێشبینینی ئێستا(لەبەریبگرەوە یان پەنجەرەیەکی نوێ بکەرەوە) +bookmark_label=پیشبینینی ئێستا + +# Secondary toolbar and context menu +tools.title=ئامرازەکان +tools_label=ئامرازەکان +first_page.title=برۆ بۆ یەکەم پەڕە +first_page_label=بڕۆ بۆ یەکەم پەڕە +last_page.title=بڕۆ بۆ کۆتا پەڕە +last_page_label=بڕۆ بۆ کۆتا پەڕە +page_rotate_cw.title=ئاڕاستەی میلی کاتژمێر +page_rotate_cw_label=ئاڕاستەی میلی کاتژمێر +page_rotate_ccw.title=پێچەوانەی میلی کاتژمێر +page_rotate_ccw_label=پێچەوانەی میلی کاتژمێر + +cursor_text_select_tool.title=توڵامرازی نیشانکەری دەق چالاک بکە +cursor_text_select_tool_label=توڵامرازی نیشانکەری دەق +cursor_hand_tool.title=توڵامرازی دەستی چالاک بکە +cursor_hand_tool_label=توڵامرازی دەستی + +scroll_vertical.title=ناردنی ئەستوونی بەکاربێنە +scroll_vertical_label=ناردنی ئەستوونی +scroll_horizontal.title=ناردنی ئاسۆیی بەکاربێنە +scroll_horizontal_label=ناردنی ئاسۆیی +scroll_wrapped.title=ناردنی لوولکراو بەکاربێنە +scroll_wrapped_label=ناردنی لوولکراو + + +# Document properties dialog box +document_properties.title=تایبەتمەندییەکانی بەڵگەنامە... +document_properties_label=تایبەتمەندییەکانی بەڵگەنامە... +document_properties_file_name=ناوی پەڕگە: +document_properties_file_size=قەبارەی پەڕگە: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} کب ({{size_b}} بایت) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} مب ({{size_b}} بایت) +document_properties_title=سەردێڕ: +document_properties_author=نووسەر +document_properties_subject=بابەت: +document_properties_keywords=کلیلەوشە: +document_properties_creation_date=بەرواری درووستکردن: +document_properties_modification_date=بەرواری دەستکاریکردن: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=درووستکەر: +document_properties_producer=بەرهەمهێنەری PDF: +document_properties_version=وەشانی PDF: +document_properties_page_count=ژمارەی پەرەکان: +document_properties_page_size=قەبارەی پەڕە: +document_properties_page_size_unit_inches=ئینچ +document_properties_page_size_unit_millimeters=ملم +document_properties_page_size_orientation_portrait=پۆرترەیت(درێژ) +document_properties_page_size_orientation_landscape=پانیی +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=نامە +document_properties_page_size_name_legal=یاسایی +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=پیشاندانی وێبی خێرا: +document_properties_linearized_yes=بەڵێ +document_properties_linearized_no=نەخێر +document_properties_close=داخستن + +print_progress_message=بەڵگەنامە ئامادەدەکرێت بۆ چاپکردن... +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=پاشگەزبوونەوە + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=لاتەنیشت پیشاندان/شاردنەوە +toggle_sidebar_label=لاتەنیشت پیشاندان/شاردنەوە +document_outline_label=سنووری چوارچێوە +attachments.title=پاشکۆکان پیشان بدە +attachments_label=پاشکۆکان +layers_label=چینەکان +thumbs.title=وێنۆچکە پیشان بدە +thumbs_label=وێنۆچکە +findbar.title=لە بەڵگەنامە بگەرێ +findbar_label=دۆزینەوە + +additional_layers=چینی زیاتر +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=پەڕەی {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=وێنۆچکەی پەڕەی {{page}} + +# Find panel button title and messages +find_input.title=دۆزینەوە +find_input.placeholder=لە بەڵگەنامە بگەرێ... +find_previous.title=هەبوونی پێشوو بدۆزرەوە لە ڕستەکەدا +find_previous_label=پێشوو +find_next.title=هەبوونی داهاتوو بدۆزەرەوە لە ڕستەکەدا +find_next_label=دوواتر +find_highlight=هەمووی نیشانە بکە +find_match_case_label=دۆخی لەیەکچوون +find_entire_word_label=هەموو وشەکان +find_reached_top=گەشتیتە سەرەوەی بەڵگەنامە، لە خوارەوە دەستت پێکرد +find_reached_bottom=گەشتیتە کۆتایی بەڵگەنامە. لەسەرەوە دەستت پێکرد +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} لە کۆی {{total}} لەیەکچوو +find_match_count[two]={{current}} لە کۆی {{total}} لەیەکچوو +find_match_count[few]={{current}} لە کۆی {{total}} لەیەکچوو +find_match_count[many]={{current}} لە کۆی {{total}} لەیەکچوو +find_match_count[other]={{current}} لە کۆی {{total}} لەیەکچوو +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=زیاتر لە {{limit}} لەیەکچوو +find_match_count_limit[one]=زیاتر لە {{limit}} لەیەکچوو +find_match_count_limit[two]=زیاتر لە {{limit}} لەیەکچوو +find_match_count_limit[few]=زیاتر لە {{limit}} لەیەکچوو +find_match_count_limit[many]=زیاتر لە {{limit}} لەیەکچوو +find_match_count_limit[other]=زیاتر لە {{limit}} لەیەکچوو +find_not_found=نووسین نەدۆزرایەوە + +# Error panel labels +error_more_info=زانیاری زیاتر +error_less_info=زانیاری کەمتر +error_close=داخستن +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=پەیام: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=لەسەریەک: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=پەڕگە: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=هێڵ: {{line}} +rendering_error=هەڵەیەک ڕوویدا لە کاتی پوختەکردنی (ڕێندەر) پەڕە. + +# Predefined zoom values +page_scale_width=پانی پەڕە +page_scale_fit=پڕبوونی پەڕە +page_scale_auto=زوومی خۆکار +page_scale_actual=قەبارەی ڕاستی +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=هەڵەیەک ڕوویدا لە کاتی بارکردنی PDF. +invalid_file_error=پەڕگەی pdf تێکچووە یان نەگونجاوە. +missing_file_error=پەڕگەی pdf بوونی نیە. +unexpected_response_error=وەڵامی ڕاژەخوازی نەخوازراو. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} سەرنج] +password_label=وشەی تێپەڕ بنووسە بۆ کردنەوەی پەڕگەی pdf. +password_invalid=وشەی تێپەڕ هەڵەیە. تکایە دووبارە هەوڵ بدەرەوە. +password_ok=باشە +password_cancel=پاشگەزبوونەوە + +printing_not_supported=ئاگاداربە: چاپکردن بە تەواوی پشتگیر ناکرێت لەم وێبگەڕە. +printing_not_ready=ئاگاداربە: PDF بە تەواوی بارنەبووە بۆ چاپکردن. +web_fonts_disabled=جۆرەپیتی وێب ناچالاکە: نەتوانی جۆرەپیتی تێخراوی ناو pdfـەکە بەکاربێت. + diff --git a/www/include/vendor/pdfjs/web/locale/cs/viewer.properties b/www/include/vendor/pdfjs/web/locale/cs/viewer.properties new file mode 100644 index 0000000..173f90a --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/cs/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Přejde na předchozí stránku +previous_label=Předchozí +next.title=Přejde na následující stránku +next_label=Další + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Stránka +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=z {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} z {{pagesCount}}) + +zoom_out.title=Zmenší velikost +zoom_out_label=Zmenšit +zoom_in.title=Zvětší velikost +zoom_in_label=Zvětšit +zoom.title=Nastaví velikost +presentation_mode.title=Přepne do režimu prezentace +presentation_mode_label=Režim prezentace +open_file.title=Otevře soubor +open_file_label=Otevřít +print.title=Vytiskne dokument +print_label=Vytisknout +download.title=Stáhne dokument +download_label=Stáhnout +save.title=Uložit +save_label=Uložit +bookmark.title=Současný pohled (kopírovat nebo otevřít v novém okně) +bookmark_label=Současný pohled + +bookmark1.title=Aktuální stránka (zobrazit URL od aktuální stránky) +bookmark1_label=Aktuální stránka + +# Secondary toolbar and context menu +tools.title=Nástroje +tools_label=Nástroje +first_page.title=Přejde na první stránku +first_page_label=Přejít na první stránku +last_page.title=Přejde na poslední stránku +last_page_label=Přejít na poslední stránku +page_rotate_cw.title=Otočí po směru hodin +page_rotate_cw_label=Otočit po směru hodin +page_rotate_ccw.title=Otočí proti směru hodin +page_rotate_ccw_label=Otočit proti směru hodin + +cursor_text_select_tool.title=Povolí výběr textu +cursor_text_select_tool_label=Výběr textu +cursor_hand_tool.title=Povolí nástroj ručička +cursor_hand_tool_label=Nástroj ručička + +scroll_page.title=Posouvat po stránkách +scroll_page_label=Posouvání po stránkách +scroll_vertical.title=Použít svislé posouvání +scroll_vertical_label=Svislé posouvání +scroll_horizontal.title=Použít vodorovné posouvání +scroll_horizontal_label=Vodorovné posouvání +scroll_wrapped.title=Použít postupné posouvání +scroll_wrapped_label=Postupné posouvání + +spread_none.title=Nesdružovat stránky +spread_none_label=Žádné sdružení +spread_odd.title=Sdruží stránky s umístěním lichých vlevo +spread_odd_label=Sdružení stránek (liché vlevo) +spread_even.title=Sdruží stránky s umístěním sudých vlevo +spread_even_label=Sdružení stránek (sudé vlevo) + +# Document properties dialog box +document_properties.title=Vlastnosti dokumentu… +document_properties_label=Vlastnosti dokumentu… +document_properties_file_name=Název souboru: +document_properties_file_size=Velikost souboru: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bajtů) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bajtů) +document_properties_title=Název stránky: +document_properties_author=Autor: +document_properties_subject=Předmět: +document_properties_keywords=Klíčová slova: +document_properties_creation_date=Datum vytvoření: +document_properties_modification_date=Datum úpravy: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Vytvořil: +document_properties_producer=Tvůrce PDF: +document_properties_version=Verze PDF: +document_properties_page_count=Počet stránek: +document_properties_page_size=Velikost stránky: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=na výšku +document_properties_page_size_orientation_landscape=na šířku +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Dopis +document_properties_page_size_name_legal=Právní dokument +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Rychlé zobrazování z webu: +document_properties_linearized_yes=Ano +document_properties_linearized_no=Ne +document_properties_close=Zavřít + +print_progress_message=Příprava dokumentu pro tisk… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}} % +print_progress_close=Zrušit + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Postranní lišta +toggle_sidebar_notification2.title=Přepnout postranní lištu (dokument obsahuje osnovu/přílohy/vrstvy) +toggle_sidebar_label=Postranní lišta +document_outline.title=Zobrazí osnovu dokumentu (poklepání přepne zobrazení všech položek) +document_outline_label=Osnova dokumentu +attachments.title=Zobrazí přílohy +attachments_label=Přílohy +layers.title=Zobrazit vrstvy (poklepáním obnovíte všechny vrstvy do výchozího stavu) +layers_label=Vrstvy +thumbs.title=Zobrazí náhledy +thumbs_label=Náhledy +current_outline_item.title=Najít aktuální položku v osnově +current_outline_item_label=Aktuální položka v osnově +findbar.title=Najde v dokumentu +findbar_label=Najít + +additional_layers=Další vrstvy +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Strana {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Strana {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Náhled strany {{page}} + +# Find panel button title and messages +find_input.title=Najít +find_input.placeholder=Najít v dokumentu… +find_previous.title=Najde předchozí výskyt hledaného textu +find_previous_label=Předchozí +find_next.title=Najde další výskyt hledaného textu +find_next_label=Další +find_highlight=Zvýraznit +find_match_case_label=Rozlišovat velikost +find_match_diacritics_label=Rozlišovat diakritiku +find_entire_word_label=Celá slova +find_reached_top=Dosažen začátek dokumentu, pokračuje se od konce +find_reached_bottom=Dosažen konec dokumentu, pokračuje se od začátku +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}}. z {{total}} výskytu +find_match_count[two]={{current}}. z {{total}} výskytů +find_match_count[few]={{current}}. z {{total}} výskytů +find_match_count[many]={{current}}. z {{total}} výskytů +find_match_count[other]={{current}}. z {{total}} výskytů +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Více než {{limit}} výskytů +find_match_count_limit[one]=Více než {{limit}} výskyt +find_match_count_limit[two]=Více než {{limit}} výskyty +find_match_count_limit[few]=Více než {{limit}} výskyty +find_match_count_limit[many]=Více než {{limit}} výskytů +find_match_count_limit[other]=Více než {{limit}} výskytů +find_not_found=Hledaný text nenalezen + +# Error panel labels +error_more_info=Více informací +error_less_info=Méně informací +error_close=Zavřít +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (sestavení: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Zpráva: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Zásobník: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Soubor: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Řádek: {{line}} + +# Predefined zoom values +page_scale_width=Podle šířky +page_scale_fit=Podle výšky +page_scale_auto=Automatická velikost +page_scale_actual=Skutečná velikost +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}} % + +# Loading indicator messages +loading=Načítání… +loading_error=Při nahrávání PDF nastala chyba. +invalid_file_error=Neplatný nebo chybný soubor PDF. +missing_file_error=Chybí soubor PDF. +unexpected_response_error=Neočekávaná odpověď serveru. + +rendering_error=Při vykreslování stránky nastala chyba. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anotace typu {{type}}] +password_label=Pro otevření PDF souboru vložte heslo. +password_invalid=Neplatné heslo. Zkuste to znovu. +password_ok=OK +password_cancel=Zrušit + +printing_not_supported=Upozornění: Tisk není v tomto prohlížeči plně podporován. +printing_not_ready=Upozornění: Dokument PDF není kompletně načten. +web_fonts_disabled=Webová písma jsou zakázána, proto není možné použít vložená písma PDF. + +# Editor +editor_free_text2.title=Text +editor_free_text2_label=Text +editor_ink2.title=Kreslení +editor_ink2_label=Kreslení + +free_text2_default_content=Začněte psát… + +# Editor Parameters +editor_free_text_color=Barva +editor_free_text_size=Velikost +editor_ink_color=Barva +editor_ink_thickness=Tloušťka +editor_ink_opacity=Průhlednost + +# Editor aria +editor_free_text2_aria_label=Textový editor +editor_ink2_aria_label=Editor kreslení +editor_ink_canvas_aria_label=Uživatelem vytvořený obrázek diff --git a/www/include/vendor/pdfjs/web/locale/cy/viewer.properties b/www/include/vendor/pdfjs/web/locale/cy/viewer.properties new file mode 100644 index 0000000..cd064a9 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/cy/viewer.properties @@ -0,0 +1,279 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Tudalen Flaenorol +previous_label=Blaenorol +next.title=Tudalen Nesaf +next_label=Nesaf + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Tudalen +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=o {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} o {{pagesCount}}) + +zoom_out.title=Chwyddo Allan +zoom_out_label=Chwyddo Allan +zoom_in.title=Chwyddo Mewn +zoom_in_label=Chwyddo Mewn +zoom.title=Chwyddo +presentation_mode.title=Newid i'r Modd Cyflwyno +presentation_mode_label=Modd Cyflwyno +open_file.title=Agor Ffeil +open_file_label=Agor +print.title=Argraffu +print_label=Argraffu +download.title=Llwytho i lawr +download_label=Llwytho i lawr +save.title=Cadw +save_label=Cadw +bookmark.title=Golwg cyfredol (copïo neu agor ffenestr newydd) +bookmark_label=Golwg Gyfredol + +bookmark1.title=Tudalen Gyfredol (Gweld URL o'r Dudalen Gyfredol) +bookmark1_label=Tudalen Gyfredol + +# Secondary toolbar and context menu +tools.title=Offer +tools_label=Offer +first_page.title=Mynd i'r Dudalen Gyntaf +first_page_label=Mynd i'r Dudalen Gyntaf +last_page.title=Mynd i'r Dudalen Olaf +last_page_label=Mynd i'r Dudalen Olaf +page_rotate_cw.title=Cylchdroi Clocwedd +page_rotate_cw_label=Cylchdroi Clocwedd +page_rotate_ccw.title=Cylchdroi Gwrthglocwedd +page_rotate_ccw_label=Cylchdroi Gwrthglocwedd + +cursor_text_select_tool.title=Galluogi Dewis Offeryn Testun +cursor_text_select_tool_label=Offeryn Dewis Testun +cursor_hand_tool.title=Galluogi Offeryn Llaw +cursor_hand_tool_label=Offeryn Llaw + +scroll_page.title=Defnyddio Sgrolio Tudalen +scroll_page_label=Sgrolio Tudalen +scroll_vertical.title=Defnyddio Sgrolio Fertigol +scroll_vertical_label=Sgrolio Fertigol +scroll_horizontal.title=Defnyddio Sgrolio Llorweddol +scroll_horizontal_label=Sgrolio Llorweddol +scroll_wrapped.title=Defnyddio Sgrolio Amlapio +scroll_wrapped_label=Sgrolio Amlapio + +spread_none.title=Peidio uno trawsdaleniadau +spread_none_label=Dim Trawsdaleniadau +spread_odd.title=Uno trawsdaleniadau gan gychwyn gyda thudalennau odrif +spread_odd_label=Trawsdaleniadau Odrif +spread_even.title=Uno trawsdaleniadau gan gychwyn gyda thudalennau eilrif +spread_even_label=Trawsdaleniadau Eilrif + +# Document properties dialog box +document_properties.title=Priodweddau Dogfen… +document_properties_label=Priodweddau Dogfen… +document_properties_file_name=Enw ffeil: +document_properties_file_size=Maint ffeil: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} beit) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} beit) +document_properties_title=Teitl: +document_properties_author=Awdur: +document_properties_subject=Pwnc: +document_properties_keywords=Allweddair: +document_properties_creation_date=Dyddiad Creu: +document_properties_modification_date=Dyddiad Addasu: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Crewr: +document_properties_producer=Cynhyrchydd PDF: +document_properties_version=Fersiwn PDF: +document_properties_page_count=Cyfrif Tudalen: +document_properties_page_size=Maint Tudalen: +document_properties_page_size_unit_inches=o fewn +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=portread +document_properties_page_size_orientation_landscape=tirlun +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Llythyr +document_properties_page_size_name_legal=Cyfreithiol +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Golwg Gwe Cyflym: +document_properties_linearized_yes=Iawn +document_properties_linearized_no=Na +document_properties_close=Cau + +print_progress_message=Paratoi dogfen ar gyfer ei hargraffu… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Diddymu + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Toglo'r Bar Ochr +toggle_sidebar_notification2.title=Toglo'r Bar Ochr (mae'r ddogfen yn cynnwys amlinelliadau/atodiadau/haenau) +toggle_sidebar_label=Toglo'r Bar Ochr +document_outline.title=Dangos Amlinell Dogfen (clic dwbl i ymestyn/cau pob eitem) +document_outline_label=Amlinelliad Dogfen +attachments.title=Dangos Atodiadau +attachments_label=Atodiadau +layers.title=Dangos Haenau (cliciwch ddwywaith i ailosod yr holl haenau i'r cyflwr rhagosodedig) +layers_label=Haenau +thumbs.title=Dangos Lluniau Bach +thumbs_label=Lluniau Bach +current_outline_item.title=Canfod yr Eitem Amlinellol Gyfredol +current_outline_item_label=Yr Eitem Amlinellol Gyfredol +findbar.title=Canfod yn y Ddogfen +findbar_label=Canfod + +additional_layers=Haenau Ychwanegol +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Tudalen {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Tudalen {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Llun Bach Tudalen {{page}} + +# Find panel button title and messages +find_input.title=Canfod +find_input.placeholder=Canfod yn y ddogfen… +find_previous.title=Canfod enghraifft flaenorol o'r ymadrodd +find_previous_label=Blaenorol +find_next.title=Canfod enghraifft nesaf yr ymadrodd +find_next_label=Nesaf +find_highlight=Amlygu Popeth +find_match_case_label=Cydweddu Maint +find_match_diacritics_label=Diacritigau Cyfatebol +find_entire_word_label=Geiriau Cyfan +find_reached_top=Wedi cyrraedd brig y dudalen, parhau o'r gwaelod +find_reached_bottom=Wedi cyrraedd diwedd y dudalen, parhau o'r brig +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} o {{total}} cydweddiad +find_match_count[two]={{current}} o {{total}} cydweddiad +find_match_count[few]={{current}} o {{total}} cydweddiad +find_match_count[many]={{current}} o {{total}} cydweddiad +find_match_count[other]={{current}} o {{total}} cydweddiad +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Mwy na {{limit}} cydweddiad +find_match_count_limit[one]=Mwy na {{limit}} cydweddiad +find_match_count_limit[two]=Mwy na {{limit}} cydweddiad +find_match_count_limit[few]=Mwy na {{limit}} cydweddiad +find_match_count_limit[many]=Mwy na {{limit}} cydweddiad +find_match_count_limit[other]=Mwy na {{limit}} cydweddiad +find_not_found=Heb ganfod ymadrodd + +# Error panel labels +error_more_info=Rhagor o Wybodaeth +error_less_info=Llai o wybodaeth +error_close=Cau +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Neges: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stac: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Ffeil: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Llinell: {{line}} + +# Predefined zoom values +page_scale_width=Lled Tudalen +page_scale_fit=Ffit Tudalen +page_scale_auto=Chwyddo Awtomatig +page_scale_actual=Maint Gwirioneddol +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Yn llwytho… + +# Loading indicator messages +loading_error=Digwyddodd gwall wrth lwytho'r PDF. +invalid_file_error=Ffeil PDF annilys neu llwgr. +missing_file_error=Ffeil PDF coll. +unexpected_response_error=Ymateb annisgwyl gan y gweinydd. + +rendering_error=Digwyddodd gwall wrth adeiladu'r dudalen. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anodiad {{type}} ] +password_label=Rhowch gyfrinair i agor y PDF. +password_invalid=Cyfrinair annilys. Ceisiwch eto. +password_ok=Iawn +password_cancel=Diddymu + +printing_not_supported=Rhybudd: Nid yw argraffu yn cael ei gynnal yn llawn gan y porwr. +printing_not_ready=Rhybudd: Nid yw'r PDF wedi ei lwytho'n llawn ar gyfer argraffu. +web_fonts_disabled=Ffontiau gwe wedi eu hanalluogi: methu defnyddio ffontiau PDF mewnblanedig. + +# Editor +editor_free_text2.title=Testun +editor_free_text2_label=Testun +editor_ink2.title=Lluniadu +editor_ink2_label=Lluniadu + +free_text2_default_content=Cychwyn teipio… + +# Editor Parameters +editor_free_text_color=Lliw +editor_free_text_size=Maint +editor_ink_color=Lliw +editor_ink_thickness=Trwch +editor_ink_opacity=Didreiddedd + +# Editor aria +editor_free_text2_aria_label=Golygydd Testun +editor_ink2_aria_label=Golygydd Lluniadu +editor_ink_canvas_aria_label=Delwedd wedi'i chreu gan ddefnyddwyr diff --git a/www/include/vendor/pdfjs/web/locale/da/viewer.properties b/www/include/vendor/pdfjs/web/locale/da/viewer.properties new file mode 100644 index 0000000..c9bb6d1 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/da/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Forrige side +previous_label=Forrige +next.title=Næste side +next_label=Næste + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Side +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=af {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} af {{pagesCount}}) + +zoom_out.title=Zoom ud +zoom_out_label=Zoom ud +zoom_in.title=Zoom ind +zoom_in_label=Zoom ind +zoom.title=Zoom +presentation_mode.title=Skift til fuldskærmsvisning +presentation_mode_label=Fuldskærmsvisning +open_file.title=Åbn fil +open_file_label=Åbn +print.title=Udskriv +print_label=Udskriv +download.title=Hent +download_label=Hent +save.title=Gem +save_label=Gem +bookmark.title=Aktuel visning (kopier eller åbn i et nyt vindue) +bookmark_label=Aktuel visning + +bookmark1.title=Aktuel side (vis URL fra den aktuelle side) +bookmark1_label=Aktuel side + +# Secondary toolbar and context menu +tools.title=Funktioner +tools_label=Funktioner +first_page.title=Gå til første side +first_page_label=Gå til første side +last_page.title=Gå til sidste side +last_page_label=Gå til sidste side +page_rotate_cw.title=Roter med uret +page_rotate_cw_label=Roter med uret +page_rotate_ccw.title=Roter mod uret +page_rotate_ccw_label=Roter mod uret + +cursor_text_select_tool.title=Aktiver markeringsværktøj +cursor_text_select_tool_label=Markeringsværktøj +cursor_hand_tool.title=Aktiver håndværktøj +cursor_hand_tool_label=Håndværktøj + +scroll_page.title=Brug sidescrolling +scroll_page_label=Sidescrolling +scroll_vertical.title=Brug vertikal scrolling +scroll_vertical_label=Vertikal scrolling +scroll_horizontal.title=Brug horisontal scrolling +scroll_horizontal_label=Horisontal scrolling +scroll_wrapped.title=Brug ombrudt scrolling +scroll_wrapped_label=Ombrudt scrolling + +spread_none.title=Vis enkeltsider +spread_none_label=Enkeltsider +spread_odd.title=Vis opslag med ulige sidenumre til venstre +spread_odd_label=Opslag med forside +spread_even.title=Vis opslag med lige sidenumre til venstre +spread_even_label=Opslag uden forside + +# Document properties dialog box +document_properties.title=Dokumentegenskaber… +document_properties_label=Dokumentegenskaber… +document_properties_file_name=Filnavn: +document_properties_file_size=Filstørrelse: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Titel: +document_properties_author=Forfatter: +document_properties_subject=Emne: +document_properties_keywords=Nøgleord: +document_properties_creation_date=Oprettet: +document_properties_modification_date=Redigeret: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Program: +document_properties_producer=PDF-producent: +document_properties_version=PDF-version: +document_properties_page_count=Antal sider: +document_properties_page_size=Sidestørrelse: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=stående +document_properties_page_size_orientation_landscape=liggende +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Hurtig web-visning: +document_properties_linearized_yes=Ja +document_properties_linearized_no=Nej +document_properties_close=Luk + +print_progress_message=Forbereder dokument til udskrivning… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Annuller + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Slå sidepanel til eller fra +toggle_sidebar_notification2.title=Slå sidepanel til eller fra (dokumentet indeholder disposition/vedhæftede filer/lag) +toggle_sidebar_label=Slå sidepanel til eller fra +document_outline.title=Vis dokumentets disposition (dobbeltklik for at vise/skjule alle elementer) +document_outline_label=Dokument-disposition +attachments.title=Vis vedhæftede filer +attachments_label=Vedhæftede filer +layers.title=Vis lag (dobbeltklik for at nulstille alle lag til standard-tilstanden) +layers_label=Lag +thumbs.title=Vis miniaturer +thumbs_label=Miniaturer +current_outline_item.title=Find det aktuelle dispositions-element +current_outline_item_label=Aktuelt dispositions-element +findbar.title=Find i dokument +findbar_label=Find + +additional_layers=Yderligere lag +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Side {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Side {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniature af side {{page}} + +# Find panel button title and messages +find_input.title=Find +find_input.placeholder=Find i dokument… +find_previous.title=Find den forrige forekomst +find_previous_label=Forrige +find_next.title=Find den næste forekomst +find_next_label=Næste +find_highlight=Fremhæv alle +find_match_case_label=Forskel på store og små bogstaver +find_match_diacritics_label=Diakritiske tegn +find_entire_word_label=Hele ord +find_reached_top=Toppen af siden blev nået, fortsatte fra bunden +find_reached_bottom=Bunden af siden blev nået, fortsatte fra toppen +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} af {{total}} forekomst +find_match_count[two]={{current}} af {{total}} forekomster +find_match_count[few]={{current}} af {{total}} forekomster +find_match_count[many]={{current}} af {{total}} forekomster +find_match_count[other]={{current}} af {{total}} forekomster +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Mere end {{limit}} forekomster +find_match_count_limit[one]=Mere end {{limit}} forekomst +find_match_count_limit[two]=Mere end {{limit}} forekomster +find_match_count_limit[few]=Mere end {{limit}} forekomster +find_match_count_limit[many]=Mere end {{limit}} forekomster +find_match_count_limit[other]=Mere end {{limit}} forekomster +find_not_found=Der blev ikke fundet noget + +# Error panel labels +error_more_info=Mere information +error_less_info=Mindre information +error_close=Luk +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Fejlmeddelelse: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fil: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Linje: {{line}} + +# Predefined zoom values +page_scale_width=Sidebredde +page_scale_fit=Tilpas til side +page_scale_auto=Automatisk zoom +page_scale_actual=Faktisk størrelse +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Indlæser… +loading_error=Der opstod en fejl ved indlæsning af PDF-filen. +invalid_file_error=PDF-filen er ugyldig eller ødelagt. +missing_file_error=Manglende PDF-fil. +unexpected_response_error=Uventet svar fra serveren. + +rendering_error=Der opstod en fejl ved generering af siden. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}}kommentar] +password_label=Angiv adgangskode til at åbne denne PDF-fil. +password_invalid=Ugyldig adgangskode. Prøv igen. +password_ok=OK +password_cancel=Fortryd + +printing_not_supported=Advarsel: Udskrivning er ikke fuldt understøttet af browseren. +printing_not_ready=Advarsel: PDF-filen er ikke fuldt indlæst til udskrivning. +web_fonts_disabled=Webskrifttyper er deaktiverede. De indlejrede skrifttyper i PDF-filen kan ikke anvendes. + +# Editor +editor_free_text2.title=Tekst +editor_free_text2_label=Tekst +editor_ink2.title=Tegn +editor_ink2_label=Tegn + +free_text2_default_content=Begynd at skrive… + +# Editor Parameters +editor_free_text_color=Farve +editor_free_text_size=Størrelse +editor_ink_color=Farve +editor_ink_thickness=Tykkelse +editor_ink_opacity=Uigennemsigtighed + +# Editor aria +editor_free_text2_aria_label=Teksteditor +editor_ink2_aria_label=Tegnings-editor +editor_ink_canvas_aria_label=Brugeroprettet billede diff --git a/www/include/vendor/pdfjs/web/locale/de/viewer.properties b/www/include/vendor/pdfjs/web/locale/de/viewer.properties new file mode 100644 index 0000000..1da1e4b --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/de/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Eine Seite zurück +previous_label=Zurück +next.title=Eine Seite vor +next_label=Vor + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Seite +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=von {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} von {{pagesCount}}) + +zoom_out.title=Verkleinern +zoom_out_label=Verkleinern +zoom_in.title=Vergrößern +zoom_in_label=Vergrößern +zoom.title=Zoom +presentation_mode.title=In Präsentationsmodus wechseln +presentation_mode_label=Präsentationsmodus +open_file.title=Datei öffnen +open_file_label=Öffnen +print.title=Drucken +print_label=Drucken +download.title=Dokument speichern +download_label=Speichern +save.title=Speichern +save_label=Speichern +bookmark.title=Aktuelle Ansicht (zum Kopieren oder Öffnen in einem neuen Fenster) +bookmark_label=Aktuelle Ansicht + +bookmark1.title=Aktuelle Seite (URL von aktueller Seite anzeigen) +bookmark1_label=Aktuelle Seite + +# Secondary toolbar and context menu +tools.title=Werkzeuge +tools_label=Werkzeuge +first_page.title=Erste Seite anzeigen +first_page_label=Erste Seite anzeigen +last_page.title=Letzte Seite anzeigen +last_page_label=Letzte Seite anzeigen +page_rotate_cw.title=Im Uhrzeigersinn drehen +page_rotate_cw_label=Im Uhrzeigersinn drehen +page_rotate_ccw.title=Gegen Uhrzeigersinn drehen +page_rotate_ccw_label=Gegen Uhrzeigersinn drehen + +cursor_text_select_tool.title=Textauswahl-Werkzeug aktivieren +cursor_text_select_tool_label=Textauswahl-Werkzeug +cursor_hand_tool.title=Hand-Werkzeug aktivieren +cursor_hand_tool_label=Hand-Werkzeug + +scroll_page.title=Seiten einzeln anordnen +scroll_page_label=Einzelseitenanordnung +scroll_vertical.title=Seiten übereinander anordnen +scroll_vertical_label=Vertikale Seitenanordnung +scroll_horizontal.title=Seiten nebeneinander anordnen +scroll_horizontal_label=Horizontale Seitenanordnung +scroll_wrapped.title=Seiten neben- und übereinander anordnen, abhängig vom Platz +scroll_wrapped_label=Kombinierte Seitenanordnung + +spread_none.title=Seiten nicht nebeneinander anzeigen +spread_none_label=Einzelne Seiten +spread_odd.title=Jeweils eine ungerade und eine gerade Seite nebeneinander anzeigen +spread_odd_label=Ungerade + gerade Seite +spread_even.title=Jeweils eine gerade und eine ungerade Seite nebeneinander anzeigen +spread_even_label=Gerade + ungerade Seite + +# Document properties dialog box +document_properties.title=Dokumenteigenschaften +document_properties_label=Dokumenteigenschaften… +document_properties_file_name=Dateiname: +document_properties_file_size=Dateigröße: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} Bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} Bytes) +document_properties_title=Titel: +document_properties_author=Autor: +document_properties_subject=Thema: +document_properties_keywords=Stichwörter: +document_properties_creation_date=Erstelldatum: +document_properties_modification_date=Bearbeitungsdatum: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}} {{time}} +document_properties_creator=Anwendung: +document_properties_producer=PDF erstellt mit: +document_properties_version=PDF-Version: +document_properties_page_count=Seitenzahl: +document_properties_page_size=Seitengröße: +document_properties_page_size_unit_inches=Zoll +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=Hochformat +document_properties_page_size_orientation_landscape=Querformat +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Schnelle Webanzeige: +document_properties_linearized_yes=Ja +document_properties_linearized_no=Nein +document_properties_close=Schließen + +print_progress_message=Dokument wird für Drucken vorbereitet… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}} % +print_progress_close=Abbrechen + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Sidebar umschalten +toggle_sidebar_notification2.title=Sidebar umschalten (Dokument enthält Dokumentstruktur/Anhänge/Ebenen) +toggle_sidebar_label=Sidebar umschalten +document_outline.title=Dokumentstruktur anzeigen (Doppelklicken, um alle Einträge aus- bzw. einzuklappen) +document_outline_label=Dokumentstruktur +attachments.title=Anhänge anzeigen +attachments_label=Anhänge +layers.title=Ebenen anzeigen (Doppelklicken, um alle Ebenen auf den Standardzustand zurückzusetzen) +layers_label=Ebenen +thumbs.title=Miniaturansichten anzeigen +thumbs_label=Miniaturansichten +current_outline_item.title=Aktuelles Struktur-Element finden +current_outline_item_label=Aktuelles Struktur-Element +findbar.title=Dokument durchsuchen +findbar_label=Suchen + +additional_layers=Zusätzliche Ebenen +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Seite {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Seite {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniaturansicht von Seite {{page}} + +# Find panel button title and messages +find_input.title=Suchen +find_input.placeholder=Im Dokument suchen… +find_previous.title=Vorheriges Vorkommen des Suchbegriffs finden +find_previous_label=Zurück +find_next.title=Nächstes Vorkommen des Suchbegriffs finden +find_next_label=Weiter +find_highlight=Alle hervorheben +find_match_case_label=Groß-/Kleinschreibung beachten +find_match_diacritics_label=Akzente +find_entire_word_label=Ganze Wörter +find_reached_top=Anfang des Dokuments erreicht, fahre am Ende fort +find_reached_bottom=Ende des Dokuments erreicht, fahre am Anfang fort +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} von {{total}} Übereinstimmung +find_match_count[two]={{current}} von {{total}} Übereinstimmungen +find_match_count[few]={{current}} von {{total}} Übereinstimmungen +find_match_count[many]={{current}} von {{total}} Übereinstimmungen +find_match_count[other]={{current}} von {{total}} Übereinstimmungen +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Mehr als {{limit}} Übereinstimmungen +find_match_count_limit[one]=Mehr als {{limit}} Übereinstimmung +find_match_count_limit[two]=Mehr als {{limit}} Übereinstimmungen +find_match_count_limit[few]=Mehr als {{limit}} Übereinstimmungen +find_match_count_limit[many]=Mehr als {{limit}} Übereinstimmungen +find_match_count_limit[other]=Mehr als {{limit}} Übereinstimmungen +find_not_found=Suchbegriff nicht gefunden + +# Error panel labels +error_more_info=Mehr Informationen +error_less_info=Weniger Informationen +error_close=Schließen +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js Version {{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Nachricht: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Aufrufliste: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Datei: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Zeile: {{line}} + +# Predefined zoom values +page_scale_width=Seitenbreite +page_scale_fit=Seitengröße +page_scale_auto=Automatischer Zoom +page_scale_actual=Originalgröße +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}} % + +# Loading indicator messages +loading=Wird geladen… +loading_error=Beim Laden der PDF-Datei trat ein Fehler auf. +invalid_file_error=Ungültige oder beschädigte PDF-Datei +missing_file_error=Fehlende PDF-Datei +unexpected_response_error=Unerwartete Antwort des Servers + +rendering_error=Beim Darstellen der Seite trat ein Fehler auf. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anlage: {{type}}] +password_label=Geben Sie zum Öffnen der PDF-Datei deren Passwort ein. +password_invalid=Falsches Passwort. Bitte versuchen Sie es erneut. +password_ok=OK +password_cancel=Abbrechen + +printing_not_supported=Warnung: Die Drucken-Funktion wird durch diesen Browser nicht vollständig unterstützt. +printing_not_ready=Warnung: Die PDF-Datei ist nicht vollständig geladen, dies ist für das Drucken aber empfohlen. +web_fonts_disabled=Web-Schriftarten sind deaktiviert: Eingebettete PDF-Schriftarten konnten nicht geladen werden. + +# Editor +editor_free_text2.title=Text +editor_free_text2_label=Text +editor_ink2.title=Zeichnen +editor_ink2_label=Zeichnen + +free_text2_default_content=Schreiben beginnen… + +# Editor Parameters +editor_free_text_color=Farbe +editor_free_text_size=Größe +editor_ink_color=Farbe +editor_ink_thickness=Dicke +editor_ink_opacity=Deckkraft + +# Editor aria +editor_free_text2_aria_label=Texteditor +editor_ink2_aria_label=Zeichnungseditor +editor_ink_canvas_aria_label=Vom Benutzer erstelltes Bild diff --git a/www/include/vendor/pdfjs/web/locale/dsb/viewer.properties b/www/include/vendor/pdfjs/web/locale/dsb/viewer.properties new file mode 100644 index 0000000..7ee6083 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/dsb/viewer.properties @@ -0,0 +1,279 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Pjerwjejšny bok +previous_label=Slědk +next.title=Pśiducy bok +next_label=Dalej + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Bok +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=z {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} z {{pagesCount}}) + +zoom_out.title=Pómjeńšyś +zoom_out_label=Pómjeńšyś +zoom_in.title=Pówětšyś +zoom_in_label=Pówětšyś +zoom.title=Skalěrowanje +presentation_mode.title=Do prezentaciskego modusa pśejś +presentation_mode_label=Prezentaciski modus +open_file.title=Dataju wócyniś +open_file_label=Wócyniś +print.title=Śišćaś +print_label=Śišćaś +download.title=Ześěgnuś +download_label=Ześěgnuś +save.title=Składowaś +save_label=Składowaś +bookmark.title=Aktualny naglěd (kopěrowaś abo w nowem woknje wócyniś) +bookmark_label=Aktualny naglěd + +bookmark1.title=Aktualny bok (URL z aktualnego boka pokazaś) +bookmark1_label=Aktualny bok + +# Secondary toolbar and context menu +tools.title=Rědy +tools_label=Rědy +first_page.title=K prědnemu bokoju +first_page_label=K prědnemu bokoju +last_page.title=K slědnemu bokoju +last_page_label=K slědnemu bokoju +page_rotate_cw.title=Wobwjertnuś ako špěra źo +page_rotate_cw_label=Wobwjertnuś ako špěra źo +page_rotate_ccw.title=Wobwjertnuś nawopaki ako špěra źo +page_rotate_ccw_label=Wobwjertnuś nawopaki ako špěra źo + +cursor_text_select_tool.title=Rěd za wuběranje teksta zmóžniś +cursor_text_select_tool_label=Rěd za wuběranje teksta +cursor_hand_tool.title=Rucny rěd zmóžniś +cursor_hand_tool_label=Rucny rěd + +scroll_page.title=Kulanje boka wužywaś +scroll_page_label=Kulanje boka +scroll_vertical.title=Wertikalne suwanje wužywaś +scroll_vertical_label=Wertikalne suwanje +scroll_horizontal.title=Horicontalne suwanje wužywaś +scroll_horizontal_label=Horicontalne suwanje +scroll_wrapped.title=Pózlažke suwanje wužywaś +scroll_wrapped_label=Pózlažke suwanje + +spread_none.title=Boki njezwězaś +spread_none_label=Žeden dwójny bok +spread_odd.title=Boki zachopinajucy z njerownymi bokami zwězaś +spread_odd_label=Njerowne boki +spread_even.title=Boki zachopinajucy z rownymi bokami zwězaś +spread_even_label=Rowne boki + +# Document properties dialog box +document_properties.title=Dokumentowe kakosći… +document_properties_label=Dokumentowe kakosći… +document_properties_file_name=Mě dataje: +document_properties_file_size=Wjelikosć dataje: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bajtow) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bajtow) +document_properties_title=Titel: +document_properties_author=Awtor: +document_properties_subject=Tema: +document_properties_keywords=Klucowe słowa: +document_properties_creation_date=Datum napóranja: +document_properties_modification_date=Datum změny: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Awtor: +document_properties_producer=PDF-gótowaŕ: +document_properties_version=PDF-wersija: +document_properties_page_count=Licba bokow: +document_properties_page_size=Wjelikosć boka: +document_properties_page_size_unit_inches=col +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=wusoki format +document_properties_page_size_orientation_landscape=prěcny format +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Fast Web View: +document_properties_linearized_yes=Jo +document_properties_linearized_no=Ně +document_properties_close=Zacyniś + +print_progress_message=Dokument pśigótujo se za śišćanje… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Pśetergnuś + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Bócnicu pokazaś/schowaś +toggle_sidebar_notification2.title=Bocnicu pśešaltowaś (dokument rozrědowanje/pśipiski/warstwy wopśimujo) +toggle_sidebar_label=Bócnicu pokazaś/schowaś +document_outline.title=Dokumentowe naraźenje pokazaś (dwójne kliknjenje, aby se wšykne zapiski pokazali/schowali) +document_outline_label=Dokumentowa struktura +attachments.title=Pśidanki pokazaś +attachments_label=Pśidanki +layers.title=Warstwy pokazaś (klikniśo dwójcy, aby wšykne warstwy na standardny staw slědk stajił) +layers_label=Warstwy +thumbs.title=Miniatury pokazaś +thumbs_label=Miniatury +current_outline_item.title=Aktualny rozrědowański zapisk pytaś +current_outline_item_label=Aktualny rozrědowański zapisk +findbar.title=W dokumenśe pytaś +findbar_label=Pytaś + +additional_layers=Dalšne warstwy +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Bok {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Bok {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura boka {{page}} + +# Find panel button title and messages +find_input.title=Pytaś +find_input.placeholder=W dokumenśe pytaś… +find_previous.title=Pjerwjejšne wustupowanje pytańskego wuraza pytaś +find_previous_label=Slědk +find_next.title=Pśidujuce wustupowanje pytańskego wuraza pytaś +find_next_label=Dalej +find_highlight=Wšykne wuzwignuś +find_match_case_label=Na wjelikopisanje źiwaś +find_match_diacritics_label=Diakritiske znamuška wužywaś +find_entire_word_label=Cełe słowa +find_reached_top=Zachopjeńk dokumenta dostany, pókšacujo se z kóńcom +find_reached_bottom=Kóńc dokumenta dostany, pókšacujo se ze zachopjeńkom +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} z {{total}} wótpowědnika +find_match_count[two]={{current}} z {{total}} wótpowědnikowu +find_match_count[few]={{current}} z {{total}} wótpowědnikow +find_match_count[many]={{current}} z {{total}} wótpowědnikow +find_match_count[other]={{current}} z {{total}} wótpowědnikow +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Wěcej ako {{limit}} wótpowědnikow +find_match_count_limit[one]=Wěcej ako {{limit}} wótpowědnik +find_match_count_limit[two]=Wěcej ako {{limit}} wótpowědnika +find_match_count_limit[few]=Wěcej ako {{limit}} wótpowědniki +find_match_count_limit[many]=Wěcej ako {{limit}} wótpowědnikow +find_match_count_limit[other]=Wěcej ako {{limit}} wótpowědnikow +find_not_found=Pytański wuraz njejo se namakał + +# Error panel labels +error_more_info=Wěcej informacijow +error_less_info=Mjenjej informacijow +error_close=Zacyniś +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Powěźenka: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Lisćina zawołanjow: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Dataja: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Smužka: {{line}} + +# Predefined zoom values +page_scale_width=Šyrokosć boka +page_scale_fit=Wjelikosć boka +page_scale_auto=Awtomatiske skalěrowanje +page_scale_actual=Aktualna wjelikosć +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Zacytujo se… + +# Loading indicator messages +loading_error=Pśi zacytowanju PDF jo zmólka nastała. +invalid_file_error=Njepłaśiwa abo wobškóźona PDF-dataja. +missing_file_error=Felujuca PDF-dataja. +unexpected_response_error=Njewócakane serwerowe wótegrono. + +rendering_error=Pśi zwobraznjanju boka jo zmólka nastała. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Typ pśipiskow: {{type}}] +password_label=Zapódajśo gronidło, aby PDF-dataju wócynił. +password_invalid=Njepłaśiwe gronidło. Pšosym wopytajśo hyšći raz. +password_ok=W pórěźe +password_cancel=Pśetergnuś + +printing_not_supported=Warnowanje: Śišćanje njepódpěra se połnje pśez toś ten wobglědowak. +printing_not_ready=Warnowanje: PDF njejo se za śišćanje dopołnje zacytał. +web_fonts_disabled=Webpisma su znjemóžnjone: njejo móžno, zasajźone PDF-pisma wužywaś. + +# Editor +editor_free_text2.title=Tekst +editor_free_text2_label=Tekst +editor_ink2.title=Kresliś +editor_ink2_label=Kresliś + +free_text2_default_content=Zachopśo pisaś… + +# Editor Parameters +editor_free_text_color=Barwa +editor_free_text_size=Wjelikosć +editor_ink_color=Barwa +editor_ink_thickness=Tłustosć +editor_ink_opacity=Opacita + +# Editor aria +editor_free_text2_aria_label=Tekstowy editor +editor_ink2_aria_label=Kresleński editor +editor_ink_canvas_aria_label=Wobraz napórany wót wužywarja diff --git a/www/include/vendor/pdfjs/web/locale/el/viewer.properties b/www/include/vendor/pdfjs/web/locale/el/viewer.properties new file mode 100644 index 0000000..73e8f7e --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/el/viewer.properties @@ -0,0 +1,279 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Προηγούμενη σελίδα +previous_label=Προηγούμενη +next.title=Επόμενη σελίδα +next_label=Επόμενη + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Σελίδα +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=από {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} από {{pagesCount}}) + +zoom_out.title=Σμίκρυνση +zoom_out_label=Σμίκρυνση +zoom_in.title=Μεγέθυνση +zoom_in_label=Μεγέθυνση +zoom.title=Ζουμ +presentation_mode.title=Εναλλαγή σε λειτουργία παρουσίασης +presentation_mode_label=Λειτουργία παρουσίασης +open_file.title=Άνοιγμα αρχείου +open_file_label=Άνοιγμα +print.title=Εκτύπωση +print_label=Εκτύπωση +download.title=Λήψη +download_label=Λήψη +save.title=Αποθήκευση +save_label=Αποθήκευση +bookmark.title=Τρέχουσα προβολή (αντιγραφή ή άνοιγμα σε νέο παράθυρο) +bookmark_label=Τρέχουσα προβολή + +bookmark1.title=Τρέχουσα σελίδα (Προβολή URL από τρέχουσα σελίδα) +bookmark1_label=Τρέχουσα σελίδα + +# Secondary toolbar and context menu +tools.title=Εργαλεία +tools_label=Εργαλεία +first_page.title=Μετάβαση στην πρώτη σελίδα +first_page_label=Μετάβαση στην πρώτη σελίδα +last_page.title=Μετάβαση στην τελευταία σελίδα +last_page_label=Μετάβαση στην τελευταία σελίδα +page_rotate_cw.title=Δεξιόστροφη περιστροφή +page_rotate_cw_label=Δεξιόστροφη περιστροφή +page_rotate_ccw.title=Αριστερόστροφη περιστροφή +page_rotate_ccw_label=Αριστερόστροφη περιστροφή + +cursor_text_select_tool.title=Ενεργοποίηση εργαλείου επιλογής κειμένου +cursor_text_select_tool_label=Εργαλείο επιλογής κειμένου +cursor_hand_tool.title=Ενεργοποίηση εργαλείου χεριού +cursor_hand_tool_label=Εργαλείο χεριού + +scroll_page.title=Χρήση κύλισης σελίδας +scroll_page_label=Κύλιση σελίδας +scroll_vertical.title=Χρήση κάθετης κύλισης +scroll_vertical_label=Κάθετη κύλιση +scroll_horizontal.title=Χρήση οριζόντιας κύλισης +scroll_horizontal_label=Οριζόντια κύλιση +scroll_wrapped.title=Χρήση κυκλικής κύλισης +scroll_wrapped_label=Κυκλική κύλιση + +spread_none.title=Να μην γίνει σύνδεση επεκτάσεων σελίδων +spread_none_label=Χωρίς επεκτάσεις +spread_odd.title=Σύνδεση επεκτάσεων σελίδων ξεκινώντας από τις μονές σελίδες +spread_odd_label=Μονές επεκτάσεις +spread_even.title=Σύνδεση επεκτάσεων σελίδων ξεκινώντας από τις ζυγές σελίδες +spread_even_label=Ζυγές επεκτάσεις + +# Document properties dialog box +document_properties.title=Ιδιότητες εγγράφου… +document_properties_label=Ιδιότητες εγγράφου… +document_properties_file_name=Όνομα αρχείου: +document_properties_file_size=Μέγεθος αρχείου: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Τίτλος: +document_properties_author=Συγγραφέας: +document_properties_subject=Θέμα: +document_properties_keywords=Λέξεις-κλειδιά: +document_properties_creation_date=Ημερομηνία δημιουργίας: +document_properties_modification_date=Ημερομηνία τροποποίησης: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Δημιουργός: +document_properties_producer=Παραγωγός PDF: +document_properties_version=Έκδοση PDF: +document_properties_page_count=Αριθμός σελίδων: +document_properties_page_size=Μέγεθος σελίδας: +document_properties_page_size_unit_inches=ίντσες +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=κατακόρυφα +document_properties_page_size_orientation_landscape=οριζόντια +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Επιστολή +document_properties_page_size_name_legal=Τύπου Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Ταχεία προβολή ιστού: +document_properties_linearized_yes=Ναι +document_properties_linearized_no=Όχι +document_properties_close=Κλείσιμο + +print_progress_message=Προετοιμασία του εγγράφου για εκτύπωση… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Ακύρωση + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=(Απ)ενεργοποίηση πλαϊνής γραμμής +toggle_sidebar_notification2.title=(Απ)ενεργοποίηση πλαϊνής γραμμής (το έγγραφο περιέχει περίγραμμα/συνημμένα/επίπεδα) +toggle_sidebar_label=(Απ)ενεργοποίηση πλαϊνής γραμμής +document_outline.title=Εμφάνιση διάρθρωσης εγγράφου (διπλό κλικ για ανάπτυξη/σύμπτυξη όλων των στοιχείων) +document_outline_label=Διάρθρωση εγγράφου +attachments.title=Εμφάνιση συνημμένων +attachments_label=Συνημμένα +layers.title=Εμφάνιση επιπέδων (διπλό κλικ για επαναφορά όλων των επιπέδων στην προεπιλεγμένη κατάσταση) +layers_label=Επίπεδα +thumbs.title=Εμφάνιση μικρογραφιών +thumbs_label=Μικρογραφίες +current_outline_item.title=Εύρεση τρέχοντος στοιχείου διάρθρωσης +current_outline_item_label=Τρέχον στοιχείο διάρθρωσης +findbar.title=Εύρεση στο έγγραφο +findbar_label=Εύρεση + +additional_layers=Επιπρόσθετα επίπεδα +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Σελίδα {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Σελίδα {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Μικρογραφία σελίδας {{page}} + +# Find panel button title and messages +find_input.title=Εύρεση +find_input.placeholder=Εύρεση στο έγγραφο… +find_previous.title=Εύρεση της προηγούμενης εμφάνισης της φράσης +find_previous_label=Προηγούμενο +find_next.title=Εύρεση της επόμενης εμφάνισης της φράσης +find_next_label=Επόμενο +find_highlight=Επισήμανση όλων +find_match_case_label=Συμφωνία πεζών/κεφαλαίων +find_match_diacritics_label=Αντιστοίχιση διακριτικών +find_entire_word_label=Ολόκληρες λέξεις +find_reached_top=Φτάσατε στην αρχή του εγγράφου, συνέχεια από το τέλος +find_reached_bottom=Φτάσατε στο τέλος του εγγράφου, συνέχεια από την αρχή +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} από {{total}} αντιστοιχία +find_match_count[two]={{current}} από {{total}} αντιστοιχίες +find_match_count[few]={{current}} από {{total}} αντιστοιχίες +find_match_count[many]={{current}} από {{total}} αντιστοιχίες +find_match_count[other]={{current}} από {{total}} αντιστοιχίες +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Περισσότερες από {{limit}} αντιστοιχίες +find_match_count_limit[one]=Περισσότερες από {{limit}} αντιστοιχία +find_match_count_limit[two]=Περισσότερες από {{limit}} αντιστοιχίες +find_match_count_limit[few]=Περισσότερες από {{limit}} αντιστοιχίες +find_match_count_limit[many]=Περισσότερες από {{limit}} αντιστοιχίες +find_match_count_limit[other]=Περισσότερες από {{limit}} αντιστοιχίες +find_not_found=Η φράση δεν βρέθηκε + +# Error panel labels +error_more_info=Περισσότερες πληροφορίες +error_less_info=Λιγότερες πληροφορίες +error_close=Κλείσιμο +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (έκδοση: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Μήνυμα: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Στοίβα: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Αρχείο: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Γραμμή: {{line}} + +# Predefined zoom values +page_scale_width=Πλάτος σελίδας +page_scale_fit=Μέγεθος σελίδας +page_scale_auto=Αυτόματο ζουμ +page_scale_actual=Πραγματικό μέγεθος +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Φόρτωση… + +# Loading indicator messages +loading_error=Προέκυψε σφάλμα κατά τη φόρτωση του PDF. +invalid_file_error=Μη έγκυρο ή κατεστραμμένο αρχείο PDF. +missing_file_error=Λείπει αρχείο PDF. +unexpected_response_error=Μη αναμενόμενη απόκριση από το διακομιστή. + +rendering_error=Προέκυψε σφάλμα κατά την εμφάνιση της σελίδας. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Σχόλιο «{{type}}»] +password_label=Εισαγάγετε τον κωδικό πρόσβασης για να ανοίξετε αυτό το αρχείο PDF. +password_invalid=Μη έγκυρος κωδικός πρόσβασης. Παρακαλώ δοκιμάστε ξανά. +password_ok=OK +password_cancel=Ακύρωση + +printing_not_supported=Προειδοποίηση: Η εκτύπωση δεν υποστηρίζεται πλήρως από το πρόγραμμα περιήγησης. +printing_not_ready=Προειδοποίηση: Το PDF δεν φορτώθηκε πλήρως για εκτύπωση. +web_fonts_disabled=Οι γραμματοσειρές ιστού είναι ανενεργές: δεν είναι δυνατή η χρήση των ενσωματωμένων γραμματοσειρών PDF. + +# Editor +editor_free_text2.title=Κείμενο +editor_free_text2_label=Κείμενο +editor_ink2.title=Σχέδιο +editor_ink2_label=Σχέδιο + +free_text2_default_content=Ξεκινήστε να πληκτρολογείτε… + +# Editor Parameters +editor_free_text_color=Χρώμα +editor_free_text_size=Μέγεθος +editor_ink_color=Χρώμα +editor_ink_thickness=Πάχος +editor_ink_opacity=Αδιαφάνεια + +# Editor aria +editor_free_text2_aria_label=Επεξεργασία κειμένου +editor_ink2_aria_label=Επεξεργασία σχεδίων +editor_ink_canvas_aria_label=Εικόνα από τον χρήστη diff --git a/www/include/vendor/pdfjs/web/locale/en-CA/viewer.properties b/www/include/vendor/pdfjs/web/locale/en-CA/viewer.properties new file mode 100644 index 0000000..9c91312 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/en-CA/viewer.properties @@ -0,0 +1,279 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Previous Page +previous_label=Previous +next.title=Next Page +next_label=Next + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Page +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=of {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} of {{pagesCount}}) + +zoom_out.title=Zoom Out +zoom_out_label=Zoom Out +zoom_in.title=Zoom In +zoom_in_label=Zoom In +zoom.title=Zoom +presentation_mode.title=Switch to Presentation Mode +presentation_mode_label=Presentation Mode +open_file.title=Open File +open_file_label=Open +print.title=Print +print_label=Print +download.title=Download +download_label=Download +save.title=Save +save_label=Save +bookmark.title=Current view (copy or open in new window) +bookmark_label=Current View + +bookmark1.title=Current Page (View URL from Current Page) +bookmark1_label=Current Page + +# Secondary toolbar and context menu +tools.title=Tools +tools_label=Tools +first_page.title=Go to First Page +first_page_label=Go to First Page +last_page.title=Go to Last Page +last_page_label=Go to Last Page +page_rotate_cw.title=Rotate Clockwise +page_rotate_cw_label=Rotate Clockwise +page_rotate_ccw.title=Rotate Counterclockwise +page_rotate_ccw_label=Rotate Counterclockwise + +cursor_text_select_tool.title=Enable Text Selection Tool +cursor_text_select_tool_label=Text Selection Tool +cursor_hand_tool.title=Enable Hand Tool +cursor_hand_tool_label=Hand Tool + +scroll_page.title=Use Page Scrolling +scroll_page_label=Page Scrolling +scroll_vertical.title=Use Vertical Scrolling +scroll_vertical_label=Vertical Scrolling +scroll_horizontal.title=Use Horizontal Scrolling +scroll_horizontal_label=Horizontal Scrolling +scroll_wrapped.title=Use Wrapped Scrolling +scroll_wrapped_label=Wrapped Scrolling + +spread_none.title=Do not join page spreads +spread_none_label=No Spreads +spread_odd.title=Join page spreads starting with odd-numbered pages +spread_odd_label=Odd Spreads +spread_even.title=Join page spreads starting with even-numbered pages +spread_even_label=Even Spreads + +# Document properties dialog box +document_properties.title=Document Properties… +document_properties_label=Document Properties… +document_properties_file_name=File name: +document_properties_file_size=File size: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} kB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Title: +document_properties_author=Author: +document_properties_subject=Subject: +document_properties_keywords=Keywords: +document_properties_creation_date=Creation Date: +document_properties_modification_date=Modification Date: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Creator: +document_properties_producer=PDF Producer: +document_properties_version=PDF Version: +document_properties_page_count=Page Count: +document_properties_page_size=Page Size: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=portrait +document_properties_page_size_orientation_landscape=landscape +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Fast Web View: +document_properties_linearized_yes=Yes +document_properties_linearized_no=No +document_properties_close=Close + +print_progress_message=Preparing document for printing… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cancel + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Toggle Sidebar +toggle_sidebar_notification2.title=Toggle Sidebar (document contains outline/attachments/layers) +toggle_sidebar_label=Toggle Sidebar +document_outline.title=Show Document Outline (double-click to expand/collapse all items) +document_outline_label=Document Outline +attachments.title=Show Attachments +attachments_label=Attachments +layers.title=Show Layers (double-click to reset all layers to the default state) +layers_label=Layers +thumbs.title=Show Thumbnails +thumbs_label=Thumbnails +current_outline_item.title=Find Current Outline Item +current_outline_item_label=Current Outline Item +findbar.title=Find in Document +findbar_label=Find + +additional_layers=Additional Layers +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Page {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Page {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Thumbnail of Page {{page}} + +# Find panel button title and messages +find_input.title=Find +find_input.placeholder=Find in document… +find_previous.title=Find the previous occurrence of the phrase +find_previous_label=Previous +find_next.title=Find the next occurrence of the phrase +find_next_label=Next +find_highlight=Highlight All +find_match_case_label=Match Case +find_match_diacritics_label=Match Diacritics +find_entire_word_label=Whole Words +find_reached_top=Reached top of document, continued from bottom +find_reached_bottom=Reached end of document, continued from top +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} of {{total}} match +find_match_count[two]={{current}} of {{total}} matches +find_match_count[few]={{current}} of {{total}} matches +find_match_count[many]={{current}} of {{total}} matches +find_match_count[other]={{current}} of {{total}} matches +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=More than {{limit}} matches +find_match_count_limit[one]=More than {{limit}} match +find_match_count_limit[two]=More than {{limit}} matches +find_match_count_limit[few]=More than {{limit}} matches +find_match_count_limit[many]=More than {{limit}} matches +find_match_count_limit[other]=More than {{limit}} matches +find_not_found=Phrase not found + +# Error panel labels +error_more_info=More Information +error_less_info=Less Information +error_close=Close +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Message: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=File: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Line: {{line}} + +# Predefined zoom values +page_scale_width=Page Width +page_scale_fit=Page Fit +page_scale_auto=Automatic Zoom +page_scale_actual=Actual Size +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Loading… + +# Loading indicator messages +loading_error=An error occurred while loading the PDF. +invalid_file_error=Invalid or corrupted PDF file. +missing_file_error=Missing PDF file. +unexpected_response_error=Unexpected server response. + +rendering_error=An error occurred while rendering the page. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Annotation] +password_label=Enter the password to open this PDF file. +password_invalid=Invalid password. Please try again. +password_ok=OK +password_cancel=Cancel + +printing_not_supported=Warning: Printing is not fully supported by this browser. +printing_not_ready=Warning: The PDF is not fully loaded for printing. +web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. + +# Editor +editor_free_text2.title=Text +editor_free_text2_label=Text +editor_ink2.title=Draw +editor_ink2_label=Draw + +free_text2_default_content=Start typing… + +# Editor Parameters +editor_free_text_color=Colour +editor_free_text_size=Size +editor_ink_color=Colour +editor_ink_thickness=Thickness +editor_ink_opacity=Opacity + +# Editor aria +editor_free_text2_aria_label=Text Editor +editor_ink2_aria_label=Draw Editor +editor_ink_canvas_aria_label=User-created image diff --git a/www/include/vendor/pdfjs/web/locale/en-GB/viewer.properties b/www/include/vendor/pdfjs/web/locale/en-GB/viewer.properties new file mode 100644 index 0000000..0440902 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/en-GB/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Previous Page +previous_label=Previous +next.title=Next Page +next_label=Next + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Page +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=of {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} of {{pagesCount}}) + +zoom_out.title=Zoom Out +zoom_out_label=Zoom Out +zoom_in.title=Zoom In +zoom_in_label=Zoom In +zoom.title=Zoom +presentation_mode.title=Switch to Presentation Mode +presentation_mode_label=Presentation Mode +open_file.title=Open File +open_file_label=Open +print.title=Print +print_label=Print +download.title=Download +download_label=Download +save.title=Save +save_label=Save +bookmark.title=Current view (copy or open in new window) +bookmark_label=Current View + +bookmark1.title=Current Page (View URL from Current Page) +bookmark1_label=Current Page + +# Secondary toolbar and context menu +tools.title=Tools +tools_label=Tools +first_page.title=Go to First Page +first_page_label=Go to First Page +last_page.title=Go to Last Page +last_page_label=Go to Last Page +page_rotate_cw.title=Rotate Clockwise +page_rotate_cw_label=Rotate Clockwise +page_rotate_ccw.title=Rotate Anti-Clockwise +page_rotate_ccw_label=Rotate Anti-Clockwise + +cursor_text_select_tool.title=Enable Text Selection Tool +cursor_text_select_tool_label=Text Selection Tool +cursor_hand_tool.title=Enable Hand Tool +cursor_hand_tool_label=Hand Tool + +scroll_page.title=Use Page Scrolling +scroll_page_label=Page Scrolling +scroll_vertical.title=Use Vertical Scrolling +scroll_vertical_label=Vertical Scrolling +scroll_horizontal.title=Use Horizontal Scrolling +scroll_horizontal_label=Horizontal Scrolling +scroll_wrapped.title=Use Wrapped Scrolling +scroll_wrapped_label=Wrapped Scrolling + +spread_none.title=Do not join page spreads +spread_none_label=No Spreads +spread_odd.title=Join page spreads starting with odd-numbered pages +spread_odd_label=Odd Spreads +spread_even.title=Join page spreads starting with even-numbered pages +spread_even_label=Even Spreads + +# Document properties dialog box +document_properties.title=Document Properties… +document_properties_label=Document Properties… +document_properties_file_name=File name: +document_properties_file_size=File size: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} kB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Title: +document_properties_author=Author: +document_properties_subject=Subject: +document_properties_keywords=Keywords: +document_properties_creation_date=Creation Date: +document_properties_modification_date=Modification Date: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Creator: +document_properties_producer=PDF Producer: +document_properties_version=PDF Version: +document_properties_page_count=Page Count: +document_properties_page_size=Page Size: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=portrait +document_properties_page_size_orientation_landscape=landscape +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Fast Web View: +document_properties_linearized_yes=Yes +document_properties_linearized_no=No +document_properties_close=Close + +print_progress_message=Preparing document for printing… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cancel + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Toggle Sidebar +toggle_sidebar_notification2.title=Toggle Sidebar (document contains outline/attachments/layers) +toggle_sidebar_label=Toggle Sidebar +document_outline.title=Show Document Outline (double-click to expand/collapse all items) +document_outline_label=Document Outline +attachments.title=Show Attachments +attachments_label=Attachments +layers.title=Show Layers (double-click to reset all layers to the default state) +layers_label=Layers +thumbs.title=Show Thumbnails +thumbs_label=Thumbnails +current_outline_item.title=Find Current Outline Item +current_outline_item_label=Current Outline Item +findbar.title=Find in Document +findbar_label=Find + +additional_layers=Additional Layers +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Page {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Page {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Thumbnail of Page {{page}} + +# Find panel button title and messages +find_input.title=Find +find_input.placeholder=Find in document… +find_previous.title=Find the previous occurrence of the phrase +find_previous_label=Previous +find_next.title=Find the next occurrence of the phrase +find_next_label=Next +find_highlight=Highlight All +find_match_case_label=Match Case +find_match_diacritics_label=Match Diacritics +find_entire_word_label=Whole Words +find_reached_top=Reached top of document, continued from bottom +find_reached_bottom=Reached end of document, continued from top +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} of {{total}} match +find_match_count[two]={{current}} of {{total}} matches +find_match_count[few]={{current}} of {{total}} matches +find_match_count[many]={{current}} of {{total}} matches +find_match_count[other]={{current}} of {{total}} matches +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=More than {{limit}} matches +find_match_count_limit[one]=More than {{limit}} match +find_match_count_limit[two]=More than {{limit}} matches +find_match_count_limit[few]=More than {{limit}} matches +find_match_count_limit[many]=More than {{limit}} matches +find_match_count_limit[other]=More than {{limit}} matches +find_not_found=Phrase not found + +# Error panel labels +error_more_info=More Information +error_less_info=Less Information +error_close=Close +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Message: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=File: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Line: {{line}} + +# Predefined zoom values +page_scale_width=Page Width +page_scale_fit=Page Fit +page_scale_auto=Automatic Zoom +page_scale_actual=Actual Size +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Loading… +loading_error=An error occurred while loading the PDF. +invalid_file_error=Invalid or corrupted PDF file. +missing_file_error=Missing PDF file. +unexpected_response_error=Unexpected server response. + +rendering_error=An error occurred while rendering the page. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Annotation] +password_label=Enter the password to open this PDF file. +password_invalid=Invalid password. Please try again. +password_ok=OK +password_cancel=Cancel + +printing_not_supported=Warning: Printing is not fully supported by this browser. +printing_not_ready=Warning: The PDF is not fully loaded for printing. +web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. + +# Editor +editor_free_text2.title=Text +editor_free_text2_label=Text +editor_ink2.title=Draw +editor_ink2_label=Draw + +free_text2_default_content=Start typing… + +# Editor Parameters +editor_free_text_color=Colour +editor_free_text_size=Size +editor_ink_color=Colour +editor_ink_thickness=Thickness +editor_ink_opacity=Opacity + +# Editor aria +editor_free_text2_aria_label=Text Editor +editor_ink2_aria_label=Draw Editor +editor_ink_canvas_aria_label=User-created image diff --git a/www/include/vendor/pdfjs/web/locale/en-US/viewer.properties b/www/include/vendor/pdfjs/web/locale/en-US/viewer.properties new file mode 100644 index 0000000..b3241bd --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/en-US/viewer.properties @@ -0,0 +1,252 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Previous Page +previous_label=Previous +next.title=Next Page +next_label=Next + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Page +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=of {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} of {{pagesCount}}) + +zoom_out.title=Zoom Out +zoom_out_label=Zoom Out +zoom_in.title=Zoom In +zoom_in_label=Zoom In +zoom.title=Zoom +presentation_mode.title=Switch to Presentation Mode +presentation_mode_label=Presentation Mode +open_file.title=Open File +open_file_label=Open +print.title=Print +print_label=Print +save.title=Save +save_label=Save +bookmark1.title=Current Page (View URL from Current Page) +bookmark1_label=Current Page + +# Secondary toolbar and context menu +tools.title=Tools +tools_label=Tools +first_page.title=Go to First Page +first_page_label=Go to First Page +last_page.title=Go to Last Page +last_page_label=Go to Last Page +page_rotate_cw.title=Rotate Clockwise +page_rotate_cw_label=Rotate Clockwise +page_rotate_ccw.title=Rotate Counterclockwise +page_rotate_ccw_label=Rotate Counterclockwise + +cursor_text_select_tool.title=Enable Text Selection Tool +cursor_text_select_tool_label=Text Selection Tool +cursor_hand_tool.title=Enable Hand Tool +cursor_hand_tool_label=Hand Tool + +scroll_page.title=Use Page Scrolling +scroll_page_label=Page Scrolling +scroll_vertical.title=Use Vertical Scrolling +scroll_vertical_label=Vertical Scrolling +scroll_horizontal.title=Use Horizontal Scrolling +scroll_horizontal_label=Horizontal Scrolling +scroll_wrapped.title=Use Wrapped Scrolling +scroll_wrapped_label=Wrapped Scrolling + +spread_none.title=Do not join page spreads +spread_none_label=No Spreads +spread_odd.title=Join page spreads starting with odd-numbered pages +spread_odd_label=Odd Spreads +spread_even.title=Join page spreads starting with even-numbered pages +spread_even_label=Even Spreads + +# Document properties dialog box +document_properties.title=Document Properties… +document_properties_label=Document Properties… +document_properties_file_name=File name: +document_properties_file_size=File size: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Title: +document_properties_author=Author: +document_properties_subject=Subject: +document_properties_keywords=Keywords: +document_properties_creation_date=Creation Date: +document_properties_modification_date=Modification Date: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Creator: +document_properties_producer=PDF Producer: +document_properties_version=PDF Version: +document_properties_page_count=Page Count: +document_properties_page_size=Page Size: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=portrait +document_properties_page_size_orientation_landscape=landscape +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Fast Web View: +document_properties_linearized_yes=Yes +document_properties_linearized_no=No +document_properties_close=Close + +print_progress_message=Preparing document for printing… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cancel + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Toggle Sidebar +toggle_sidebar_notification2.title=Toggle Sidebar (document contains outline/attachments/layers) +toggle_sidebar_label=Toggle Sidebar +document_outline.title=Show Document Outline (double-click to expand/collapse all items) +document_outline_label=Document Outline +attachments.title=Show Attachments +attachments_label=Attachments +layers.title=Show Layers (double-click to reset all layers to the default state) +layers_label=Layers +thumbs.title=Show Thumbnails +thumbs_label=Thumbnails +current_outline_item.title=Find Current Outline Item +current_outline_item_label=Current Outline Item +findbar.title=Find in Document +findbar_label=Find + +additional_layers=Additional Layers +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Page {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Page {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Thumbnail of Page {{page}} + +# Find panel button title and messages +find_input.title=Find +find_input.placeholder=Find in document… +find_previous.title=Find the previous occurrence of the phrase +find_previous_label=Previous +find_next.title=Find the next occurrence of the phrase +find_next_label=Next +find_highlight=Highlight All +find_match_case_label=Match Case +find_match_diacritics_label=Match Diacritics +find_entire_word_label=Whole Words +find_reached_top=Reached top of document, continued from bottom +find_reached_bottom=Reached end of document, continued from top +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} of {{total}} match +find_match_count[two]={{current}} of {{total}} matches +find_match_count[few]={{current}} of {{total}} matches +find_match_count[many]={{current}} of {{total}} matches +find_match_count[other]={{current}} of {{total}} matches +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=More than {{limit}} matches +find_match_count_limit[one]=More than {{limit}} match +find_match_count_limit[two]=More than {{limit}} matches +find_match_count_limit[few]=More than {{limit}} matches +find_match_count_limit[many]=More than {{limit}} matches +find_match_count_limit[other]=More than {{limit}} matches +find_not_found=Phrase not found + +# Predefined zoom values +page_scale_width=Page Width +page_scale_fit=Page Fit +page_scale_auto=Automatic Zoom +page_scale_actual=Actual Size +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading_error=An error occurred while loading the PDF. +invalid_file_error=Invalid or corrupted PDF file. +missing_file_error=Missing PDF file. +unexpected_response_error=Unexpected server response. +rendering_error=An error occurred while rendering the page. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Annotation] +password_label=Enter the password to open this PDF file. +password_invalid=Invalid password. Please try again. +password_ok=OK +password_cancel=Cancel + +printing_not_supported=Warning: Printing is not fully supported by this browser. +printing_not_ready=Warning: The PDF is not fully loaded for printing. +web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. + +# Editor +editor_free_text2.title=Text +editor_free_text2_label=Text +editor_ink2.title=Draw +editor_ink2_label=Draw + +free_text2_default_content=Start typing… + +# Editor Parameters +editor_free_text_color=Color +editor_free_text_size=Size +editor_ink_color=Color +editor_ink_thickness=Thickness +editor_ink_opacity=Opacity + +# Editor aria +editor_free_text2_aria_label=Text Editor +editor_ink2_aria_label=Draw Editor +editor_ink_canvas_aria_label=User-created image diff --git a/www/include/vendor/pdfjs/web/locale/eo/viewer.properties b/www/include/vendor/pdfjs/web/locale/eo/viewer.properties new file mode 100644 index 0000000..a11abaa --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/eo/viewer.properties @@ -0,0 +1,279 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Antaŭa paĝo +previous_label=Malantaŭen +next.title=Venonta paĝo +next_label=Antaŭen + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Paĝo +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=el {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} el {{pagesCount}}) + +zoom_out.title=Malpligrandigi +zoom_out_label=Malpligrandigi +zoom_in.title=Pligrandigi +zoom_in_label=Pligrandigi +zoom.title=Pligrandigilo +presentation_mode.title=Iri al prezenta reĝimo +presentation_mode_label=Prezenta reĝimo +open_file.title=Malfermi dosieron +open_file_label=Malfermi +print.title=Presi +print_label=Presi +download.title=Elŝuti +download_label=Elŝuti +save.title=Konservi +save_label=Konservi +bookmark.title=Nuna vido (kopii aŭ malfermi en nova fenestro) +bookmark_label=Nuna vido + +bookmark1.title=Nuna paĝo (Montri adreson de la nuna paĝo) +bookmark1_label=Nuna paĝo + +# Secondary toolbar and context menu +tools.title=Iloj +tools_label=Iloj +first_page.title=Iri al la unua paĝo +first_page_label=Iri al la unua paĝo +last_page.title=Iri al la lasta paĝo +last_page_label=Iri al la lasta paĝo +page_rotate_cw.title=Rotaciigi dekstrume +page_rotate_cw_label=Rotaciigi dekstrume +page_rotate_ccw.title=Rotaciigi maldekstrume +page_rotate_ccw_label=Rotaciigi maldekstrume + +cursor_text_select_tool.title=Aktivigi tekstan elektilon +cursor_text_select_tool_label=Teksta elektilo +cursor_hand_tool.title=Aktivigi ilon de mano +cursor_hand_tool_label=Ilo de mano + +scroll_page.title=Uzi ŝovadon de paĝo +scroll_page_label=Ŝovado de paĝo +scroll_vertical.title=Uzi vertikalan ŝovadon +scroll_vertical_label=Vertikala ŝovado +scroll_horizontal.title=Uzi horizontalan ŝovadon +scroll_horizontal_label=Horizontala ŝovado +scroll_wrapped.title=Uzi ambaŭdirektan ŝovadon +scroll_wrapped_label=Ambaŭdirekta ŝovado + +spread_none.title=Ne montri paĝojn po du +spread_none_label=Unupaĝa vido +spread_odd.title=Kunigi paĝojn komencante per nepara paĝo +spread_odd_label=Po du paĝoj, neparaj maldekstre +spread_even.title=Kunigi paĝojn komencante per para paĝo +spread_even_label=Po du paĝoj, paraj maldekstre + +# Document properties dialog box +document_properties.title=Atributoj de dokumento… +document_properties_label=Atributoj de dokumento… +document_properties_file_name=Nomo de dosiero: +document_properties_file_size=Grando de dosiero: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KO ({{size_b}} oktetoj) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MO ({{size_b}} oktetoj) +document_properties_title=Titolo: +document_properties_author=Aŭtoro: +document_properties_subject=Temo: +document_properties_keywords=Ŝlosilvorto: +document_properties_creation_date=Dato de kreado: +document_properties_modification_date=Dato de modifo: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Kreinto: +document_properties_producer=Produktinto de PDF: +document_properties_version=Versio de PDF: +document_properties_page_count=Nombro de paĝoj: +document_properties_page_size=Grando de paĝo: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=vertikala +document_properties_page_size_orientation_landscape=horizontala +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letera +document_properties_page_size_name_legal=Jura +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Rapida tekstaĵa vido: +document_properties_linearized_yes=Jes +document_properties_linearized_no=Ne +document_properties_close=Fermi + +print_progress_message=Preparo de dokumento por presi ĝin … +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Nuligi + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Montri/kaŝi flankan strion +toggle_sidebar_notification2.title=Montri/kaŝi flankan strion (la dokumento enhavas konturon/kunsendaĵojn/tavolojn) +toggle_sidebar_label=Montri/kaŝi flankan strion +document_outline.title=Montri la konturon de dokumento (alklaku duoble por faldi/malfaldi ĉiujn elementojn) +document_outline_label=Konturo de dokumento +attachments.title=Montri kunsendaĵojn +attachments_label=Kunsendaĵojn +layers.title=Montri tavolojn (duoble alklaku por remeti ĉiujn tavolojn en la norman staton) +layers_label=Tavoloj +thumbs.title=Montri miniaturojn +thumbs_label=Miniaturoj +current_outline_item.title=Trovi nunan konturan elementon +current_outline_item_label=Nuna kontura elemento +findbar.title=Serĉi en dokumento +findbar_label=Serĉi + +additional_layers=Aldonaj tavoloj +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Paĝo {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Paĝo {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniaturo de paĝo {{page}} + +# Find panel button title and messages +find_input.title=Serĉi +find_input.placeholder=Serĉi en dokumento… +find_previous.title=Serĉi la antaŭan aperon de la frazo +find_previous_label=Malantaŭen +find_next.title=Serĉi la venontan aperon de la frazo +find_next_label=Antaŭen +find_highlight=Elstarigi ĉiujn +find_match_case_label=Distingi inter majuskloj kaj minuskloj +find_match_diacritics_label=Respekti supersignojn +find_entire_word_label=Tutaj vortoj +find_reached_top=Komenco de la dokumento atingita, daŭrigado ekde la fino +find_reached_bottom=Fino de la dokumento atingita, daŭrigado ekde la komenco +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} el {{total}} kongruo +find_match_count[two]={{current}} el {{total}} kongruoj +find_match_count[few]={{current}} el {{total}} kongruoj +find_match_count[many]={{current}} el {{total}} kongruoj +find_match_count[other]={{current}} el {{total}} kongruoj +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Pli ol {{limit}} kongruoj +find_match_count_limit[one]=Pli ol {{limit}} kongruo +find_match_count_limit[two]=Pli ol {{limit}} kongruoj +find_match_count_limit[few]=Pli ol {{limit}} kongruoj +find_match_count_limit[many]=Pli ol {{limit}} kongruoj +find_match_count_limit[other]=Pli ol {{limit}} kongruoj +find_not_found=Frazo ne trovita + +# Error panel labels +error_more_info=Pli da informo +error_less_info=Malpli da informo +error_close=Fermi +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Mesaĝo: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stako: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Dosiero: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Linio: {{line}} + +# Predefined zoom values +page_scale_width=Larĝo de paĝo +page_scale_fit=Adapti paĝon +page_scale_auto=Aŭtomata skalo +page_scale_actual=Reala grando +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Ŝargado… + +# Loading indicator messages +loading_error=Okazis eraro dum la ŝargado de la PDF dosiero. +invalid_file_error=Nevalida aŭ difektita PDF dosiero. +missing_file_error=Mankas dosiero PDF. +unexpected_response_error=Neatendita respondo de servilo. + +rendering_error=Okazis eraro dum la montro de la paĝo. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Prinoto: {{type}}] +password_label=Tajpu pasvorton por malfermi tiun ĉi dosieron PDF. +password_invalid=Nevalida pasvorto. Bonvolu provi denove. +password_ok=Akcepti +password_cancel=Nuligi + +printing_not_supported=Averto: tiu ĉi retumilo ne plene subtenas presadon. +printing_not_ready=Averto: la PDF dosiero ne estas plene ŝargita por presado. +web_fonts_disabled=Neaktivaj teksaĵaj tiparoj: ne elbas uzi enmetitajn tiparojn de PDF. + +# Editor +editor_free_text2.title=Teksto +editor_free_text2_label=Teksto +editor_ink2.title=Desegni +editor_ink2_label=Desegni + +free_text2_default_content=Ektajpi… + +# Editor Parameters +editor_free_text_color=Koloro +editor_free_text_size=Grando +editor_ink_color=Koloro +editor_ink_thickness=Dikeco +editor_ink_opacity=Maldiafaneco + +# Editor aria +editor_free_text2_aria_label=Tekstan redaktilon +editor_ink2_aria_label=Desegnan redaktilon +editor_ink_canvas_aria_label=Bildo kreita de uzanto diff --git a/www/include/vendor/pdfjs/web/locale/es-AR/viewer.properties b/www/include/vendor/pdfjs/web/locale/es-AR/viewer.properties new file mode 100644 index 0000000..7ef14e1 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/es-AR/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Página anterior +previous_label=Anterior +next.title=Página siguiente +next_label=Siguiente + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Página +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=de {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=( {{pageNumber}} de {{pagesCount}} ) + +zoom_out.title=Alejar +zoom_out_label=Alejar +zoom_in.title=Acercar +zoom_in_label=Acercar +zoom.title=Zoom +presentation_mode.title=Cambiar a modo presentación +presentation_mode_label=Modo presentación +open_file.title=Abrir archivo +open_file_label=Abrir +print.title=Imprimir +print_label=Imprimir +download.title=Descargar +download_label=Descargar +save.title=Guardar +save_label=Guardar +bookmark.title=Vista actual (copiar o abrir en nueva ventana) +bookmark_label=Vista actual + +bookmark1.title=Página actual (Ver URL de la página actual) +bookmark1_label=Página actual + +# Secondary toolbar and context menu +tools.title=Herramientas +tools_label=Herramientas +first_page.title=Ir a primera página +first_page_label=Ir a primera página +last_page.title=Ir a última página +last_page_label=Ir a última página +page_rotate_cw.title=Rotar horario +page_rotate_cw_label=Rotar horario +page_rotate_ccw.title=Rotar antihorario +page_rotate_ccw_label=Rotar antihorario + +cursor_text_select_tool.title=Habilitar herramienta de selección de texto +cursor_text_select_tool_label=Herramienta de selección de texto +cursor_hand_tool.title=Habilitar herramienta mano +cursor_hand_tool_label=Herramienta mano + +scroll_page.title=Usar desplazamiento de página +scroll_page_label=Desplazamiento de página +scroll_vertical.title=Usar desplazamiento vertical +scroll_vertical_label=Desplazamiento vertical +scroll_horizontal.title=Usar desplazamiento vertical +scroll_horizontal_label=Desplazamiento horizontal +scroll_wrapped.title=Usar desplazamiento encapsulado +scroll_wrapped_label=Desplazamiento encapsulado + +spread_none.title=No unir páginas dobles +spread_none_label=Sin dobles +spread_odd.title=Unir páginas dobles comenzando con las impares +spread_odd_label=Dobles impares +spread_even.title=Unir páginas dobles comenzando con las pares +spread_even_label=Dobles pares + +# Document properties dialog box +document_properties.title=Propiedades del documento… +document_properties_label=Propiedades del documento… +document_properties_file_name=Nombre de archivo: +document_properties_file_size=Tamaño de archovo: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Título: +document_properties_author=Autor: +document_properties_subject=Asunto: +document_properties_keywords=Palabras clave: +document_properties_creation_date=Fecha de creación: +document_properties_modification_date=Fecha de modificación: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Creador: +document_properties_producer=PDF Productor: +document_properties_version=Versión de PDF: +document_properties_page_count=Cantidad de páginas: +document_properties_page_size=Tamaño de página: +document_properties_page_size_unit_inches=en +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=normal +document_properties_page_size_orientation_landscape=apaisado +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Carta +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Vista rápida de la Web: +document_properties_linearized_yes=Sí +document_properties_linearized_no=No +document_properties_close=Cerrar + +print_progress_message=Preparando documento para imprimir… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cancelar + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Alternar barra lateral +toggle_sidebar_notification2.title=Alternar barra lateral (el documento contiene esquemas/adjuntos/capas) +toggle_sidebar_label=Alternar barra lateral +document_outline.title=Mostrar esquema del documento (doble clic para expandir/colapsar todos los ítems) +document_outline_label=Esquema del documento +attachments.title=Mostrar adjuntos +attachments_label=Adjuntos +layers.title=Mostrar capas (doble clic para restablecer todas las capas al estado predeterminado) +layers_label=Capas +thumbs.title=Mostrar miniaturas +thumbs_label=Miniaturas +current_outline_item.title=Buscar elemento de esquema actual +current_outline_item_label=Elemento de esquema actual +findbar.title=Buscar en documento +findbar_label=Buscar + +additional_layers=Capas adicionales +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Página {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Página {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura de página {{page}} + +# Find panel button title and messages +find_input.title=Buscar +find_input.placeholder=Buscar en documento… +find_previous.title=Buscar la aparición anterior de la frase +find_previous_label=Anterior +find_next.title=Buscar la siguiente aparición de la frase +find_next_label=Siguiente +find_highlight=Resaltar todo +find_match_case_label=Coincidir mayúsculas +find_match_diacritics_label=Coincidir diacríticos +find_entire_word_label=Palabras completas +find_reached_top=Inicio de documento alcanzado, continuando desde abajo +find_reached_bottom=Fin de documento alcanzando, continuando desde arriba +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} de {{total}} coincidencias +find_match_count[two]={{current}} de {{total}} coincidencias +find_match_count[few]={{current}} de {{total}} coincidencias +find_match_count[many]={{current}} de {{total}} coincidencias +find_match_count[other]={{current}} de {{total}} coincidencias +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Más de {{limit}} coincidencias +find_match_count_limit[one]=Más de {{limit}} coinciden +find_match_count_limit[two]=Más de {{limit}} coincidencias +find_match_count_limit[few]=Más de {{limit}} coincidencias +find_match_count_limit[many]=Más de {{limit}} coincidencias +find_match_count_limit[other]=Más de {{limit}} coincidencias +find_not_found=Frase no encontrada + +# Error panel labels +error_more_info=Más información +error_less_info=Menos información +error_close=Cerrar +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Mensaje: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Pila: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Archivo: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Línea: {{line}} + +# Predefined zoom values +page_scale_width=Ancho de página +page_scale_fit=Ajustar página +page_scale_auto=Zoom automático +page_scale_actual=Tamaño real +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Cargando… +loading_error=Ocurrió un error al cargar el PDF. +invalid_file_error=Archivo PDF no válido o cocrrupto. +missing_file_error=Archivo PDF faltante. +unexpected_response_error=Respuesta del servidor inesperada. + +rendering_error=Ocurrió un error al dibujar la página. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Anotación] +password_label=Ingrese la contraseña para abrir este archivo PDF +password_invalid=Contraseña inválida. Intente nuevamente. +password_ok=Aceptar +password_cancel=Cancelar + +printing_not_supported=Advertencia: La impresión no está totalmente soportada por este navegador. +printing_not_ready=Advertencia: El PDF no está completamente cargado para impresión. +web_fonts_disabled=Tipografía web deshabilitada: no se pueden usar tipos incrustados en PDF. + +# Editor +editor_free_text2.title=Texto +editor_free_text2_label=Texto +editor_ink2.title=Dibujar +editor_ink2_label=Dibujar + +free_text2_default_content=Empezar a tipear… + +# Editor Parameters +editor_free_text_color=Color +editor_free_text_size=Tamaño +editor_ink_color=Color +editor_ink_thickness=Espesor +editor_ink_opacity=Opacidad + +# Editor aria +editor_free_text2_aria_label=Editor de texto +editor_ink2_aria_label=Editor de dibujos +editor_ink_canvas_aria_label=Imagen creada por el usuario diff --git a/www/include/vendor/pdfjs/web/locale/es-CL/viewer.properties b/www/include/vendor/pdfjs/web/locale/es-CL/viewer.properties new file mode 100644 index 0000000..d7354b5 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/es-CL/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Página anterior +previous_label=Anterior +next.title=Página siguiente +next_label=Siguiente + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Página +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=de {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} de {{pagesCount}}) + +zoom_out.title=Alejar +zoom_out_label=Alejar +zoom_in.title=Acercar +zoom_in_label=Acercar +zoom.title=Ampliación +presentation_mode.title=Cambiar al modo de presentación +presentation_mode_label=Modo de presentación +open_file.title=Abrir archivo +open_file_label=Abrir +print.title=Imprimir +print_label=Imprimir +download.title=Descargar +download_label=Descargar +save.title=Guardar +save_label=Guardar +bookmark.title=Vista actual (copiar o abrir en nueva ventana) +bookmark_label=Vista actual + +bookmark1.title=Página actual (Ver URL de la página actual) +bookmark1_label=Página actual + +# Secondary toolbar and context menu +tools.title=Herramientas +tools_label=Herramientas +first_page.title=Ir a la primera página +first_page_label=Ir a la primera página +last_page.title=Ir a la última página +last_page_label=Ir a la última página +page_rotate_cw.title=Girar a la derecha +page_rotate_cw_label=Girar a la derecha +page_rotate_ccw.title=Girar a la izquierda +page_rotate_ccw_label=Girar a la izquierda + +cursor_text_select_tool.title=Activar la herramienta de selección de texto +cursor_text_select_tool_label=Herramienta de selección de texto +cursor_hand_tool.title=Activar la herramienta de mano +cursor_hand_tool_label=Herramienta de mano + +scroll_page.title=Usar desplazamiento de página +scroll_page_label=Desplazamiento de página +scroll_vertical.title=Usar desplazamiento vertical +scroll_vertical_label=Desplazamiento vertical +scroll_horizontal.title=Usar desplazamiento horizontal +scroll_horizontal_label=Desplazamiento horizontal +scroll_wrapped.title=Usar desplazamiento en bloque +scroll_wrapped_label=Desplazamiento en bloque + +spread_none.title=No juntar páginas a modo de libro +spread_none_label=Vista de una página +spread_odd.title=Junta las páginas partiendo con una de número impar +spread_odd_label=Vista de libro impar +spread_even.title=Junta las páginas partiendo con una de número par +spread_even_label=Vista de libro par + +# Document properties dialog box +document_properties.title=Propiedades del documento… +document_properties_label=Propiedades del documento… +document_properties_file_name=Nombre de archivo: +document_properties_file_size=Tamaño del archivo: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Título: +document_properties_author=Autor: +document_properties_subject=Asunto: +document_properties_keywords=Palabras clave: +document_properties_creation_date=Fecha de creación: +document_properties_modification_date=Fecha de modificación: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Creador: +document_properties_producer=Productor del PDF: +document_properties_version=Versión de PDF: +document_properties_page_count=Cantidad de páginas: +document_properties_page_size=Tamaño de la página: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=vertical +document_properties_page_size_orientation_landscape=horizontal +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Carta +document_properties_page_size_name_legal=Oficio +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Vista rápida en Web: +document_properties_linearized_yes=Sí +document_properties_linearized_no=No +document_properties_close=Cerrar + +print_progress_message=Preparando documento para impresión… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cancelar + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Barra lateral +toggle_sidebar_notification2.title=Cambiar barra lateral (índice de contenidos del documento/adjuntos/capas) +toggle_sidebar_label=Mostrar u ocultar la barra lateral +document_outline.title=Mostrar esquema del documento (doble clic para expandir/contraer todos los elementos) +document_outline_label=Esquema del documento +attachments.title=Mostrar adjuntos +attachments_label=Adjuntos +layers.title=Mostrar capas (doble clic para restablecer todas las capas al estado predeterminado) +layers_label=Capas +thumbs.title=Mostrar miniaturas +thumbs_label=Miniaturas +current_outline_item.title=Buscar elemento de esquema actual +current_outline_item_label=Elemento de esquema actual +findbar.title=Buscar en el documento +findbar_label=Buscar + +additional_layers=Capas adicionales +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Página {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Página {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura de la página {{page}} + +# Find panel button title and messages +find_input.title=Encontrar +find_input.placeholder=Encontrar en el documento… +find_previous.title=Buscar la aparición anterior de la frase +find_previous_label=Previo +find_next.title=Buscar la siguiente aparición de la frase +find_next_label=Siguiente +find_highlight=Destacar todos +find_match_case_label=Coincidir mayús./minús. +find_match_diacritics_label=Coincidir diacríticos +find_entire_word_label=Palabras completas +find_reached_top=Se alcanzó el inicio del documento, continuando desde el final +find_reached_bottom=Se alcanzó el final del documento, continuando desde el inicio +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]=Coincidencia {{current}} de {{total}} +find_match_count[two]=Coincidencia {{current}} de {{total}} +find_match_count[few]=Coincidencia {{current}} de {{total}} +find_match_count[many]=Coincidencia {{current}} de {{total}} +find_match_count[other]=Coincidencia {{current}} de {{total}} +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Más de {{limit}} coincidencias +find_match_count_limit[one]=Más de {{limit}} coincidencia +find_match_count_limit[two]=Más de {{limit}} coincidencias +find_match_count_limit[few]=Más de {{limit}} coincidencias +find_match_count_limit[many]=Más de {{limit}} coincidencias +find_match_count_limit[other]=Más de {{limit}} coincidencias +find_not_found=Frase no encontrada + +# Error panel labels +error_more_info=Más información +error_less_info=Menos información +error_close=Cerrar +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (compilación: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Mensaje: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Pila: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Archivo: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Línea: {{line}} + +# Predefined zoom values +page_scale_width=Ancho de página +page_scale_fit=Ajuste de página +page_scale_auto=Aumento automático +page_scale_actual=Tamaño actual +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Cargando… +loading_error=Ocurrió un error al cargar el PDF. +invalid_file_error=Archivo PDF inválido o corrupto. +missing_file_error=Falta el archivo PDF. +unexpected_response_error=Respuesta del servidor inesperada. + +rendering_error=Ocurrió un error al renderizar la página. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Anotación] +password_label=Ingrese la contraseña para abrir este archivo PDF. +password_invalid=Contraseña inválida. Por favor, vuelve a intentarlo. +password_ok=Aceptar +password_cancel=Cancelar + +printing_not_supported=Advertencia: Imprimir no está soportado completamente por este navegador. +printing_not_ready=Advertencia: El PDF no está completamente cargado para ser impreso. +web_fonts_disabled=Las tipografías web están desactivadas: imposible usar las fuentes PDF embebidas. + +# Editor +editor_free_text2.title=Texto +editor_free_text2_label=Texto +editor_ink2.title=Dibujar +editor_ink2_label=Dibujar + +free_text2_default_content=Empieza a escribir… + +# Editor Parameters +editor_free_text_color=Color +editor_free_text_size=Tamaño +editor_ink_color=Color +editor_ink_thickness=Grosor +editor_ink_opacity=Opacidad + +# Editor aria +editor_free_text2_aria_label=Editor de texto +editor_ink2_aria_label=Editor de dibujos +editor_ink_canvas_aria_label=Imagen creada por el usuario diff --git a/www/include/vendor/pdfjs/web/locale/es-ES/viewer.properties b/www/include/vendor/pdfjs/web/locale/es-ES/viewer.properties new file mode 100644 index 0000000..9fed99b --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/es-ES/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Página anterior +previous_label=Anterior +next.title=Página siguiente +next_label=Siguiente + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Página +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=de {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} de {{pagesCount}}) + +zoom_out.title=Reducir +zoom_out_label=Reducir +zoom_in.title=Aumentar +zoom_in_label=Aumentar +zoom.title=Tamaño +presentation_mode.title=Cambiar al modo presentación +presentation_mode_label=Modo presentación +open_file.title=Abrir archivo +open_file_label=Abrir +print.title=Imprimir +print_label=Imprimir +download.title=Descargar +download_label=Descargar +save.title=Guardar +save_label=Guardar +bookmark.title=Vista actual (copiar o abrir en una nueva ventana) +bookmark_label=Vista actual + +bookmark1.title=Página actual (Ver URL de la página actual) +bookmark1_label=Página actual + +# Secondary toolbar and context menu +tools.title=Herramientas +tools_label=Herramientas +first_page.title=Ir a la primera página +first_page_label=Ir a la primera página +last_page.title=Ir a la última página +last_page_label=Ir a la última página +page_rotate_cw.title=Rotar en sentido horario +page_rotate_cw_label=Rotar en sentido horario +page_rotate_ccw.title=Rotar en sentido antihorario +page_rotate_ccw_label=Rotar en sentido antihorario + +cursor_text_select_tool.title=Activar herramienta de selección de texto +cursor_text_select_tool_label=Herramienta de selección de texto +cursor_hand_tool.title=Activar herramienta de mano +cursor_hand_tool_label=Herramienta de mano + +scroll_page.title=Usar desplazamiento de página +scroll_page_label=Desplazamiento de página +scroll_vertical.title=Usar desplazamiento vertical +scroll_vertical_label=Desplazamiento vertical +scroll_horizontal.title=Usar desplazamiento horizontal +scroll_horizontal_label=Desplazamiento horizontal +scroll_wrapped.title=Usar desplazamiento en bloque +scroll_wrapped_label=Desplazamiento en bloque + +spread_none.title=No juntar páginas en vista de libro +spread_none_label=Vista de libro +spread_odd.title=Juntar las páginas partiendo de una con número impar +spread_odd_label=Vista de libro impar +spread_even.title=Juntar las páginas partiendo de una con número par +spread_even_label=Vista de libro par + +# Document properties dialog box +document_properties.title=Propiedades del documento… +document_properties_label=Propiedades del documento… +document_properties_file_name=Nombre de archivo: +document_properties_file_size=Tamaño de archivo: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Título: +document_properties_author=Autor: +document_properties_subject=Asunto: +document_properties_keywords=Palabras clave: +document_properties_creation_date=Fecha de creación: +document_properties_modification_date=Fecha de modificación: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Creador: +document_properties_producer=Productor PDF: +document_properties_version=Versión PDF: +document_properties_page_count=Número de páginas: +document_properties_page_size=Tamaño de la página: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=vertical +document_properties_page_size_orientation_landscape=horizontal +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Carta +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Vista rápida de la web: +document_properties_linearized_yes=Sí +document_properties_linearized_no=No +document_properties_close=Cerrar + +print_progress_message=Preparando documento para impresión… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cancelar + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Cambiar barra lateral +toggle_sidebar_notification2.title=Alternar barra lateral (el documento contiene esquemas/adjuntos/capas) +toggle_sidebar_label=Cambiar barra lateral +document_outline.title=Mostrar resumen del documento (doble clic para expandir/contraer todos los elementos) +document_outline_label=Resumen de documento +attachments.title=Mostrar adjuntos +attachments_label=Adjuntos +layers.title=Mostrar capas (doble clic para restablecer todas las capas al estado predeterminado) +layers_label=Capas +thumbs.title=Mostrar miniaturas +thumbs_label=Miniaturas +current_outline_item.title=Encontrar elemento de esquema actual +current_outline_item_label=Elemento de esquema actual +findbar.title=Buscar en el documento +findbar_label=Buscar + +additional_layers=Capas adicionales +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Página {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Página {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura de la página {{page}} + +# Find panel button title and messages +find_input.title=Buscar +find_input.placeholder=Buscar en el documento… +find_previous.title=Encontrar la anterior aparición de la frase +find_previous_label=Anterior +find_next.title=Encontrar la siguiente aparición de esta frase +find_next_label=Siguiente +find_highlight=Resaltar todos +find_match_case_label=Coincidencia de mayús./minús. +find_match_diacritics_label=Coincidir diacríticos +find_entire_word_label=Palabras completas +find_reached_top=Se alcanzó el inicio del documento, se continúa desde el final +find_reached_bottom=Se alcanzó el final del documento, se continúa desde el inicio +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} de {{total}} coincidencia +find_match_count[two]={{current}} de {{total}} coincidencias +find_match_count[few]={{current}} de {{total}} coincidencias +find_match_count[many]={{current}} de {{total}} coincidencias +find_match_count[other]={{current}} de {{total}} coincidencias +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Más de {{limit}} coincidencias +find_match_count_limit[one]=Más de {{limit}} coincidencia +find_match_count_limit[two]=Más de {{limit}} coincidencias +find_match_count_limit[few]=Más de {{limit}} coincidencias +find_match_count_limit[many]=Más de {{limit}} coincidencias +find_match_count_limit[other]=Más de {{limit}} coincidencias +find_not_found=Frase no encontrada + +# Error panel labels +error_more_info=Más información +error_less_info=Menos información +error_close=Cerrar +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Mensaje: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Pila: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Archivo: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Línea: {{line}} + +# Predefined zoom values +page_scale_width=Anchura de la página +page_scale_fit=Ajuste de la página +page_scale_auto=Tamaño automático +page_scale_actual=Tamaño real +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Cargando… +loading_error=Ocurrió un error al cargar el PDF. +invalid_file_error=Fichero PDF no válido o corrupto. +missing_file_error=No hay fichero PDF. +unexpected_response_error=Respuesta inesperada del servidor. + +rendering_error=Ocurrió un error al renderizar la página. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anotación {{type}}] +password_label=Introduzca la contraseña para abrir este archivo PDF. +password_invalid=Contraseña no válida. Vuelva a intentarlo. +password_ok=Aceptar +password_cancel=Cancelar + +printing_not_supported=Advertencia: Imprimir no está totalmente soportado por este navegador. +printing_not_ready=Advertencia: Este PDF no se ha cargado completamente para poder imprimirse. +web_fonts_disabled=Las tipografías web están desactivadas: es imposible usar las tipografías PDF embebidas. + +# Editor +editor_free_text2.title=Texto +editor_free_text2_label=Texto +editor_ink2.title=Dibujar +editor_ink2_label=Dibujar + +free_text2_default_content=Empezar a escribir… + +# Editor Parameters +editor_free_text_color=Color +editor_free_text_size=Tamaño +editor_ink_color=Color +editor_ink_thickness=Grosor +editor_ink_opacity=Opacidad + +# Editor aria +editor_free_text2_aria_label=Editor de texto +editor_ink2_aria_label=Editor de dibujos +editor_ink_canvas_aria_label=Imagen creada por el usuario diff --git a/www/include/vendor/pdfjs/web/locale/es-MX/viewer.properties b/www/include/vendor/pdfjs/web/locale/es-MX/viewer.properties new file mode 100644 index 0000000..de083e9 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/es-MX/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Página anterior +previous_label=Anterior +next.title=Página siguiente +next_label=Siguiente + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Página +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=de {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} de {{pagesCount}}) + +zoom_out.title=Reducir +zoom_out_label=Reducir +zoom_in.title=Aumentar +zoom_in_label=Aumentar +zoom.title=Zoom +presentation_mode.title=Cambiar al modo presentación +presentation_mode_label=Modo presentación +open_file.title=Abrir archivo +open_file_label=Abrir +print.title=Imprimir +print_label=Imprimir +download.title=Descargar +download_label=Descargar +save.title=Guardar +save_label=Guardar +bookmark.title=Vista actual (copiar o abrir en una nueva ventana) +bookmark_label=Vista actual + +bookmark1.title=Página actual (Ver URL de la página actual) +bookmark1_label=Página actual + +# Secondary toolbar and context menu +tools.title=Herramientas +tools_label=Herramientas +first_page.title=Ir a la primera página +first_page_label=Ir a la primera página +last_page.title=Ir a la última página +last_page_label=Ir a la última página +page_rotate_cw.title=Girar a la derecha +page_rotate_cw_label=Girar a la derecha +page_rotate_ccw.title=Girar a la izquierda +page_rotate_ccw_label=Girar a la izquierda + +cursor_text_select_tool.title=Activar la herramienta de selección de texto +cursor_text_select_tool_label=Herramienta de selección de texto +cursor_hand_tool.title=Activar la herramienta de mano +cursor_hand_tool_label=Herramienta de mano + +scroll_page.title=Usar desplazamiento de página +scroll_page_label=Desplazamiento de página +scroll_vertical.title=Usar desplazamiento vertical +scroll_vertical_label=Desplazamiento vertical +scroll_horizontal.title=Usar desplazamiento horizontal +scroll_horizontal_label=Desplazamiento horizontal +scroll_wrapped.title=Usar desplazamiento encapsulado +scroll_wrapped_label=Desplazamiento encapsulado + +spread_none.title=No unir páginas separadas +spread_none_label=Vista de una página +spread_odd.title=Unir las páginas partiendo con una de número impar +spread_odd_label=Vista de libro impar +spread_even.title=Juntar las páginas partiendo con una de número par +spread_even_label=Vista de libro par + +# Document properties dialog box +document_properties.title=Propiedades del documento… +document_properties_label=Propiedades del documento… +document_properties_file_name=Nombre del archivo: +document_properties_file_size=Tamaño del archivo: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Título: +document_properties_author=Autor: +document_properties_subject=Asunto: +document_properties_keywords=Palabras claves: +document_properties_creation_date=Fecha de creación: +document_properties_modification_date=Fecha de modificación: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Creador: +document_properties_producer=Productor PDF: +document_properties_version=Versión PDF: +document_properties_page_count=Número de páginas: +document_properties_page_size=Tamaño de la página: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=vertical +document_properties_page_size_orientation_landscape=horizontal +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Carta +document_properties_page_size_name_legal=Oficio +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Vista rápida de la web: +document_properties_linearized_yes=Sí +document_properties_linearized_no=No +document_properties_close=Cerrar + +print_progress_message=Preparando documento para impresión… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cancelar + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Cambiar barra lateral +toggle_sidebar_notification2.title=Alternar barra lateral (el documento contiene esquemas/adjuntos/capas) +toggle_sidebar_label=Cambiar barra lateral +document_outline.title=Mostrar esquema del documento (doble clic para expandir/contraer todos los elementos) +document_outline_label=Esquema del documento +attachments.title=Mostrar adjuntos +attachments_label=Adjuntos +layers.title=Mostrar capas (doble clic para restablecer todas las capas al estado predeterminado) +layers_label=Capas +thumbs.title=Mostrar miniaturas +thumbs_label=Miniaturas +current_outline_item.title=Buscar elemento de esquema actual +current_outline_item_label=Elemento de esquema actual +findbar.title=Buscar en el documento +findbar_label=Buscar + +additional_layers=Capas adicionales +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Página {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Página {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura de la página {{page}} + +# Find panel button title and messages +find_input.title=Buscar +find_input.placeholder=Buscar en el documento… +find_previous.title=Ir a la anterior frase encontrada +find_previous_label=Anterior +find_next.title=Ir a la siguiente frase encontrada +find_next_label=Siguiente +find_highlight=Resaltar todo +find_match_case_label=Coincidir con mayúsculas y minúsculas +find_match_diacritics_label=Coincidir diacríticos +find_entire_word_label=Palabras completas +find_reached_top=Se alcanzó el inicio del documento, se buscará al final +find_reached_bottom=Se alcanzó el final del documento, se buscará al inicio +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} de {{total}} coincidencia +find_match_count[two]={{current}} de {{total}} coincidencias +find_match_count[few]={{current}} de {{total}} coincidencias +find_match_count[many]={{current}} de {{total}} coincidencias +find_match_count[other]={{current}} de {{total}} coincidencias +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Más de {{limit}} coincidencias +find_match_count_limit[one]=Más de {{limit}} coinciden +find_match_count_limit[two]=Más de {{limit}} coincidencias +find_match_count_limit[few]=Más de {{limit}} coincidencias +find_match_count_limit[many]=Más de {{limit}} coincidencias +find_match_count_limit[other]=Más de {{limit}} coincidencias +find_not_found=No se encontró la frase + +# Error panel labels +error_more_info=Más información +error_less_info=Menos información +error_close=Cerrar +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Mensaje: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Pila: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Archivo: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Línea: {{line}} + +# Predefined zoom values +page_scale_width=Ancho de página +page_scale_fit=Ajustar página +page_scale_auto=Zoom automático +page_scale_actual=Tamaño real +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Cargando… +loading_error=Un error ocurrió al cargar el PDF. +invalid_file_error=Archivo PDF invalido o dañado. +missing_file_error=Archivo PDF no encontrado. +unexpected_response_error=Respuesta inesperada del servidor. + +rendering_error=Un error ocurrió al renderizar la página. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} anotación] +password_label=Ingresa la contraseña para abrir este archivo PDF. +password_invalid=Contraseña inválida. Por favor intenta de nuevo. +password_ok=Aceptar +password_cancel=Cancelar + +printing_not_supported=Advertencia: La impresión no esta completamente soportada por este navegador. +printing_not_ready=Advertencia: El PDF no cargo completamente para impresión. +web_fonts_disabled=Las fuentes web están desactivadas: es imposible usar las fuentes PDF embebidas. + +# Editor +editor_free_text2.title=Texto +editor_free_text2_label=Texto +editor_ink2.title=Dibujar +editor_ink2_label=Dibujar + +free_text2_default_content=Empieza a escribir… + +# Editor Parameters +editor_free_text_color=Color +editor_free_text_size=Tamaño +editor_ink_color=Color +editor_ink_thickness=Grossor +editor_ink_opacity=Opacidad + +# Editor aria +editor_free_text2_aria_label=Editor de texto +editor_ink2_aria_label=Editor de dibujo +editor_ink_canvas_aria_label=Imagen creada por el usuario diff --git a/www/include/vendor/pdfjs/web/locale/et/viewer.properties b/www/include/vendor/pdfjs/web/locale/et/viewer.properties new file mode 100644 index 0000000..1af8a40 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/et/viewer.properties @@ -0,0 +1,262 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Eelmine lehekülg +previous_label=Eelmine +next.title=Järgmine lehekülg +next_label=Järgmine + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Leht +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=/ {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}}/{{pagesCount}}) + +zoom_out.title=Vähenda +zoom_out_label=Vähenda +zoom_in.title=Suurenda +zoom_in_label=Suurenda +zoom.title=Suurendamine +presentation_mode.title=Lülitu esitlusrežiimi +presentation_mode_label=Esitlusrežiim +open_file.title=Ava fail +open_file_label=Ava +print.title=Prindi +print_label=Prindi +download.title=Laadi alla +download_label=Laadi alla +bookmark.title=Praegune vaade (kopeeri või ava uues aknas) +bookmark_label=Praegune vaade + +# Secondary toolbar and context menu +tools.title=Tööriistad +tools_label=Tööriistad +first_page.title=Mine esimesele leheküljele +first_page_label=Mine esimesele leheküljele +last_page.title=Mine viimasele leheküljele +last_page_label=Mine viimasele leheküljele +page_rotate_cw.title=Pööra päripäeva +page_rotate_cw_label=Pööra päripäeva +page_rotate_ccw.title=Pööra vastupäeva +page_rotate_ccw_label=Pööra vastupäeva + +cursor_text_select_tool.title=Luba teksti valimise tööriist +cursor_text_select_tool_label=Teksti valimise tööriist +cursor_hand_tool.title=Luba sirvimistööriist +cursor_hand_tool_label=Sirvimistööriist + +scroll_page.title=Kasutatakse lehe kaupa kerimist +scroll_page_label=Lehe kaupa kerimine +scroll_vertical.title=Kasuta vertikaalset kerimist +scroll_vertical_label=Vertikaalne kerimine +scroll_horizontal.title=Kasuta horisontaalset kerimist +scroll_horizontal_label=Horisontaalne kerimine +scroll_wrapped.title=Kasuta rohkem mahutavat kerimist +scroll_wrapped_label=Rohkem mahutav kerimine + +spread_none.title=Ära kõrvuta lehekülgi +spread_none_label=Lehtede kõrvutamine puudub +spread_odd.title=Kõrvuta leheküljed, alustades paaritute numbritega lehekülgedega +spread_odd_label=Kõrvutamine paaritute numbritega alustades +spread_even.title=Kõrvuta leheküljed, alustades paarisnumbritega lehekülgedega +spread_even_label=Kõrvutamine paarisnumbritega alustades + +# Document properties dialog box +document_properties.title=Dokumendi omadused… +document_properties_label=Dokumendi omadused… +document_properties_file_name=Faili nimi: +document_properties_file_size=Faili suurus: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KiB ({{size_b}} baiti) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MiB ({{size_b}} baiti) +document_properties_title=Pealkiri: +document_properties_author=Autor: +document_properties_subject=Teema: +document_properties_keywords=Märksõnad: +document_properties_creation_date=Loodud: +document_properties_modification_date=Muudetud: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}} {{time}} +document_properties_creator=Looja: +document_properties_producer=Generaator: +document_properties_version=Generaatori versioon: +document_properties_page_count=Lehekülgi: +document_properties_page_size=Lehe suurus: +document_properties_page_size_unit_inches=tolli +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=vertikaalpaigutus +document_properties_page_size_orientation_landscape=rõhtpaigutus +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized="Fast Web View" tugi: +document_properties_linearized_yes=Jah +document_properties_linearized_no=Ei +document_properties_close=Sulge + +print_progress_message=Dokumendi ettevalmistamine printimiseks… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Loobu + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Näita külgriba +toggle_sidebar_notification2.title=Näita külgriba (dokument sisaldab sisukorda/manuseid/kihte) +toggle_sidebar_label=Näita külgriba +document_outline.title=Näita sisukorda (kõigi punktide laiendamiseks/ahendamiseks topeltklõpsa) +document_outline_label=Näita sisukorda +attachments.title=Näita manuseid +attachments_label=Manused +layers.title=Näita kihte (kõikide kihtide vaikeolekusse lähtestamiseks topeltklõpsa) +layers_label=Kihid +thumbs.title=Näita pisipilte +thumbs_label=Pisipildid +current_outline_item.title=Otsi üles praegune kontuuriüksus +current_outline_item_label=Praegune kontuuriüksus +findbar.title=Otsi dokumendist +findbar_label=Otsi + +additional_layers=Täiendavad kihid +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Lehekülg {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title={{page}}. lehekülg +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas={{page}}. lehekülje pisipilt + +# Find panel button title and messages +find_input.title=Otsi +find_input.placeholder=Otsi dokumendist… +find_previous.title=Otsi fraasi eelmine esinemiskoht +find_previous_label=Eelmine +find_next.title=Otsi fraasi järgmine esinemiskoht +find_next_label=Järgmine +find_highlight=Too kõik esile +find_match_case_label=Tõstutundlik +find_match_diacritics_label=Otsitakse diakriitiliselt +find_entire_word_label=Täissõnad +find_reached_top=Jõuti dokumendi algusesse, jätkati lõpust +find_reached_bottom=Jõuti dokumendi lõppu, jätkati algusest +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]=vaste {{current}}/{{total}} +find_match_count[two]=vaste {{current}}/{{total}} +find_match_count[few]=vaste {{current}}/{{total}} +find_match_count[many]=vaste {{current}}/{{total}} +find_match_count[other]=vaste {{current}}/{{total}} +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Rohkem kui {{limit}} vastet +find_match_count_limit[one]=Rohkem kui {{limit}} vaste +find_match_count_limit[two]=Rohkem kui {{limit}} vastet +find_match_count_limit[few]=Rohkem kui {{limit}} vastet +find_match_count_limit[many]=Rohkem kui {{limit}} vastet +find_match_count_limit[other]=Rohkem kui {{limit}} vastet +find_not_found=Fraasi ei leitud + +# Error panel labels +error_more_info=Rohkem teavet +error_less_info=Vähem teavet +error_close=Sulge +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Teade: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fail: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Rida: {{line}} +rendering_error=Lehe renderdamisel esines viga. + +# Predefined zoom values +page_scale_width=Mahuta laiusele +page_scale_fit=Mahuta leheküljele +page_scale_auto=Automaatne suurendamine +page_scale_actual=Tegelik suurus +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Laadimine… +loading_error=PDFi laadimisel esines viga. +invalid_file_error=Vigane või rikutud PDF-fail. +missing_file_error=PDF-fail puudub. +unexpected_response_error=Ootamatu vastus serverilt. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}} {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Annotation] +password_label=PDF-faili avamiseks sisesta parool. +password_invalid=Vigane parool. Palun proovi uuesti. +password_ok=Sobib +password_cancel=Loobu + +printing_not_supported=Hoiatus: printimine pole selle brauseri poolt täielikult toetatud. +printing_not_ready=Hoiatus: PDF pole printimiseks täielikult laaditud. +web_fonts_disabled=Veebifondid on keelatud: PDFiga kaasatud fonte pole võimalik kasutada. + +# Editor +editor_none.title=Keela annotatsioonide muutmine +editor_none_label=Keela muutmine +editor_free_text.title=Lisa vabateksti annotatsioon +editor_free_text_label=Vabateksti annotatsioon +editor_ink.title=Lisa tindiannotatsioon +editor_ink_label=Tindiannotatsioon + +free_text_default_content=Sisesta tekst… + diff --git a/www/include/vendor/pdfjs/web/locale/eu/viewer.properties b/www/include/vendor/pdfjs/web/locale/eu/viewer.properties new file mode 100644 index 0000000..0f7e6ff --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/eu/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Aurreko orria +previous_label=Aurrekoa +next.title=Hurrengo orria +next_label=Hurrengoa + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Orria +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=/ {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages={{pagesCount}}/{{pageNumber}} + +zoom_out.title=Urrundu zooma +zoom_out_label=Urrundu zooma +zoom_in.title=Gerturatu zooma +zoom_in_label=Gerturatu zooma +zoom.title=Zooma +presentation_mode.title=Aldatu aurkezpen modura +presentation_mode_label=Arkezpen modua +open_file.title=Ireki fitxategia +open_file_label=Ireki +print.title=Inprimatu +print_label=Inprimatu +download.title=Deskargatu +download_label=Deskargatu +save.title=Gorde +save_label=Gorde +bookmark.title=Uneko ikuspegia (kopiatu edo ireki leiho berrian) +bookmark_label=Uneko ikuspegia + +bookmark1.title=Uneko orria (ikusi uneko orriaren URLa) +bookmark1_label=Uneko orria + +# Secondary toolbar and context menu +tools.title=Tresnak +tools_label=Tresnak +first_page.title=Joan lehen orrira +first_page_label=Joan lehen orrira +last_page.title=Joan azken orrira +last_page_label=Joan azken orrira +page_rotate_cw.title=Biratu erlojuaren norantzan +page_rotate_cw_label=Biratu erlojuaren norantzan +page_rotate_ccw.title=Biratu erlojuaren aurkako norantzan +page_rotate_ccw_label=Biratu erlojuaren aurkako norantzan + +cursor_text_select_tool.title=Gaitu testuaren hautapen tresna +cursor_text_select_tool_label=Testuaren hautapen tresna +cursor_hand_tool.title=Gaitu eskuaren tresna +cursor_hand_tool_label=Eskuaren tresna + +scroll_page.title=Erabili orriaren korritzea +scroll_page_label=Orriaren korritzea +scroll_vertical.title=Erabili korritze bertikala +scroll_vertical_label=Korritze bertikala +scroll_horizontal.title=Erabili korritze horizontala +scroll_horizontal_label=Korritze horizontala +scroll_wrapped.title=Erabili korritze egokitua +scroll_wrapped_label=Korritze egokitua + +spread_none.title=Ez elkartu barreiatutako orriak +spread_none_label=Barreiatzerik ez +spread_odd.title=Elkartu barreiatutako orriak bakoiti zenbakidunekin hasita +spread_odd_label=Barreiatze bakoitia +spread_even.title=Elkartu barreiatutako orriak bikoiti zenbakidunekin hasita +spread_even_label=Barreiatze bikoitia + +# Document properties dialog box +document_properties.title=Dokumentuaren propietateak… +document_properties_label=Dokumentuaren propietateak… +document_properties_file_name=Fitxategi-izena: +document_properties_file_size=Fitxategiaren tamaina: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} byte) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} byte) +document_properties_title=Izenburua: +document_properties_author=Egilea: +document_properties_subject=Gaia: +document_properties_keywords=Gako-hitzak: +document_properties_creation_date=Sortze-data: +document_properties_modification_date=Aldatze-data: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Sortzailea: +document_properties_producer=PDFaren ekoizlea: +document_properties_version=PDF bertsioa: +document_properties_page_count=Orrialde kopurua: +document_properties_page_size=Orriaren tamaina: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=bertikala +document_properties_page_size_orientation_landscape=horizontala +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Gutuna +document_properties_page_size_name_legal=Legala +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Webeko ikuspegi bizkorra: +document_properties_linearized_yes=Bai +document_properties_linearized_no=Ez +document_properties_close=Itxi + +print_progress_message=Dokumentua inprimatzeko prestatzen… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent=%{{progress}} +print_progress_close=Utzi + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Txandakatu alboko barra +toggle_sidebar_notification2.title=Txandakatu alboko barra (dokumentuak eskema/eranskinak/geruzak ditu) +toggle_sidebar_label=Txandakatu alboko barra +document_outline.title=Erakutsi dokumentuaren eskema (klik bikoitza elementu guztiak zabaltzeko/tolesteko) +document_outline_label=Dokumentuaren eskema +attachments.title=Erakutsi eranskinak +attachments_label=Eranskinak +layers.title=Erakutsi geruzak (klik bikoitza geruza guztiak egoera lehenetsira berrezartzeko) +layers_label=Geruzak +thumbs.title=Erakutsi koadro txikiak +thumbs_label=Koadro txikiak +current_outline_item.title=Bilatu uneko eskemaren elementua +current_outline_item_label=Uneko eskemaren elementua +findbar.title=Bilatu dokumentuan +findbar_label=Bilatu + +additional_layers=Geruza gehigarriak +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark={{page}}. orria +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title={{page}}. orria +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas={{page}}. orriaren koadro txikia + +# Find panel button title and messages +find_input.title=Bilatu +find_input.placeholder=Bilatu dokumentuan… +find_previous.title=Bilatu esaldiaren aurreko parekatzea +find_previous_label=Aurrekoa +find_next.title=Bilatu esaldiaren hurrengo parekatzea +find_next_label=Hurrengoa +find_highlight=Nabarmendu guztia +find_match_case_label=Bat etorri maiuskulekin/minuskulekin +find_match_diacritics_label=Bereizi diakritikoak +find_entire_word_label=Hitz osoak +find_reached_top=Dokumentuaren hasierara heldu da, bukaeratik jarraitzen +find_reached_bottom=Dokumentuaren bukaerara heldu da, hasieratik jarraitzen +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{total}}/{{current}}. bat etortzea +find_match_count[two]={{total}}/{{current}}. bat etortzea +find_match_count[few]={{total}}/{{current}}. bat etortzea +find_match_count[many]={{total}}/{{current}}. bat etortzea +find_match_count[other]={{total}}/{{current}}. bat etortzea +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]={{limit}} bat-etortze baino gehiago +find_match_count_limit[one]=Bat-etortze {{limit}} baino gehiago +find_match_count_limit[two]={{limit}} bat-etortze baino gehiago +find_match_count_limit[few]={{limit}} bat-etortze baino gehiago +find_match_count_limit[many]={{limit}} bat-etortze baino gehiago +find_match_count_limit[other]={{limit}} bat-etortze baino gehiago +find_not_found=Esaldia ez da aurkitu + +# Error panel labels +error_more_info=Informazio gehiago +error_less_info=Informazio gutxiago +error_close=Itxi +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (eraikuntza: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Mezua: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Pila: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fitxategia: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Lerroa: {{line}} + +# Predefined zoom values +page_scale_width=Orriaren zabalera +page_scale_fit=Doitu orrira +page_scale_auto=Zoom automatikoa +page_scale_actual=Benetako tamaina +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent=%{{scale}} + +# Loading indicator messages +loading=Kargatzen… +loading_error=Errorea gertatu da PDFa kargatzean. +invalid_file_error=PDF fitxategi baliogabe edo hondatua. +missing_file_error=PDF fitxategia falta da. +unexpected_response_error=Espero gabeko zerbitzariaren erantzuna. + +rendering_error=Errorea gertatu da orria errendatzean. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} ohartarazpena] +password_label=Idatzi PDF fitxategi hau irekitzeko pasahitza. +password_invalid=Pasahitz baliogabea. Saiatu berriro mesedez. +password_ok=Ados +password_cancel=Utzi + +printing_not_supported=Abisua: inprimatzeko euskarria ez da erabatekoa nabigatzaile honetan. +printing_not_ready=Abisua: PDFa ez dago erabat kargatuta inprimatzeko. +web_fonts_disabled=Webeko letra-tipoak desgaituta daude: ezin dira kapsulatutako PDF letra-tipoak erabili. + +# Editor +editor_free_text2.title=Testua +editor_free_text2_label=Testua +editor_ink2.title=Marrazkia +editor_ink2_label=Marrazkia + +free_text2_default_content=Hasi idazten… + +# Editor Parameters +editor_free_text_color=Kolorea +editor_free_text_size=Tamaina +editor_ink_color=Kolorea +editor_ink_thickness=Loditasuna +editor_ink_opacity=Opakutasuna + +# Editor aria +editor_free_text2_aria_label=Testu-editorea +editor_ink2_aria_label=Marrazki-editorea +editor_ink_canvas_aria_label=Erabiltzaileak sortutako irudia diff --git a/www/include/vendor/pdfjs/web/locale/fa/viewer.properties b/www/include/vendor/pdfjs/web/locale/fa/viewer.properties new file mode 100644 index 0000000..f39748d --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/fa/viewer.properties @@ -0,0 +1,216 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=صفحهٔ قبلی +previous_label=قبلی +next.title=صفحهٔ بعدی +next_label=بعدی + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=صفحه +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=از {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}}از {{pagesCount}}) + +zoom_out.title=کوچک‌نمایی +zoom_out_label=کوچک‌نمایی +zoom_in.title=بزرگ‌نمایی +zoom_in_label=بزرگ‌نمایی +zoom.title=زوم +presentation_mode.title=تغییر به حالت ارائه +presentation_mode_label=حالت ارائه +open_file.title=باز کردن پرونده +open_file_label=باز کردن +print.title=چاپ +print_label=چاپ +download.title=بارگیری +download_label=بارگیری +bookmark.title=نمای فعلی (رونوشت و یا نشان دادن در پنجره جدید) +bookmark_label=نمای فعلی + +# Secondary toolbar and context menu +tools.title=ابزارها +tools_label=ابزارها +first_page.title=برو به اولین صفحه +first_page_label=برو به اولین صفحه +last_page.title=برو به آخرین صفحه +last_page_label=برو به آخرین صفحه +page_rotate_cw.title=چرخش ساعتگرد +page_rotate_cw_label=چرخش ساعتگرد +page_rotate_ccw.title=چرخش پاد ساعتگرد +page_rotate_ccw_label=چرخش پاد ساعتگرد + +cursor_text_select_tool.title=فعال کردن ابزارِ انتخابِ متن +cursor_text_select_tool_label=ابزارِ انتخابِ متن +cursor_hand_tool.title=فعال کردن ابزارِ دست +cursor_hand_tool_label=ابزار دست + +scroll_vertical.title=استفاده از پیمایش عمودی +scroll_vertical_label=پیمایش عمودی +scroll_horizontal.title=استفاده از پیمایش افقی +scroll_horizontal_label=پیمایش افقی + + +# Document properties dialog box +document_properties.title=خصوصیات سند... +document_properties_label=خصوصیات سند... +document_properties_file_name=نام فایل: +document_properties_file_size=حجم پرونده: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} کیلوبایت ({{size_b}} بایت) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} مگابایت ({{size_b}} بایت) +document_properties_title=عنوان: +document_properties_author=نویسنده: +document_properties_subject=موضوع: +document_properties_keywords=کلیدواژه‌ها: +document_properties_creation_date=تاریخ ایجاد: +document_properties_modification_date=تاریخ ویرایش: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}، {{time}} +document_properties_creator=ایجاد کننده: +document_properties_producer=ایجاد کننده PDF: +document_properties_version=نسخه PDF: +document_properties_page_count=تعداد صفحات: +document_properties_page_size=اندازه صفحه: +document_properties_page_size_unit_inches=اینچ +document_properties_page_size_unit_millimeters=میلی‌متر +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=نامه +document_properties_page_size_name_legal=حقوقی +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized_yes=بله +document_properties_linearized_no=خیر +document_properties_close=بستن + +print_progress_message=آماده سازی مدارک برای چاپ کردن… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=لغو + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=باز و بسته کردن نوار کناری +toggle_sidebar_label=تغییرحالت نوارکناری +document_outline.title=نمایش رئوس مطالب مدارک(برای بازشدن/جمع شدن همه موارد دوبار کلیک کنید) +document_outline_label=طرح نوشتار +attachments.title=نمایش پیوست‌ها +attachments_label=پیوست‌ها +thumbs.title=نمایش تصاویر بندانگشتی +thumbs_label=تصاویر بندانگشتی +findbar.title=جستجو در سند +findbar_label=پیدا کردن + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=صفحه {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=تصویر بند‌ انگشتی صفحه {{page}} + +# Find panel button title and messages +find_input.title=پیدا کردن +find_input.placeholder=پیدا کردن در سند… +find_previous.title=پیدا کردن رخداد قبلی عبارت +find_previous_label=قبلی +find_next.title=پیدا کردن رخداد بعدی عبارت +find_next_label=بعدی +find_highlight=برجسته و هایلایت کردن همه موارد +find_match_case_label=تطبیق کوچکی و بزرگی حروف +find_entire_word_label=تمام کلمه‌ها +find_reached_top=به بالای صفحه رسیدیم، از پایین ادامه می‌دهیم +find_reached_bottom=به آخر صفحه رسیدیم، از بالا ادامه می‌دهیم +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count[one]={{current}} از {{total}} مطابقت دارد +find_match_count[two]={{current}} از {{total}} مطابقت دارد +find_match_count[few]={{current}} از {{total}} مطابقت دارد +find_match_count[many]={{current}} از {{total}} مطابقت دارد +find_match_count[other]={{current}} از {{total}} مطابقت دارد +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_not_found=عبارت پیدا نشد + +# Error panel labels +error_more_info=اطلاعات بیشتر +error_less_info=اطلاعات کمتر +error_close=بستن +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=‏PDF.js ورژن{{version}} ‏(ساخت: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=پیام: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=توده: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=پرونده: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=سطر: {{line}} +rendering_error=هنگام بارگیری صفحه خطایی رخ داد. + +# Predefined zoom values +page_scale_width=عرض صفحه +page_scale_fit=اندازه کردن صفحه +page_scale_auto=بزرگنمایی خودکار +page_scale_actual=اندازه واقعی‌ +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=هنگام بارگیری پرونده PDF خطایی رخ داد. +invalid_file_error=پرونده PDF نامعتبر یامعیوب می‌باشد. +missing_file_error=پرونده PDF یافت نشد. +unexpected_response_error=پاسخ پیش بینی نشده سرور + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Annotation] +password_label=جهت باز کردن پرونده PDF گذرواژه را وارد نمائید. +password_invalid=گذرواژه نامعتبر. لطفا مجددا تلاش کنید. +password_ok=تأیید +password_cancel=لغو + +printing_not_supported=هشدار: قابلیت چاپ به‌طور کامل در این مرورگر پشتیبانی نمی‌شود. +printing_not_ready=اخطار: پرونده PDF بطور کامل بارگیری نشده و امکان چاپ وجود ندارد. +web_fonts_disabled=فونت های تحت وب غیر فعال شده اند: امکان استفاده از نمایش دهنده داخلی PDF وجود ندارد. + diff --git a/www/include/vendor/pdfjs/web/locale/ff/viewer.properties b/www/include/vendor/pdfjs/web/locale/ff/viewer.properties new file mode 100644 index 0000000..9acff5b --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/ff/viewer.properties @@ -0,0 +1,235 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Hello Ɓennungo +previous_label=Ɓennuɗo +next.title=Hello faango +next_label=Yeeso + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Hello +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=e nder {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} of {{pagesCount}}) + +zoom_out.title=Lonngo Woɗɗa +zoom_out_label=Lonngo Woɗɗa +zoom_in.title=Lonngo Ara +zoom_in_label=Lonngo Ara +zoom.title=Lonngo +presentation_mode.title=Faytu to Presentation Mode +presentation_mode_label=Presentation Mode +open_file.title=Uddit Fiilde +open_file_label=Uddit +print.title=Winndito +print_label=Winndito +download.title=Aawto +download_label=Aawto +bookmark.title=Jiytol gonangol (natto walla uddit e henorde) +bookmark_label=Jiytol Gonangol + +# Secondary toolbar and context menu +tools.title=Kuutorɗe +tools_label=Kuutorɗe +first_page.title=Yah to hello adanngo +first_page_label=Yah to hello adanngo +last_page.title=Yah to hello wattindiingo +last_page_label=Yah to hello wattindiingo +page_rotate_cw.title=Yiiltu Faya Ñaamo +page_rotate_cw_label=Yiiltu Faya Ñaamo +page_rotate_ccw.title=Yiiltu Faya Nano +page_rotate_ccw_label=Yiiltu Faya Nano + +cursor_text_select_tool.title=Gollin kaɓirgel cuɓirgel binndi +cursor_text_select_tool_label=Kaɓirgel cuɓirgel binndi +cursor_hand_tool.title=Hurmin kuutorgal junngo +cursor_hand_tool_label=Kaɓirgel junngo + +scroll_vertical.title=Huutoro gorwitol daringol +scroll_vertical_label=Gorwitol daringol +scroll_horizontal.title=Huutoro gorwitol lelingol +scroll_horizontal_label=Gorwitol daringol +scroll_wrapped.title=Huutoro gorwitol coomingol +scroll_wrapped_label=Gorwitol coomingol + +spread_none.title=Hoto tawtu kelle kelle +spread_none_label=Alaa Spreads +spread_odd.title=Tawtu kelle puɗɗortooɗe kelle teelɗe +spread_odd_label=Kelle teelɗe +spread_even.title=Tawtu ɗereeji kelle puɗɗoriiɗi kelle teeltuɗe +spread_even_label=Kelle teeltuɗe + +# Document properties dialog box +document_properties.title=Keeroraaɗi Winndannde… +document_properties_label=Keeroraaɗi Winndannde… +document_properties_file_name=Innde fiilde: +document_properties_file_size=Ɓetol fiilde: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bite) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bite) +document_properties_title=Tiitoonde: +document_properties_author=Binnduɗo: +document_properties_subject=Toɓɓere: +document_properties_keywords=Kelmekele jiytirɗe: +document_properties_creation_date=Ñalnde Sosaa: +document_properties_modification_date=Ñalnde Waylaa: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Cosɗo: +document_properties_producer=Paggiiɗo PDF: +document_properties_version=Yamre PDF: +document_properties_page_count=Limoore Kelle: +document_properties_page_size=Ɓeto Hello: +document_properties_page_size_unit_inches=nder +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=dariingo +document_properties_page_size_orientation_landscape=wertiingo +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Ɓataake +document_properties_page_size_name_legal=Laawol +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Ɗisngo geese yaawngo: +document_properties_linearized_yes=Eey +document_properties_linearized_no=Alaa +document_properties_close=Uddu + +print_progress_message=Nana heboo winnditaade fiilannde… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Haaytu + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Toggilo Palal Sawndo +toggle_sidebar_label=Toggilo Palal Sawndo +document_outline.title=Hollu Ƴiyal Fiilannde (dobdobo ngam wertude/taggude teme fof) +document_outline_label=Toɓɓe Fiilannde +attachments.title=Hollu Ɗisanɗe +attachments_label=Ɗisanɗe +thumbs.title=Hollu Dooɓe +thumbs_label=Dooɓe +findbar.title=Yiylo e fiilannde +findbar_label=Yiytu + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Hello {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Dooɓre Hello {{page}} + +# Find panel button title and messages +find_input.title=Yiytu +find_input.placeholder=Yiylo nder dokimaa +find_previous.title=Yiylo cilol ɓennugol konngol ngol +find_previous_label=Ɓennuɗo +find_next.title=Yiylo cilol garowol konngol ngol +find_next_label=Yeeso +find_highlight=Jalbin fof +find_match_case_label=Jaaɓnu darnde +find_entire_word_label=Kelme timmuɗe tan +find_reached_top=Heɓii fuɗɗorde fiilannde, jokku faya les +find_reached_bottom=Heɓii hoore fiilannde, jokku faya les +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} wonande laabi {{total}} +find_match_count[two]={{current}} wonande laabi {{total}} +find_match_count[few]={{current}} wonande laabi {{total}} +find_match_count[many]={{current}} wonande laabi {{total}} +find_match_count[other]={{current}} wonande laabi {{total}} +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Ko ɓuri laabi {{limit}} +find_match_count_limit[one]=Ko ɓuri laani {{limit}} +find_match_count_limit[two]=Ko ɓuri laabi {{limit}} +find_match_count_limit[few]=Ko ɓuri laabi {{limit}} +find_match_count_limit[many]=Ko ɓuri laabi {{limit}} +find_match_count_limit[other]=Ko ɓuri laabi {{limit}} +find_not_found=Konngi njiyataa + +# Error panel labels +error_more_info=Ɓeydu Humpito +error_less_info=Ustu Humpito +error_close=Uddu +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Ɓatakuure: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fiilde: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Gorol: {{line}} +rendering_error=Juumre waɗii tuma nde yoŋkittoo hello. + +# Predefined zoom values +page_scale_width=Njaajeendi Hello +page_scale_fit=Keƴeendi Hello +page_scale_auto=Loongorde Jaajol +page_scale_actual=Ɓetol Jaati +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=Juumre waɗii tuma nde loowata PDF oo. +invalid_file_error=Fiilde PDF moƴƴaani walla jiibii. +missing_file_error=Fiilde PDF ena ŋakki. +unexpected_response_error=Jaabtol sarworde tijjinooka. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Siiftannde] +password_label=Naatu finnde ngam uddite ndee fiilde PDF. +password_invalid=Finnde moƴƴaani. Tiiɗno eto kadi. +password_ok=OK +password_cancel=Haaytu + +printing_not_supported=Reentino: Winnditagol tammbitaaka no feewi e ndee wanngorde. +printing_not_ready=Reentino: PDF oo loowaaki haa timmi ngam winnditagol. +web_fonts_disabled=Ponte geese ko daaƴaaɗe: horiima huutoraade ponte PDF coomtoraaɗe. + diff --git a/www/include/vendor/pdfjs/web/locale/fi/viewer.properties b/www/include/vendor/pdfjs/web/locale/fi/viewer.properties new file mode 100644 index 0000000..bfd2f8b --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/fi/viewer.properties @@ -0,0 +1,279 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Edellinen sivu +previous_label=Edellinen +next.title=Seuraava sivu +next_label=Seuraava + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Sivu +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=/ {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} / {{pagesCount}}) + +zoom_out.title=Loitonna +zoom_out_label=Loitonna +zoom_in.title=Lähennä +zoom_in_label=Lähennä +zoom.title=Suurennus +presentation_mode.title=Siirry esitystilaan +presentation_mode_label=Esitystila +open_file.title=Avaa tiedosto +open_file_label=Avaa +print.title=Tulosta +print_label=Tulosta +download.title=Lataa +download_label=Lataa +save.title=Tallenna +save_label=Tallenna +bookmark.title=Avoin ikkuna (kopioi tai avaa uuteen ikkunaan) +bookmark_label=Avoin ikkuna + +bookmark1.title=Nykyinen sivu (Näytä URL-osoite nykyiseltä sivulta) +bookmark1_label=Nykyinen sivu + +# Secondary toolbar and context menu +tools.title=Tools +tools_label=Tools +first_page.title=Siirry ensimmäiselle sivulle +first_page_label=Siirry ensimmäiselle sivulle +last_page.title=Siirry viimeiselle sivulle +last_page_label=Siirry viimeiselle sivulle +page_rotate_cw.title=Kierrä oikealle +page_rotate_cw_label=Kierrä oikealle +page_rotate_ccw.title=Kierrä vasemmalle +page_rotate_ccw_label=Kierrä vasemmalle + +cursor_text_select_tool.title=Käytä tekstinvalintatyökalua +cursor_text_select_tool_label=Tekstinvalintatyökalu +cursor_hand_tool.title=Käytä käsityökalua +cursor_hand_tool_label=Käsityökalu + +scroll_page.title=Käytä sivun vieritystä +scroll_page_label=Sivun vieritys +scroll_vertical.title=Käytä pystysuuntaista vieritystä +scroll_vertical_label=Pystysuuntainen vieritys +scroll_horizontal.title=Käytä vaakasuuntaista vieritystä +scroll_horizontal_label=Vaakasuuntainen vieritys +scroll_wrapped.title=Käytä rivittyvää vieritystä +scroll_wrapped_label=Rivittyvä vieritys + +spread_none.title=Älä yhdistä sivuja aukeamiksi +spread_none_label=Ei aukeamia +spread_odd.title=Yhdistä sivut aukeamiksi alkaen parittomalta sivulta +spread_odd_label=Parittomalta alkavat aukeamat +spread_even.title=Yhdistä sivut aukeamiksi alkaen parilliselta sivulta +spread_even_label=Parilliselta alkavat aukeamat + +# Document properties dialog box +document_properties.title=Dokumentin ominaisuudet… +document_properties_label=Dokumentin ominaisuudet… +document_properties_file_name=Tiedoston nimi: +document_properties_file_size=Tiedoston koko: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} kt ({{size_b}} tavua) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} Mt ({{size_b}} tavua) +document_properties_title=Otsikko: +document_properties_author=Tekijä: +document_properties_subject=Aihe: +document_properties_keywords=Avainsanat: +document_properties_creation_date=Luomispäivämäärä: +document_properties_modification_date=Muokkauspäivämäärä: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Luoja: +document_properties_producer=PDF-tuottaja: +document_properties_version=PDF-versio: +document_properties_page_count=Sivujen määrä: +document_properties_page_size=Sivun koko: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=pysty +document_properties_page_size_orientation_landscape=vaaka +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Nopea web-katselu: +document_properties_linearized_yes=Kyllä +document_properties_linearized_no=Ei +document_properties_close=Sulje + +print_progress_message=Valmistellaan dokumenttia tulostamista varten… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}} % +print_progress_close=Peruuta + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Näytä/piilota sivupaneeli +toggle_sidebar_notification2.title=Näytä/piilota sivupaneeli (dokumentissa on sisällys/liitteitä/tasoja) +toggle_sidebar_label=Näytä/piilota sivupaneeli +document_outline.title=Näytä dokumentin sisällys (laajenna tai kutista kohdat kaksoisnapsauttamalla) +document_outline_label=Dokumentin sisällys +attachments.title=Näytä liitteet +attachments_label=Liitteet +layers.title=Näytä tasot (kaksoisnapsauta palauttaaksesi kaikki tasot oletustilaan) +layers_label=Tasot +thumbs.title=Näytä pienoiskuvat +thumbs_label=Pienoiskuvat +current_outline_item.title=Etsi nykyinen sisällyksen kohta +current_outline_item_label=Nykyinen sisällyksen kohta +findbar.title=Etsi dokumentista +findbar_label=Etsi + +additional_layers=Lisätasot +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Sivu {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Sivu {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Pienoiskuva sivusta {{page}} + +# Find panel button title and messages +find_input.title=Etsi +find_input.placeholder=Etsi dokumentista… +find_previous.title=Etsi hakusanan edellinen osuma +find_previous_label=Edellinen +find_next.title=Etsi hakusanan seuraava osuma +find_next_label=Seuraava +find_highlight=Korosta kaikki +find_match_case_label=Huomioi kirjainkoko +find_match_diacritics_label=Erota tarkkeet +find_entire_word_label=Kokonaiset sanat +find_reached_top=Päästiin dokumentin alkuun, jatketaan lopusta +find_reached_bottom=Päästiin dokumentin loppuun, jatketaan alusta +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} / {{total}} osuma +find_match_count[two]={{current}} / {{total}} osumaa +find_match_count[few]={{current}} / {{total}} osumaa +find_match_count[many]={{current}} / {{total}} osumaa +find_match_count[other]={{current}} / {{total}} osumaa +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Enemmän kuin {{limit}} osumaa +find_match_count_limit[one]=Enemmän kuin {{limit}} osuma +find_match_count_limit[two]=Enemmän kuin {{limit}} osumaa +find_match_count_limit[few]=Enemmän kuin {{limit}} osumaa +find_match_count_limit[many]=Enemmän kuin {{limit}} osumaa +find_match_count_limit[other]=Enemmän kuin {{limit}} osumaa +find_not_found=Hakusanaa ei löytynyt + +# Error panel labels +error_more_info=Lisätietoja +error_less_info=Lisätietoja +error_close=Sulje +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (kooste: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Virheilmoitus: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Pino: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Tiedosto: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Rivi: {{line}} + +# Predefined zoom values +page_scale_width=Sivun leveys +page_scale_fit=Koko sivu +page_scale_auto=Automaattinen suurennus +page_scale_actual=Todellinen koko +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}} % + +# Loading indicator messages +loading=Ladataan… + +# Loading indicator messages +loading_error=Tapahtui virhe ladattaessa PDF-tiedostoa. +invalid_file_error=Virheellinen tai vioittunut PDF-tiedosto. +missing_file_error=Puuttuva PDF-tiedosto. +unexpected_response_error=Odottamaton vastaus palvelimelta. + +rendering_error=Tapahtui virhe piirrettäessä sivua. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}}-merkintä] +password_label=Kirjoita PDF-tiedoston salasana. +password_invalid=Virheellinen salasana. Yritä uudestaan. +password_ok=OK +password_cancel=Peruuta + +printing_not_supported=Varoitus: Selain ei tue kaikkia tulostustapoja. +printing_not_ready=Varoitus: PDF-tiedosto ei ole vielä latautunut kokonaan, eikä sitä voi vielä tulostaa. +web_fonts_disabled=Verkkosivujen omat kirjasinlajit on estetty: ei voida käyttää upotettuja PDF-kirjasinlajeja. + +# Editor +editor_free_text2.title=Teksti +editor_free_text2_label=Teksti +editor_ink2.title=Piirros +editor_ink2_label=Piirros + +free_text2_default_content=Aloita kirjoittaminen… + +# Editor Parameters +editor_free_text_color=Väri +editor_free_text_size=Koko +editor_ink_color=Väri +editor_ink_thickness=Paksuus +editor_ink_opacity=Peittävyys + +# Editor aria +editor_free_text2_aria_label=Tekstimuokkain +editor_ink2_aria_label=Piirrustusmuokkain +editor_ink_canvas_aria_label=Käyttäjän luoma kuva diff --git a/www/include/vendor/pdfjs/web/locale/fr/viewer.properties b/www/include/vendor/pdfjs/web/locale/fr/viewer.properties new file mode 100644 index 0000000..c5d9c14 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/fr/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Page précédente +previous_label=Précédent +next.title=Page suivante +next_label=Suivant + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Page +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=sur {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} sur {{pagesCount}}) + +zoom_out.title=Zoom arrière +zoom_out_label=Zoom arrière +zoom_in.title=Zoom avant +zoom_in_label=Zoom avant +zoom.title=Zoom +presentation_mode.title=Basculer en mode présentation +presentation_mode_label=Mode présentation +open_file.title=Ouvrir le fichier +open_file_label=Ouvrir le fichier +print.title=Imprimer +print_label=Imprimer +download.title=Télécharger +download_label=Télécharger +save.title=Enregistrer +save_label=Enregistrer +bookmark.title=Affichage courant (copier ou ouvrir dans une nouvelle fenêtre) +bookmark_label=Affichage actuel + +bookmark1.title=Page courante (montrer l’adresse de la page courante) +bookmark1_label=Page courante + +# Secondary toolbar and context menu +tools.title=Outils +tools_label=Outils +first_page.title=Aller à la première page +first_page_label=Aller à la première page +last_page.title=Aller à la dernière page +last_page_label=Aller à la dernière page +page_rotate_cw.title=Rotation horaire +page_rotate_cw_label=Rotation horaire +page_rotate_ccw.title=Rotation antihoraire +page_rotate_ccw_label=Rotation antihoraire + +cursor_text_select_tool.title=Activer l’outil de sélection de texte +cursor_text_select_tool_label=Outil de sélection de texte +cursor_hand_tool.title=Activer l’outil main +cursor_hand_tool_label=Outil main + +scroll_page.title=Utiliser le défilement par page +scroll_page_label=Défilement par page +scroll_vertical.title=Utiliser le défilement vertical +scroll_vertical_label=Défilement vertical +scroll_horizontal.title=Utiliser le défilement horizontal +scroll_horizontal_label=Défilement horizontal +scroll_wrapped.title=Utiliser le défilement par bloc +scroll_wrapped_label=Défilement par bloc + +spread_none.title=Ne pas afficher les pages deux à deux +spread_none_label=Pas de double affichage +spread_odd.title=Afficher les pages par deux, impaires à gauche +spread_odd_label=Doubles pages, impaires à gauche +spread_even.title=Afficher les pages par deux, paires à gauche +spread_even_label=Doubles pages, paires à gauche + +# Document properties dialog box +document_properties.title=Propriétés du document… +document_properties_label=Propriétés du document… +document_properties_file_name=Nom du fichier : +document_properties_file_size=Taille du fichier : +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} Ko ({{size_b}} octets) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} Mo ({{size_b}} octets) +document_properties_title=Titre : +document_properties_author=Auteur : +document_properties_subject=Sujet : +document_properties_keywords=Mots-clés : +document_properties_creation_date=Date de création : +document_properties_modification_date=Modifié le : +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}} à {{time}} +document_properties_creator=Créé par : +document_properties_producer=Outil de conversion PDF : +document_properties_version=Version PDF : +document_properties_page_count=Nombre de pages : +document_properties_page_size=Taille de la page : +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=portrait +document_properties_page_size_orientation_landscape=paysage +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=lettre +document_properties_page_size_name_legal=document juridique +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Affichage rapide des pages web : +document_properties_linearized_yes=Oui +document_properties_linearized_no=Non +document_properties_close=Fermer + +print_progress_message=Préparation du document pour l’impression… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}} % +print_progress_close=Annuler + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Afficher/Masquer le panneau latéral +toggle_sidebar_notification2.title=Afficher/Masquer le panneau latéral (le document contient des signets/pièces jointes/calques) +toggle_sidebar_label=Afficher/Masquer le panneau latéral +document_outline.title=Afficher les signets du document (double-cliquer pour développer/réduire tous les éléments) +document_outline_label=Signets du document +attachments.title=Afficher les pièces jointes +attachments_label=Pièces jointes +layers.title=Afficher les calques (double-cliquer pour réinitialiser tous les calques à l’état par défaut) +layers_label=Calques +thumbs.title=Afficher les vignettes +thumbs_label=Vignettes +current_outline_item.title=Trouver l’élément de plan actuel +current_outline_item_label=Élément de plan actuel +findbar.title=Rechercher dans le document +findbar_label=Rechercher + +additional_layers=Calques additionnels +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Page {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Page {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Vignette de la page {{page}} + +# Find panel button title and messages +find_input.title=Rechercher +find_input.placeholder=Rechercher dans le document… +find_previous.title=Trouver l’occurrence précédente de l’expression +find_previous_label=Précédent +find_next.title=Trouver la prochaine occurrence de l’expression +find_next_label=Suivant +find_highlight=Tout surligner +find_match_case_label=Respecter la casse +find_match_diacritics_label=Respecter les accents et diacritiques +find_entire_word_label=Mots entiers +find_reached_top=Haut de la page atteint, poursuite depuis la fin +find_reached_bottom=Bas de la page atteint, poursuite au début +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]=Occurrence {{current}} sur {{total}} +find_match_count[two]=Occurrence {{current}} sur {{total}} +find_match_count[few]=Occurrence {{current}} sur {{total}} +find_match_count[many]=Occurrence {{current}} sur {{total}} +find_match_count[other]=Occurrence {{current}} sur {{total}} +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Plus de {{limit}} correspondances +find_match_count_limit[one]=Plus de {{limit}} correspondance +find_match_count_limit[two]=Plus de {{limit}} correspondances +find_match_count_limit[few]=Plus de {{limit}} correspondances +find_match_count_limit[many]=Plus de {{limit}} correspondances +find_match_count_limit[other]=Plus de {{limit}} correspondances +find_not_found=Expression non trouvée + +# Error panel labels +error_more_info=Plus d’informations +error_less_info=Moins d’informations +error_close=Fermer +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (identifiant de compilation : {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Message : {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Pile : {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fichier : {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Ligne : {{line}} + +# Predefined zoom values +page_scale_width=Pleine largeur +page_scale_fit=Page entière +page_scale_auto=Zoom automatique +page_scale_actual=Taille réelle +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}} % + +# Loading indicator messages +loading=Chargement… +loading_error=Une erreur s’est produite lors du chargement du fichier PDF. +invalid_file_error=Fichier PDF invalide ou corrompu. +missing_file_error=Fichier PDF manquant. +unexpected_response_error=Réponse inattendue du serveur. + +rendering_error=Une erreur s’est produite lors de l’affichage de la page. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}} à {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Annotation {{type}}] +password_label=Veuillez saisir le mot de passe pour ouvrir ce fichier PDF. +password_invalid=Mot de passe incorrect. Veuillez réessayer. +password_ok=OK +password_cancel=Annuler + +printing_not_supported=Attention : l’impression n’est pas totalement prise en charge par ce navigateur. +printing_not_ready=Attention : le PDF n’est pas entièrement chargé pour pouvoir l’imprimer. +web_fonts_disabled=Les polices web sont désactivées : impossible d’utiliser les polices intégrées au PDF. + +# Editor +editor_free_text2.title=Texte +editor_free_text2_label=Texte +editor_ink2.title=Dessiner +editor_ink2_label=Dessiner + +free_text2_default_content=Commencer à écrire… + +# Editor Parameters +editor_free_text_color=Couleur +editor_free_text_size=Taille +editor_ink_color=Couleur +editor_ink_thickness=Épaisseur +editor_ink_opacity=Opacité + +# Editor aria +editor_free_text2_aria_label=Éditeur de texte +editor_ink2_aria_label=Éditeur de dessin +editor_ink_canvas_aria_label=Image créée par l’utilisateur·trice diff --git a/www/include/vendor/pdfjs/web/locale/fur/viewer.properties b/www/include/vendor/pdfjs/web/locale/fur/viewer.properties new file mode 100644 index 0000000..379485b --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/fur/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Pagjine precedente +previous_label=Indaûr +next.title=Prossime pagjine +next_label=Indevant + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Pagjine +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=di {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} di {{pagesCount}}) + +zoom_out.title=Impiçulìs +zoom_out_label=Impiçulìs +zoom_in.title=Ingrandìs +zoom_in_label=Ingrandìs +zoom.title=Ingrandiment +presentation_mode.title=Passe ae modalitât presentazion +presentation_mode_label=Modalitât presentazion +open_file.title=Vierç un file +open_file_label=Vierç +print.title=Stampe +print_label=Stampe +download.title=Discjame +download_label=Discjame +save.title=Salve +save_label=Salve +bookmark.title=Viodude atuâl (copie o vierç intun gnûf barcon) +bookmark_label=Viodude atuâl + +bookmark1.title=Pagjine corinte (mostre URL de pagjine atuâl) +bookmark1_label=Pagjine corinte + +# Secondary toolbar and context menu +tools.title=Struments +tools_label=Struments +first_page.title=Va ae prime pagjine +first_page_label=Va ae prime pagjine +last_page.title=Va ae ultime pagjine +last_page_label=Va ae ultime pagjine +page_rotate_cw.title=Zire in sens orari +page_rotate_cw_label=Zire in sens orari +page_rotate_ccw.title=Zire in sens antiorari +page_rotate_ccw_label=Zire in sens antiorari + +cursor_text_select_tool.title=Ative il strument di selezion dal test +cursor_text_select_tool_label=Strument di selezion dal test +cursor_hand_tool.title=Ative il strument manute +cursor_hand_tool_label=Strument manute + +scroll_page.title=Dopre il scoriment des pagjinis +scroll_page_label=Scoriment pagjinis +scroll_vertical.title=Dopre scoriment verticâl +scroll_vertical_label=Scoriment verticâl +scroll_horizontal.title=Dopre scoriment orizontâl +scroll_horizontal_label=Scoriment orizontâl +scroll_wrapped.title=Dopre scoriment par blocs +scroll_wrapped_label=Scoriment par blocs + +spread_none.title=No sta meti dongje pagjinis in cubie +spread_none_label=No cubiis di pagjinis +spread_odd.title=Met dongje cubiis di pagjinis scomençant des pagjinis dispar +spread_odd_label=Cubiis di pagjinis, dispar a çampe +spread_even.title=Met dongje cubiis di pagjinis scomençant des pagjinis pâr +spread_even_label=Cubiis di pagjinis, pâr a çampe + +# Document properties dialog box +document_properties.title=Proprietâts dal document… +document_properties_label=Proprietâts dal document… +document_properties_file_name=Non dal file: +document_properties_file_size=Dimension dal file: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Titul: +document_properties_author=Autôr: +document_properties_subject=Ogjet: +document_properties_keywords=Peraulis clâf: +document_properties_creation_date=Date di creazion: +document_properties_modification_date=Date di modifiche: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Creatôr +document_properties_producer=Gjeneradôr PDF: +document_properties_version=Version PDF: +document_properties_page_count=Numar di pagjinis: +document_properties_page_size=Dimension de pagjine: +document_properties_page_size_unit_inches=oncis +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=verticâl +document_properties_page_size_orientation_landscape=orizontâl +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letare +document_properties_page_size_name_legal=Legâl +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Visualizazion web svelte: +document_properties_linearized_yes=Sì +document_properties_linearized_no=No +document_properties_close=Siere + +print_progress_message=Daûr a prontâ il document pe stampe… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Anule + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Ative/Disative sbare laterâl +toggle_sidebar_notification2.title=Ative/Disative sbare laterâl (il document al conten struture/zontis/strâts) +toggle_sidebar_label=Ative/Disative sbare laterâl +document_outline.title=Mostre la struture dal document (dopli clic par slargjâ/strenzi ducj i elements) +document_outline_label=Struture dal document +attachments.title=Mostre lis zontis +attachments_label=Zontis +layers.title=Mostre i strâts (dopli clic par ristabilî ducj i strâts al stât predefinît) +layers_label=Strâts +thumbs.title=Mostre miniaturis +thumbs_label=Miniaturis +current_outline_item.title=Cjate l'element de struture atuâl +current_outline_item_label=Element de struture atuâl +findbar.title=Cjate tal document +findbar_label=Cjate + +additional_layers=Strâts adizionâi +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Pagjine {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Pagjine {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniature de pagjine {{page}} + +# Find panel button title and messages +find_input.title=Cjate +find_input.placeholder=Cjate tal document… +find_previous.title=Cjate il câs precedent dal test +find_previous_label=Precedent +find_next.title=Cjate il câs sucessîf dal test +find_next_label=Sucessîf +find_highlight=Evidenzie dut +find_match_case_label=Fâs distinzion tra maiusculis e minusculis +find_match_diacritics_label=Corispondence diacritiche +find_entire_word_label=Peraulis interiis +find_reached_top=Si è rivâts al inizi dal document e si à continuât de fin +find_reached_bottom=Si è rivât ae fin dal document e si à continuât dal inizi +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} di {{total}} corispondence +find_match_count[two]={{current}} di {{total}} corispondencis +find_match_count[few]={{current}} di {{total}} corispondencis +find_match_count[many]={{current}} di {{total}} corispondencis +find_match_count[other]={{current}} di {{total}} corispondencis +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Plui di {{limit}} corispondencis +find_match_count_limit[one]=Plui di {{limit}} corispondence +find_match_count_limit[two]=Plui di {{limit}} corispondencis +find_match_count_limit[few]=Plui di {{limit}} corispondencis +find_match_count_limit[many]=Plui di {{limit}} corispondencis +find_match_count_limit[other]=Plui di {{limit}} corispondencis +find_not_found=Test no cjatât + +# Error panel labels +error_more_info=Altris informazions +error_less_info=Mancul informazions +error_close=Siere +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (compilazion: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Messaç: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=File: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Rie: {{line}} + +# Predefined zoom values +page_scale_width=Largjece de pagjine +page_scale_fit=Pagjine interie +page_scale_auto=Ingrandiment automatic +page_scale_actual=Dimension reâl +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Daûr a cjamâ… +loading_error=Al è vignût fûr un erôr intant che si cjariave il PDF. +invalid_file_error=File PDF no valit o ruvinât. +missing_file_error=Al mancje il file PDF. +unexpected_response_error=Rispueste dal servidôr inspietade. + +rendering_error=Al è vignût fûr un erôr tal realizâ la visualizazion de pagjine. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anotazion {{type}}] +password_label=Inserìs la password par vierzi chest file PDF. +password_invalid=Password no valide. Par plasê torne prove. +password_ok=Va ben +password_cancel=Anule + +printing_not_supported=Atenzion: la stampe no je supuartade ad implen di chest navigadôr. +printing_not_ready=Atenzion: il PDF nol è stât cjamât dal dut pe stampe. +web_fonts_disabled=I caratars dal Web a son disativâts: Impussibil doprâ i caratars PDF incorporâts. + +# Editor +editor_free_text2.title=Test +editor_free_text2_label=Test +editor_ink2.title=Dissen +editor_ink2_label=Dissen + +free_text2_default_content=Scomence a scrivi… + +# Editor Parameters +editor_free_text_color=Colôr +editor_free_text_size=Dimension +editor_ink_color=Colôr +editor_ink_thickness=Spessôr +editor_ink_opacity=Opacitât + +# Editor aria +editor_free_text2_aria_label=Editôr di test +editor_ink2_aria_label=Editôr dissens +editor_ink_canvas_aria_label=Imagjin creade dal utent diff --git a/www/include/vendor/pdfjs/web/locale/fy-NL/viewer.properties b/www/include/vendor/pdfjs/web/locale/fy-NL/viewer.properties new file mode 100644 index 0000000..eab939a --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/fy-NL/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Foarige side +previous_label=Foarige +next.title=Folgjende side +next_label=Folgjende + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Side +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=fan {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} fan {{pagesCount}}) + +zoom_out.title=Utzoome +zoom_out_label=Utzoome +zoom_in.title=Ynzoome +zoom_in_label=Ynzoome +zoom.title=Zoome +presentation_mode.title=Wikselje nei presintaasjemodus +presentation_mode_label=Presintaasjemodus +open_file.title=Bestân iepenje +open_file_label=Iepenje +print.title=Ofdrukke +print_label=Ofdrukke +download.title=Downloade +download_label=Downloade +save.title=Bewarje +save_label=Bewarje +bookmark.title=Aktuele finster (kopiearje of iepenje yn nij finster) +bookmark_label=Aktuele finster + +bookmark1.title=Aktuele side (URL fan aktuele side besjen) +bookmark1_label=Aktuele side + +# Secondary toolbar and context menu +tools.title=Ark +tools_label=Ark +first_page.title=Gean nei earste side +first_page_label=Gean nei earste side +last_page.title=Gean nei lêste side +last_page_label=Gean nei lêste side +page_rotate_cw.title=Rjochtsom draaie +page_rotate_cw_label=Rjochtsom draaie +page_rotate_ccw.title=Linksom draaie +page_rotate_ccw_label=Linksom draaie + +cursor_text_select_tool.title=Tekstseleksjehelpmiddel ynskeakelje +cursor_text_select_tool_label=Tekstseleksjehelpmiddel +cursor_hand_tool.title=Hânhelpmiddel ynskeakelje +cursor_hand_tool_label=Hânhelpmiddel + +scroll_page.title=Sideskowen brûke +scroll_page_label=Sideskowen +scroll_vertical.title=Fertikaal skowe brûke +scroll_vertical_label=Fertikaal skowe +scroll_horizontal.title=Horizontaal skowe brûke +scroll_horizontal_label=Horizontaal skowe +scroll_wrapped.title=Skowe mei oersjoch brûke +scroll_wrapped_label=Skowe mei oersjoch + +spread_none.title=Sidesprieding net gearfetsje +spread_none_label=Gjin sprieding +spread_odd.title=Sidesprieding gearfetsje te starten mei ûneven nûmers +spread_odd_label=Uneven sprieding +spread_even.title=Sidesprieding gearfetsje te starten mei even nûmers +spread_even_label=Even sprieding + +# Document properties dialog box +document_properties.title=Dokuminteigenskippen… +document_properties_label=Dokuminteigenskippen… +document_properties_file_name=Bestânsnamme: +document_properties_file_size=Bestânsgrutte: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Titel: +document_properties_author=Auteur: +document_properties_subject=Underwerp: +document_properties_keywords=Kaaiwurden: +document_properties_creation_date=Oanmaakdatum: +document_properties_modification_date=Bewurkingsdatum: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Makker: +document_properties_producer=PDF-makker: +document_properties_version=PDF-ferzje: +document_properties_page_count=Siden: +document_properties_page_size=Sideformaat: +document_properties_page_size_unit_inches=yn +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=steand +document_properties_page_size_orientation_landscape=lizzend +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Juridysk +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Flugge webwerjefte: +document_properties_linearized_yes=Ja +document_properties_linearized_no=Nee +document_properties_close=Slute + +print_progress_message=Dokumint tariede oar ôfdrukken… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Annulearje + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Sidebalke yn-/útskeakelje +toggle_sidebar_notification2.title=Sidebalke yn-/útskeakelje (dokumint befettet oersjoch/bylagen/lagen) +toggle_sidebar_label=Sidebalke yn-/útskeakelje +document_outline.title=Dokumintoersjoch toane (dûbelklik om alle items út/yn te klappen) +document_outline_label=Dokumintoersjoch +attachments.title=Bylagen toane +attachments_label=Bylagen +layers.title=Lagen toane (dûbelklik om alle lagen nei de standertsteat werom te setten) +layers_label=Lagen +thumbs.title=Foarbylden toane +thumbs_label=Foarbylden +current_outline_item.title=Aktueel item yn ynhâldsopjefte sykje +current_outline_item_label=Aktueel item yn ynhâldsopjefte +findbar.title=Sykje yn dokumint +findbar_label=Sykje + +additional_layers=Oanfoljende lagen +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Side {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Side {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Foarbyld fan side {{page}} + +# Find panel button title and messages +find_input.title=Sykje +find_input.placeholder=Sykje yn dokumint… +find_previous.title=It foarige foarkommen fan de tekst sykje +find_previous_label=Foarige +find_next.title=It folgjende foarkommen fan de tekst sykje +find_next_label=Folgjende +find_highlight=Alles markearje +find_match_case_label=Haadlettergefoelich +find_match_diacritics_label=Diakrityske tekens brûke +find_entire_word_label=Hiele wurden +find_reached_top=Boppekant fan dokumint berikt, trochgien fan ûnder ôf +find_reached_bottom=Ein fan dokumint berikt, trochgien fan boppe ôf +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} fan {{total}} oerienkomst +find_match_count[two]={{current}} fan {{total}} oerienkomsten +find_match_count[few]={{current}} fan {{total}} oerienkomsten +find_match_count[many]={{current}} fan {{total}} oerienkomsten +find_match_count[other]={{current}} fan {{total}} oerienkomsten +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Mear as {{limit}} oerienkomsten +find_match_count_limit[one]=Mear as {{limit}} oerienkomst +find_match_count_limit[two]=Mear as {{limit}} oerienkomsten +find_match_count_limit[few]=Mear as {{limit}} oerienkomsten +find_match_count_limit[many]=Mear as {{limit}} oerienkomsten +find_match_count_limit[other]=Mear as {{limit}} oerienkomsten +find_not_found=Tekst net fûn + +# Error panel labels +error_more_info=Mear ynformaasje +error_less_info=Minder ynformaasje +error_close=Slute +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js f{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Berjocht: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Bestân: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Rigel: {{line}} + +# Predefined zoom values +page_scale_width=Sidebreedte +page_scale_fit=Hiele side +page_scale_auto=Automatysk zoome +page_scale_actual=Werklike grutte +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Lade… +loading_error=Der is in flater bard by it laden fan de PDF. +invalid_file_error=Ynfalide of korruptearre PDF-bestân. +missing_file_error=PDF-bestân ûntbrekt. +unexpected_response_error=Unferwacht serverantwurd. + +rendering_error=Der is in flater bard by it renderjen fan de side. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}}-annotaasje] +password_label=Jou it wachtwurd om dit PDF-bestân te iepenjen. +password_invalid=Ferkeard wachtwurd. Probearje opnij. +password_ok=OK +password_cancel=Annulearje + +printing_not_supported=Warning: Printen is net folslein stipe troch dizze browser. +printing_not_ready=Warning: PDF is net folslein laden om ôf te drukken. +web_fonts_disabled=Weblettertypen binne útskeakele: gebrûk fan ynsluten PDF-lettertypen is net mooglik. + +# Editor +editor_free_text2.title=Tekst +editor_free_text2_label=Tekst +editor_ink2.title=Tekenje +editor_ink2_label=Tekenje + +free_text2_default_content=Begjin mei typen… + +# Editor Parameters +editor_free_text_color=Kleur +editor_free_text_size=Grutte +editor_ink_color=Kleur +editor_ink_thickness=Tsjokte +editor_ink_opacity=Transparânsje + +# Editor aria +editor_free_text2_aria_label=Tekstbewurker +editor_ink2_aria_label=Tekeningbewurker +editor_ink_canvas_aria_label=Troch brûker makke ôfbylding diff --git a/www/include/vendor/pdfjs/web/locale/ga-IE/viewer.properties b/www/include/vendor/pdfjs/web/locale/ga-IE/viewer.properties new file mode 100644 index 0000000..31833e7 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/ga-IE/viewer.properties @@ -0,0 +1,202 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=An Leathanach Roimhe Seo +previous_label=Roimhe Seo +next.title=An Chéad Leathanach Eile +next_label=Ar Aghaidh + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Leathanach +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=as {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} as {{pagesCount}}) + +zoom_out.title=Súmáil Amach +zoom_out_label=Súmáil Amach +zoom_in.title=Súmáil Isteach +zoom_in_label=Súmáil Isteach +zoom.title=Súmáil +presentation_mode.title=Úsáid an Mód Láithreoireachta +presentation_mode_label=Mód Láithreoireachta +open_file.title=Oscail Comhad +open_file_label=Oscail +print.title=Priontáil +print_label=Priontáil +download.title=Íoslódáil +download_label=Íoslódáil +bookmark.title=An t-amharc reatha (cóipeáil nó oscail i bhfuinneog nua) +bookmark_label=An tAmharc Reatha + +# Secondary toolbar and context menu +tools.title=Uirlisí +tools_label=Uirlisí +first_page.title=Go dtí an chéad leathanach +first_page_label=Go dtí an chéad leathanach +last_page.title=Go dtí an leathanach deiridh +last_page_label=Go dtí an leathanach deiridh +page_rotate_cw.title=Rothlaigh ar deiseal +page_rotate_cw_label=Rothlaigh ar deiseal +page_rotate_ccw.title=Rothlaigh ar tuathal +page_rotate_ccw_label=Rothlaigh ar tuathal + +cursor_text_select_tool.title=Cumasaigh an Uirlis Roghnaithe Téacs +cursor_text_select_tool_label=Uirlis Roghnaithe Téacs +cursor_hand_tool.title=Cumasaigh an Uirlis Láimhe +cursor_hand_tool_label=Uirlis Láimhe + + + +# Document properties dialog box +document_properties.title=Airíonna na Cáipéise… +document_properties_label=Airíonna na Cáipéise… +document_properties_file_name=Ainm an chomhaid: +document_properties_file_size=Méid an chomhaid: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} kB ({{size_b}} beart) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} beart) +document_properties_title=Teideal: +document_properties_author=Údar: +document_properties_subject=Ábhar: +document_properties_keywords=Eochairfhocail: +document_properties_creation_date=Dáta Cruthaithe: +document_properties_modification_date=Dáta Athraithe: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Cruthaitheoir: +document_properties_producer=Cruthaitheoir an PDF: +document_properties_version=Leagan PDF: +document_properties_page_count=Líon Leathanach: +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_close=Dún + +print_progress_message=Cáipéis á hullmhú le priontáil… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cealaigh + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Scoránaigh an Barra Taoibh +toggle_sidebar_label=Scoránaigh an Barra Taoibh +document_outline.title=Taispeáin Imlíne na Cáipéise (déchliceáil chun chuile rud a leathnú nó a laghdú) +document_outline_label=Creatlach na Cáipéise +attachments.title=Taispeáin Iatáin +attachments_label=Iatáin +thumbs.title=Taispeáin Mionsamhlacha +thumbs_label=Mionsamhlacha +findbar.title=Aimsigh sa Cháipéis +findbar_label=Aimsigh + +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Leathanach {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Mionsamhail Leathanaigh {{page}} + +# Find panel button title and messages +find_input.title=Aimsigh +find_input.placeholder=Aimsigh sa cháipéis… +find_previous.title=Aimsigh an sampla roimhe seo den nath seo +find_previous_label=Roimhe seo +find_next.title=Aimsigh an chéad sampla eile den nath sin +find_next_label=Ar aghaidh +find_highlight=Aibhsigh uile +find_match_case_label=Cásíogair +find_entire_word_label=Focail iomlána +find_reached_top=Ag barr na cáipéise, ag leanúint ón mbun +find_reached_bottom=Ag bun na cáipéise, ag leanúint ón mbarr +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_not_found=Frása gan aimsiú + +# Error panel labels +error_more_info=Tuilleadh Eolais +error_less_info=Níos Lú Eolais +error_close=Dún +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Teachtaireacht: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Cruach: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Comhad: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Líne: {{line}} +rendering_error=Tharla earráid agus an leathanach á leagan amach. + +# Predefined zoom values +page_scale_width=Leithead Leathanaigh +page_scale_fit=Laghdaigh go dtí an Leathanach +page_scale_auto=Súmáil Uathoibríoch +page_scale_actual=Fíormhéid +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading_error=Tharla earráid agus an cháipéis PDF á lódáil. +invalid_file_error=Comhad neamhbhailí nó truaillithe PDF. +missing_file_error=Comhad PDF ar iarraidh. +unexpected_response_error=Freagra ón bhfreastalaí nach rabhthas ag súil leis. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anótáil {{type}}] +password_label=Cuir an focal faire isteach chun an comhad PDF seo a oscailt. +password_invalid=Focal faire mícheart. Déan iarracht eile. +password_ok=OK +password_cancel=Cealaigh + +printing_not_supported=Rabhadh: Ní thacaíonn an brabhsálaí le priontáil go hiomlán. +printing_not_ready=Rabhadh: Ní féidir an PDF a phriontáil go dtí go mbeidh an cháipéis iomlán lódáilte. +web_fonts_disabled=Tá clófhoirne Gréasáin díchumasaithe: ní féidir clófhoirne leabaithe PDF a úsáid. + diff --git a/www/include/vendor/pdfjs/web/locale/gd/viewer.properties b/www/include/vendor/pdfjs/web/locale/gd/viewer.properties new file mode 100644 index 0000000..c510c6b --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/gd/viewer.properties @@ -0,0 +1,249 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=An duilleag roimhe +previous_label=Air ais +next.title=An ath-dhuilleag +next_label=Air adhart + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Duilleag +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=à {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} à {{pagesCount}}) + +zoom_out.title=Sùm a-mach +zoom_out_label=Sùm a-mach +zoom_in.title=Sùm a-steach +zoom_in_label=Sùm a-steach +zoom.title=Sùm +presentation_mode.title=Gearr leum dhan mhodh taisbeanaidh +presentation_mode_label=Am modh taisbeanaidh +open_file.title=Fosgail faidhle +open_file_label=Fosgail +print.title=Clò-bhuail +print_label=Clò-bhuail +download.title=Luchdaich a-nuas +download_label=Luchdaich a-nuas +bookmark.title=An sealladh làithreach (dèan lethbhreac no fosgail e ann an uinneag ùr) +bookmark_label=An sealladh làithreach + +# Secondary toolbar and context menu +tools.title=Innealan +tools_label=Innealan +first_page.title=Rach gun chiad duilleag +first_page_label=Rach gun chiad duilleag +last_page.title=Rach gun duilleag mu dheireadh +last_page_label=Rach gun duilleag mu dheireadh +page_rotate_cw.title=Cuairtich gu deiseil +page_rotate_cw_label=Cuairtich gu deiseil +page_rotate_ccw.title=Cuairtich gu tuathail +page_rotate_ccw_label=Cuairtich gu tuathail + +cursor_text_select_tool.title=Cuir an comas inneal taghadh an teacsa +cursor_text_select_tool_label=Inneal taghadh an teacsa +cursor_hand_tool.title=Cuir inneal na làimhe an comas +cursor_hand_tool_label=Inneal na làimhe + +scroll_vertical.title=Cleachd sgroladh inghearach +scroll_vertical_label=Sgroladh inghearach +scroll_horizontal.title=Cleachd sgroladh còmhnard +scroll_horizontal_label=Sgroladh còmhnard +scroll_wrapped.title=Cleachd sgroladh paisgte +scroll_wrapped_label=Sgroladh paisgte + +spread_none.title=Na cuir còmhla sgoileadh dhuilleagan +spread_none_label=Gun sgaoileadh dhuilleagan +spread_odd.title=Cuir còmhla duilleagan sgaoilte a thòisicheas le duilleagan aig a bheil àireamh chorr +spread_odd_label=Sgaoileadh dhuilleagan corra +spread_even.title=Cuir còmhla duilleagan sgaoilte a thòisicheas le duilleagan aig a bheil àireamh chothrom +spread_even_label=Sgaoileadh dhuilleagan cothrom + +# Document properties dialog box +document_properties.title=Roghainnean na sgrìobhainne… +document_properties_label=Roghainnean na sgrìobhainne… +document_properties_file_name=Ainm an fhaidhle: +document_properties_file_size=Meud an fhaidhle: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Tiotal: +document_properties_author=Ùghdar: +document_properties_subject=Cuspair: +document_properties_keywords=Faclan-luirg: +document_properties_creation_date=Latha a chruthachaidh: +document_properties_modification_date=Latha atharrachaidh: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Cruthadair: +document_properties_producer=Saothraiche a' PDF: +document_properties_version=Tionndadh a' PDF: +document_properties_page_count=Àireamh de dhuilleagan: +document_properties_page_size=Meud na duilleige: +document_properties_page_size_unit_inches=ann an +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=portraid +document_properties_page_size_orientation_landscape=dreach-tìre +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Litir +document_properties_page_size_name_legal=Laghail +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Grad shealladh-lìn: +document_properties_linearized_yes=Tha +document_properties_linearized_no=Chan eil +document_properties_close=Dùin + +print_progress_message=Ag ullachadh na sgrìobhainn airson clò-bhualadh… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Sguir dheth + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Toglaich am bàr-taoibh +toggle_sidebar_notification2.title=Toglaich am bàr-taoibh (tha oir-loidhne/ceanglachain/breathan aig an sgrìobhainn) +toggle_sidebar_label=Toglaich am bàr-taoibh +document_outline.title=Seall oir-loidhne na sgrìobhainn (dèan briogadh dùbailte airson a h-uile nì a leudachadh/a cho-theannadh) +document_outline_label=Oir-loidhne na sgrìobhainne +attachments.title=Seall na ceanglachain +attachments_label=Ceanglachain +layers.title=Seall na breathan (dèan briogadh dùbailte airson a h-uile breath ath-shuidheachadh dhan staid bhunaiteach) +layers_label=Breathan +thumbs.title=Seall na dealbhagan +thumbs_label=Dealbhagan +current_outline_item.title=Lorg nì làithreach na h-oir-loidhne +current_outline_item_label=Nì làithreach na h-oir-loidhne +findbar.title=Lorg san sgrìobhainn +findbar_label=Lorg + +additional_layers=Barrachd breathan +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Duilleag {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Duilleag a {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Dealbhag duilleag a {{page}} + +# Find panel button title and messages +find_input.title=Lorg +find_input.placeholder=Lorg san sgrìobhainn... +find_previous.title=Lorg làthair roimhe na h-abairt seo +find_previous_label=Air ais +find_next.title=Lorg ath-làthair na h-abairt seo +find_next_label=Air adhart +find_highlight=Soillsich a h-uile +find_match_case_label=Aire do litrichean mòra is beaga +find_entire_word_label=Faclan-slàna +find_reached_top=Ràinig sinn barr na duilleige, a' leantainn air adhart o bhonn na duilleige +find_reached_bottom=Ràinig sinn bonn na duilleige, a' leantainn air adhart o bharr na duilleige +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} à {{total}} mhaids +find_match_count[two]={{current}} à {{total}} mhaids +find_match_count[few]={{current}} à {{total}} maidsichean +find_match_count[many]={{current}} à {{total}} maids +find_match_count[other]={{current}} à {{total}} maids +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Barrachd air {{limit}} maids +find_match_count_limit[one]=Barrachd air {{limit}} mhaids +find_match_count_limit[two]=Barrachd air {{limit}} mhaids +find_match_count_limit[few]=Barrachd air {{limit}} maidsichean +find_match_count_limit[many]=Barrachd air {{limit}} maids +find_match_count_limit[other]=Barrachd air {{limit}} maids +find_not_found=Cha deach an abairt a lorg + +# Error panel labels +error_more_info=Barrachd fiosrachaidh +error_less_info=Nas lugha de dh'fhiosrachadh +error_close=Dùin +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Teachdaireachd: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stac: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Faidhle: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Loidhne: {{line}} +rendering_error=Thachair mearachd rè reandaradh na duilleige. + +# Predefined zoom values +page_scale_width=Leud na duilleige +page_scale_fit=Freagair ri meud na duilleige +page_scale_auto=Sùm fèin-obrachail +page_scale_actual=Am fìor-mheud +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=’Ga luchdadh… +loading_error=Thachair mearachd rè luchdadh a' PDF. +invalid_file_error=Faidhle PDF a tha mì-dhligheach no coirbte. +missing_file_error=Faidhle PDF a tha a dhìth. +unexpected_response_error=Freagairt on fhrithealaiche ris nach robh dùil. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Nòtachadh {{type}}] +password_label=Cuir a-steach am facal-faire gus am faidhle PDF seo fhosgladh. +password_invalid=Tha am facal-faire cearr. Nach fheuch thu ris a-rithist? +password_ok=Ceart ma-thà +password_cancel=Sguir dheth + +printing_not_supported=Rabhadh: Chan eil am brabhsair seo a' cur làn-taic ri clò-bhualadh. +printing_not_ready=Rabhadh: Cha deach am PDF a luchdadh gu tur airson clò-bhualadh. +web_fonts_disabled=Tha cruthan-clò lìn à comas: Chan urrainn dhuinn cruthan-clò PDF leabaichte a chleachdadh. + diff --git a/www/include/vendor/pdfjs/web/locale/gl/viewer.properties b/www/include/vendor/pdfjs/web/locale/gl/viewer.properties new file mode 100644 index 0000000..0aa2ef1 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/gl/viewer.properties @@ -0,0 +1,249 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Páxina anterior +previous_label=Anterior +next.title=Seguinte páxina +next_label=Seguinte + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Páxina +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=de {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} de {{pagesCount}}) + +zoom_out.title=Reducir +zoom_out_label=Reducir +zoom_in.title=Ampliar +zoom_in_label=Ampliar +zoom.title=Zoom +presentation_mode.title=Cambiar ao modo presentación +presentation_mode_label=Modo presentación +open_file.title=Abrir ficheiro +open_file_label=Abrir +print.title=Imprimir +print_label=Imprimir +download.title=Descargar +download_label=Descargar +bookmark.title=Vista actual (copiar ou abrir nunha nova xanela) +bookmark_label=Vista actual + +# Secondary toolbar and context menu +tools.title=Ferramentas +tools_label=Ferramentas +first_page.title=Ir á primeira páxina +first_page_label=Ir á primeira páxina +last_page.title=Ir á última páxina +last_page_label=Ir á última páxina +page_rotate_cw.title=Rotar no sentido das agullas do reloxo +page_rotate_cw_label=Rotar no sentido das agullas do reloxo +page_rotate_ccw.title=Rotar no sentido contrario ás agullas do reloxo +page_rotate_ccw_label=Rotar no sentido contrario ás agullas do reloxo + +cursor_text_select_tool.title=Activar a ferramenta de selección de texto +cursor_text_select_tool_label=Ferramenta de selección de texto +cursor_hand_tool.title=Activar a ferramenta man +cursor_hand_tool_label=Ferramenta man + +scroll_vertical.title=Usar o desprazamento vertical +scroll_vertical_label=Desprazamento vertical +scroll_horizontal.title=Usar o desprazamento horizontal +scroll_horizontal_label=Desprazamento horizontal +scroll_wrapped.title=Usar desprazamento en bloque +scroll_wrapped_label=Desprazamento en bloque + +spread_none.title=Non agrupar páxinas +spread_none_label=Ningún agrupamento +spread_odd.title=Crea grupo de páxinas que comezan con números de páxina impares +spread_odd_label=Agrupamento impar +spread_even.title=Crea grupo de páxinas que comezan con números de páxina pares +spread_even_label=Agrupamento par + +# Document properties dialog box +document_properties.title=Propiedades do documento… +document_properties_label=Propiedades do documento… +document_properties_file_name=Nome do ficheiro: +document_properties_file_size=Tamaño do ficheiro: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Título: +document_properties_author=Autor: +document_properties_subject=Asunto: +document_properties_keywords=Palabras clave: +document_properties_creation_date=Data de creación: +document_properties_modification_date=Data de modificación: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Creado por: +document_properties_producer=Xenerador do PDF: +document_properties_version=Versión de PDF: +document_properties_page_count=Número de páxinas: +document_properties_page_size=Tamaño da páxina: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=Vertical +document_properties_page_size_orientation_landscape=Horizontal +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Carta +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Visualización rápida das páxinas web: +document_properties_linearized_yes=Si +document_properties_linearized_no=Non +document_properties_close=Pechar + +print_progress_message=Preparando documento para imprimir… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cancelar + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Amosar/agochar a barra lateral +toggle_sidebar_notification2.title=Alternar barra lateral (o documento contén esquema/anexos/capas) +toggle_sidebar_label=Amosar/agochar a barra lateral +document_outline.title=Amosar o esquema do documento (prema dúas veces para expandir/contraer todos os elementos) +document_outline_label=Esquema do documento +attachments.title=Amosar anexos +attachments_label=Anexos +layers.title=Mostrar capas (prema dúas veces para restaurar todas as capas o estado predeterminado) +layers_label=Capas +thumbs.title=Amosar miniaturas +thumbs_label=Miniaturas +current_outline_item.title=Atopar o elemento delimitado actualmente +current_outline_item_label=Elemento delimitado actualmente +findbar.title=Atopar no documento +findbar_label=Atopar + +additional_layers=Capas adicionais +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Páxina {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Páxina {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura da páxina {{page}} + +# Find panel button title and messages +find_input.title=Atopar +find_input.placeholder=Atopar no documento… +find_previous.title=Atopar a anterior aparición da frase +find_previous_label=Anterior +find_next.title=Atopar a seguinte aparición da frase +find_next_label=Seguinte +find_highlight=Realzar todo +find_match_case_label=Diferenciar maiúsculas de minúsculas +find_entire_word_label=Palabras completas +find_reached_top=Chegouse ao inicio do documento, continuar desde o final +find_reached_bottom=Chegouse ao final do documento, continuar desde o inicio +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} de {{total}} coincidencia +find_match_count[two]={{current}} de {{total}} coincidencias +find_match_count[few]={{current}} de {{total}} coincidencias +find_match_count[many]={{current}} de {{total}} coincidencias +find_match_count[other]={{current}} de {{total}} coincidencias +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Máis de {{limit}} coincidencias +find_match_count_limit[one]=Máis de {{limit}} coincidencia +find_match_count_limit[two]=Máis de {{limit}} coincidencias +find_match_count_limit[few]=Máis de {{limit}} coincidencias +find_match_count_limit[many]=Máis de {{limit}} coincidencias +find_match_count_limit[other]=Máis de {{limit}} coincidencias +find_not_found=Non se atopou a frase + +# Error panel labels +error_more_info=Máis información +error_less_info=Menos información +error_close=Pechar +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (Identificador da compilación: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Mensaxe: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Pila: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Ficheiro: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Liña: {{line}} +rendering_error=Produciuse un erro ao representar a páxina. + +# Predefined zoom values +page_scale_width=Largura da páxina +page_scale_fit=Axuste de páxina +page_scale_auto=Zoom automático +page_scale_actual=Tamaño actual +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=A cargar… +loading_error=Produciuse un erro ao cargar o PDF. +invalid_file_error=Ficheiro PDF danado ou non válido. +missing_file_error=Falta o ficheiro PDF. +unexpected_response_error=Resposta inesperada do servidor. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anotación {{type}}] +password_label=Escriba o contrasinal para abrir este ficheiro PDF. +password_invalid=Contrasinal incorrecto. Tente de novo. +password_ok=Aceptar +password_cancel=Cancelar + +printing_not_supported=Aviso: A impresión non é compatíbel de todo con este navegador. +printing_not_ready=Aviso: O PDF non se cargou completamente para imprimirse. +web_fonts_disabled=Desactiváronse as fontes web: foi imposíbel usar as fontes incrustadas no PDF. + diff --git a/www/include/vendor/pdfjs/web/locale/gn/viewer.properties b/www/include/vendor/pdfjs/web/locale/gn/viewer.properties new file mode 100644 index 0000000..b5589c3 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/gn/viewer.properties @@ -0,0 +1,279 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Kuatiarogue mboyvegua +previous_label=Mboyvegua +next.title=Kuatiarogue upeigua +next_label=Upeigua + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Kuatiarogue +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}} gui +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} of {{pagesCount}}) + +zoom_out.title=Momichĩ +zoom_out_label=Momichĩ +zoom_in.title=Mbotuicha +zoom_in_label=Mbotuicha +zoom.title=Tuichakue +presentation_mode.title=Jehechauka reko moambue +presentation_mode_label=Jehechauka reko +open_file.title=Marandurendápe jeike +open_file_label=Jeike +print.title=Monguatia +print_label=Monguatia +download.title=Mboguejy +download_label=Mboguejy +save.title=Ñongatu +save_label=Ñongatu +bookmark.title=Ag̃agua jehecha (mbohasarã térã eike peteĩ ovetã pyahúpe) +bookmark_label=Ag̃agua jehecha + +bookmark1.title=Kuatiarogue ag̃agua (Ehecha URL kuatiarogue ag̃agua) +bookmark1_label=Kuatiarogue Ag̃agua + +# Secondary toolbar and context menu +tools.title=Tembipuru +tools_label=Tembipuru +first_page.title=Kuatiarogue ñepyrũme jeho +first_page_label=Kuatiarogue ñepyrũme jeho +last_page.title=Kuatiarogue pahápe jeho +last_page_label=Kuatiarogue pahápe jeho +page_rotate_cw.title=Aravóicha mbojere +page_rotate_cw_label=Aravóicha mbojere +page_rotate_ccw.title=Aravo rapykue gotyo mbojere +page_rotate_ccw_label=Aravo rapykue gotyo mbojere + +cursor_text_select_tool.title=Emyandy moñe’ẽrã jeporavo rembipuru +cursor_text_select_tool_label=Moñe’ẽrã jeporavo rembipuru +cursor_hand_tool.title=Tembipuru po pegua myandy +cursor_hand_tool_label=Tembipuru po pegua + +scroll_page.title=Eipuru kuatiarogue jeku’e +scroll_page_label=Kuatiarogue jeku’e +scroll_vertical.title=Eipuru jeku’e ykeguáva +scroll_vertical_label=Jeku’e ykeguáva +scroll_horizontal.title=Eipuru jeku’e yvate gotyo +scroll_horizontal_label=Jeku’e yvate gotyo +scroll_wrapped.title=Eipuru jeku’e mbohyrupyre +scroll_wrapped_label=Jeku’e mbohyrupyre + +spread_none.title=Ani ejuaju spreads kuatiarogue ndive +spread_none_label=Spreads ỹre +spread_odd.title=Embojuaju kuatiarogue jepysokue eñepyrũvo kuatiarogue impar-vagui +spread_odd_label=Spreads impar +spread_even.title=Embojuaju kuatiarogue jepysokue eñepyrũvo kuatiarogue par-vagui +spread_even_label=Ipukuve uvei + +# Document properties dialog box +document_properties.title=Kuatia mba’etee… +document_properties_label=Kuatia mba’etee… +document_properties_file_name=Marandurenda réra: +document_properties_file_size=Marandurenda tuichakue: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Teratee: +document_properties_author=Apohára: +document_properties_subject=Mba’egua: +document_properties_keywords=Jehero: +document_properties_creation_date=Teñoihague arange: +document_properties_modification_date=Iñambue hague arange: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Apo’ypyha: +document_properties_producer=PDF mbosako’iha: +document_properties_version=PDF mbojuehegua: +document_properties_page_count=Kuatiarogue papapy: +document_properties_page_size=Kuatiarogue tuichakue: +document_properties_page_size_unit_inches=Amo +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=Oĩháicha +document_properties_page_size_orientation_landscape=apaisado +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Kuatiañe’ẽ +document_properties_page_size_name_legal=Tee +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Ñanduti jahecha pya’e: +document_properties_linearized_yes=Añete +document_properties_linearized_no=Ahániri +document_properties_close=Mboty + +print_progress_message=Embosako’i kuatia emonguatia hag̃ua… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Heja + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Tenda yke moambue +toggle_sidebar_notification2.title=Embojopyru tenda ykegua (kuatia oguereko kuaakaha/moirũha/ñuãha) +toggle_sidebar_label=Tenda yke moambue +document_outline.title=Ehechauka kuatia rape (eikutu mokõi jey embotuicha/emomichĩ hag̃ua opavavete mba’epuru) +document_outline_label=Kuatia apopyre +attachments.title=Moirũha jehechauka +attachments_label=Moirũha +layers.title=Ehechauka ñuãha (eikutu jo’a emomba’apo hag̃ua opaite ñuãha tekoypýpe) +layers_label=Ñuãha +thumbs.title=Mba’emirĩ jehechauka +thumbs_label=Mba’emirĩ +current_outline_item.title=Eheka mba’epuru ag̃aguaitéva +current_outline_item_label=Mba’epuru ag̃aguaitéva +findbar.title=Kuatiápe jeheka +findbar_label=Juhu + +additional_layers=Ñuãha moirũguáva +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Kuatiarogue {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Kuatiarogue {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Kuatiarogue mba’emirĩ {{page}} + +# Find panel button title and messages +find_input.title=Juhu +find_input.placeholder=Kuatiápe jejuhu… +find_previous.title=Ejuhu ñe’ẽrysýi osẽ’ypy hague +find_previous_label=Mboyvegua +find_next.title=Eho ñe’ẽ juhupyre upeiguávape +find_next_label=Upeigua +find_highlight=Embojekuaavepa +find_match_case_label=Ejesareko taiguasu/taimichĩre +find_match_diacritics_label=Diacrítico moñondive +find_entire_word_label=Ñe’ẽ oĩmbáva +find_reached_top=Ojehupyty kuatia ñepyrũ, oku’ejeýta kuatia paha guive +find_reached_bottom=Ojehupyty kuatia paha, oku’ejeýta kuatia ñepyrũ guive +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} {{total}} ojojoguáva +find_match_count[two]={{current}} {{total}} ojojoguáva +find_match_count[few]={{current}} {{total}} ojojoguáva +find_match_count[many]={{current}} {{total}} ojojoguáva +find_match_count[other]={{current}} {{total}} ojojoguáva +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Hetave {{limit}} ojojoguáva +find_match_count_limit[one]=Hetave {{limit}} ojojogua +find_match_count_limit[two]=Hetave {{limit}} ojojoguáva +find_match_count_limit[few]=Hetave {{limit}} ojojoguáva +find_match_count_limit[many]=Hetave {{limit}} ojojoguáva +find_match_count_limit[other]=Hetave {{limit}} ojojoguáva +find_not_found=Ñe’ẽrysýi ojejuhu’ỹva + +# Error panel labels +error_more_info=Maranduve +error_less_info=Sa’ive marandu +error_close=Mboty +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Ñe’ẽmondo: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Mbojo’apy: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Marandurenda: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Tairenda: {{line}} + +# Predefined zoom values +page_scale_width=Kuatiarogue pekue +page_scale_fit=Kuatiarogue ñemoĩporã +page_scale_auto=Tuichakue ijeheguíva +page_scale_actual=Tuichakue ag̃agua +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Henyhẽhína… + +# Loading indicator messages +loading_error=Oiko jejavy PDF oñemyeñyhẽnguévo. +invalid_file_error=PDF marandurenda ndoikóiva térã ivaipyréva. +missing_file_error=Ndaipóri PDF marandurenda +unexpected_response_error=Mohendahavusu mbohovái ñeha’arõ’ỹva. + +rendering_error=Oiko jejavy ehechaukasévo kuatiarogue. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Jehaipy {{type}}] +password_label=Emoinge ñe’ẽñemi eipe’a hag̃ua ko marandurenda PDF. +password_invalid=Ñe’ẽñemi ndoikóiva. Eha’ã jey. +password_ok=MONEĨ +password_cancel=Heja + +printing_not_supported=Kyhyjerã: Ñembokuatia ndojokupytypái ko kundahára ndive. +printing_not_ready=Kyhyjerã: Ko PDF nahenyhẽmbái oñembokuatia hag̃uáicha. +web_fonts_disabled=Ñanduti taity oñemongéma: ndaikatumo’ãi eipuru PDF jehai’íva taity. + +# Editor +editor_free_text2.title=Moñe’ẽrã +editor_free_text2_label=Moñe’ẽrã +editor_ink2.title=Moha’ãnga +editor_ink2_label=Moha’ãnga + +free_text2_default_content=Ehai ñepyrũ… + +# Editor Parameters +editor_free_text_color=Sa’y +editor_free_text_size=Tuichakue +editor_ink_color=Sa’y +editor_ink_thickness=Anambusu +editor_ink_opacity=Pytũngy + +# Editor aria +editor_free_text2_aria_label=Moñe’ẽrã moheñoiha +editor_ink2_aria_label=Ta’ãnga moheñoiha +editor_ink_canvas_aria_label=Ta’ãnga omoheñóiva puruhára diff --git a/www/include/vendor/pdfjs/web/locale/gu-IN/viewer.properties b/www/include/vendor/pdfjs/web/locale/gu-IN/viewer.properties new file mode 100644 index 0000000..8e6c44f --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/gu-IN/viewer.properties @@ -0,0 +1,235 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=પહેલાનુ પાનું +previous_label=પહેલાનુ +next.title=આગળનુ પાનું +next_label=આગળનું + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=પાનું +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=નો {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} નો {{pagesCount}}) + +zoom_out.title=મોટુ કરો +zoom_out_label=મોટુ કરો +zoom_in.title=નાનું કરો +zoom_in_label=નાનું કરો +zoom.title=નાનું મોટુ કરો +presentation_mode.title=રજૂઆત સ્થિતિમાં જાવ +presentation_mode_label=રજૂઆત સ્થિતિ +open_file.title=ફાઇલ ખોલો +open_file_label=ખોલો +print.title=છાપો +print_label=છારો +download.title=ડાઉનલોડ +download_label=ડાઉનલોડ +bookmark.title=વર્તમાન દૃશ્ય (નવી વિન્ડોમાં નકલ કરો અથવા ખોલો) +bookmark_label=વર્તમાન દૃશ્ય + +# Secondary toolbar and context menu +tools.title=સાધનો +tools_label=સાધનો +first_page.title=પહેલાં પાનામાં જાવ +first_page_label=પ્રથમ પાનાં પર જાવ +last_page.title=છેલ્લા પાનાં પર જાવ +last_page_label=છેલ્લા પાનાં પર જાવ +page_rotate_cw.title=ઘડિયાળનાં કાંટા તરફ ફેરવો +page_rotate_cw_label=ઘડિયાળનાં કાંટા તરફ ફેરવો +page_rotate_ccw.title=ઘડિયાળનાં કાંટાની ઉલટી દિશામાં ફેરવો +page_rotate_ccw_label=ઘડિયાળનાં કાંટાની વિરુદ્દ ફેરવો + +cursor_text_select_tool.title=ટેક્સ્ટ પસંદગી ટૂલ સક્ષમ કરો +cursor_text_select_tool_label=ટેક્સ્ટ પસંદગી ટૂલ +cursor_hand_tool.title=હાથનાં સાધનને સક્રિય કરો +cursor_hand_tool_label=હેન્ડ ટૂલ + +scroll_vertical.title=ઊભી સ્ક્રોલિંગનો ઉપયોગ કરો +scroll_vertical_label=ઊભી સ્ક્રોલિંગ +scroll_horizontal.title=આડી સ્ક્રોલિંગનો ઉપયોગ કરો +scroll_horizontal_label=આડી સ્ક્રોલિંગ +scroll_wrapped.title=આવરિત સ્ક્રોલિંગનો ઉપયોગ કરો +scroll_wrapped_label=આવરિત સ્ક્રોલિંગ + +spread_none.title=પૃષ્ઠ સ્પ્રેડમાં જોડાવશો નહીં +spread_none_label=કોઈ સ્પ્રેડ નથી +spread_odd.title=એકી-ક્રમાંકિત પૃષ્ઠો સાથે પ્રારંભ થતાં પૃષ્ઠ સ્પ્રેડમાં જોડાઓ +spread_odd_label=એકી સ્પ્રેડ્સ +spread_even.title=નંબર-ક્રમાંકિત પૃષ્ઠોથી શરૂ થતાં પૃષ્ઠ સ્પ્રેડમાં જોડાઓ +spread_even_label=સરખું ફેલાવવું + +# Document properties dialog box +document_properties.title=દસ્તાવેજ ગુણધર્મો… +document_properties_label=દસ્તાવેજ ગુણધર્મો… +document_properties_file_name=ફાઇલ નામ: +document_properties_file_size=ફાઇલ માપ: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} બાઇટ) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} બાઇટ) +document_properties_title=શીર્ષક: +document_properties_author=લેખક: +document_properties_subject=વિષય: +document_properties_keywords=કિવર્ડ: +document_properties_creation_date=નિર્માણ તારીખ: +document_properties_modification_date=ફેરફાર તારીખ: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=નિર્માતા: +document_properties_producer=PDF નિર્માતા: +document_properties_version=PDF આવૃત્તિ: +document_properties_page_count=પાનાં ગણતરી: +document_properties_page_size=પૃષ્ઠનું કદ: +document_properties_page_size_unit_inches=ઇંચ +document_properties_page_size_unit_millimeters=મીમી +document_properties_page_size_orientation_portrait=ઉભું +document_properties_page_size_orientation_landscape=આડુ +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=પત્ર +document_properties_page_size_name_legal=કાયદાકીય +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=ઝડપી વૅબ દૃશ્ય: +document_properties_linearized_yes=હા +document_properties_linearized_no=ના +document_properties_close=બંધ કરો + +print_progress_message=છાપકામ માટે દસ્તાવેજ તૈયાર કરી રહ્યા છે… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=રદ કરો + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=ટૉગલ બાજુપટ્ટી +toggle_sidebar_label=ટૉગલ બાજુપટ્ટી +document_outline.title=દસ્તાવેજની રૂપરેખા બતાવો(બધી આઇટમ્સને વિસ્તૃત/સંકુચિત કરવા માટે ડબલ-ક્લિક કરો) +document_outline_label=દસ્તાવેજ રૂપરેખા +attachments.title=જોડાણોને બતાવો +attachments_label=જોડાણો +thumbs.title=થંબનેલ્સ બતાવો +thumbs_label=થંબનેલ્સ +findbar.title=દસ્તાવેજમાં શોધો +findbar_label=શોધો + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=પાનું {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=પાનાં {{page}} નું થંબનેલ્સ + +# Find panel button title and messages +find_input.title=શોધો +find_input.placeholder=દસ્તાવેજમાં શોધો… +find_previous.title=શબ્દસમૂહની પાછલી ઘટનાને શોધો +find_previous_label=પહેલાંનુ +find_next.title=શબ્દસમૂહની આગળની ઘટનાને શોધો +find_next_label=આગળનું +find_highlight=બધુ પ્રકાશિત કરો +find_match_case_label=કેસ બંધબેસાડો +find_entire_word_label=સંપૂર્ણ શબ્દો +find_reached_top=દસ્તાવેજનાં ટોચે પહોંચી ગયા, તળિયેથી ચાલુ કરેલ હતુ +find_reached_bottom=દસ્તાવેજનાં અંતે પહોંચી ગયા, ઉપરથી ચાલુ કરેલ હતુ +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{total}} માંથી {{current}} સરખું મળ્યું +find_match_count[two]={{total}} માંથી {{current}} સરખા મળ્યાં +find_match_count[few]={{total}} માંથી {{current}} સરખા મળ્યાં +find_match_count[many]={{total}} માંથી {{current}} સરખા મળ્યાં +find_match_count[other]={{total}} માંથી {{current}} સરખા મળ્યાં +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]={{limit}} કરતાં વધુ સરખા મળ્યાં +find_match_count_limit[one]={{limit}} કરતાં વધુ સરખું મળ્યું +find_match_count_limit[two]={{limit}} કરતાં વધુ સરખા મળ્યાં +find_match_count_limit[few]={{limit}} કરતાં વધુ સરખા મળ્યાં +find_match_count_limit[many]={{limit}} કરતાં વધુ સરખા મળ્યાં +find_match_count_limit[other]={{limit}} કરતાં વધુ સરખા મળ્યાં +find_not_found=શબ્દસમૂહ મળ્યુ નથી + +# Error panel labels +error_more_info=વધારે જાણકારી +error_less_info=ઓછી જાણકારી +error_close=બંધ કરો +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=સંદેશો: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=સ્ટેક: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=ફાઇલ: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=વાક્ય: {{line}} +rendering_error=ભૂલ ઉદ્ભવી જ્યારે પાનાંનુ રેન્ડ કરી રહ્યા હોય. + +# Predefined zoom values +page_scale_width=પાનાની પહોળાઇ +page_scale_fit=પાનું બંધબેસતુ +page_scale_auto=આપમેળે નાનુંમોટુ કરો +page_scale_actual=ચોક્કસ માપ +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=ભૂલ ઉદ્ભવી જ્યારે PDF ને લાવી રહ્યા હોય. +invalid_file_error=અયોગ્ય અથવા ભાંગેલ PDF ફાઇલ. +missing_file_error=ગુમ થયેલ PDF ફાઇલ. +unexpected_response_error=અનપેક્ષિત સર્વર પ્રતિસાદ. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Annotation] +password_label=આ PDF ફાઇલને ખોલવા પાસવર્ડને દાખલ કરો. +password_invalid=અયોગ્ય પાસવર્ડ. મહેરબાની કરીને ફરી પ્રયત્ન કરો. +password_ok=બરાબર +password_cancel=રદ કરો + +printing_not_supported=ચેતવણી: છાપવાનું આ બ્રાઉઝર દ્દારા સંપૂર્ણપણે આધારભૂત નથી. +printing_not_ready=Warning: PDF એ છાપવા માટે સંપૂર્ણપણે લાવેલ છે. +web_fonts_disabled=વેબ ફોન્ટ નિષ્ક્રિય થયેલ છે: ઍમ્બેડ થયેલ PDF ફોન્ટને વાપરવાનું અસમર્થ. + diff --git a/www/include/vendor/pdfjs/web/locale/he/viewer.properties b/www/include/vendor/pdfjs/web/locale/he/viewer.properties new file mode 100644 index 0000000..b5cf229 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/he/viewer.properties @@ -0,0 +1,276 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=דף קודם +previous_label=קודם +next.title=דף הבא +next_label=הבא + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=דף +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=מתוך {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} מתוך {{pagesCount}}) + +zoom_out.title=התרחקות +zoom_out_label=התרחקות +zoom_in.title=התקרבות +zoom_in_label=התקרבות +zoom.title=מרחק מתצוגה +presentation_mode.title=מעבר למצב מצגת +presentation_mode_label=מצב מצגת +open_file.title=פתיחת קובץ +open_file_label=פתיחה +print.title=הדפסה +print_label=הדפסה +download.title=הורדה +download_label=הורדה +save.title=שמירה +save_label=שמירה +bookmark.title=תצוגה נוכחית (העתקה או פתיחה בחלון חדש) +bookmark_label=תצוגה נוכחית + +bookmark1_label=עמוד נוכחי + +# Secondary toolbar and context menu +tools.title=כלים +tools_label=כלים +first_page.title=מעבר לעמוד הראשון +first_page_label=מעבר לעמוד הראשון +last_page.title=מעבר לעמוד האחרון +last_page_label=מעבר לעמוד האחרון +page_rotate_cw.title=הטיה עם כיוון השעון +page_rotate_cw_label=הטיה עם כיוון השעון +page_rotate_ccw.title=הטיה כנגד כיוון השעון +page_rotate_ccw_label=הטיה כנגד כיוון השעון + +cursor_text_select_tool.title=הפעלת כלי בחירת טקסט +cursor_text_select_tool_label=כלי בחירת טקסט +cursor_hand_tool.title=הפעלת כלי היד +cursor_hand_tool_label=כלי יד + +scroll_page.title=שימוש בגלילת עמוד +scroll_page_label=גלילת עמוד +scroll_vertical.title=שימוש בגלילה אנכית +scroll_vertical_label=גלילה אנכית +scroll_horizontal.title=שימוש בגלילה אופקית +scroll_horizontal_label=גלילה אופקית +scroll_wrapped.title=שימוש בגלילה רציפה +scroll_wrapped_label=גלילה רציפה + +spread_none.title=לא לצרף מפתחי עמודים +spread_none_label=ללא מפתחים +spread_odd.title=צירוף מפתחי עמודים שמתחילים בדפים עם מספרים אי־זוגיים +spread_odd_label=מפתחים אי־זוגיים +spread_even.title=צירוף מפתחי עמודים שמתחילים בדפים עם מספרים זוגיים +spread_even_label=מפתחים זוגיים + +# Document properties dialog box +document_properties.title=מאפייני מסמך… +document_properties_label=מאפייני מסמך… +document_properties_file_name=שם קובץ: +document_properties_file_size=גודל הקובץ: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} ק״ב ({{size_b}} בתים) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} מ״ב ({{size_b}} בתים) +document_properties_title=כותרת: +document_properties_author=מחבר: +document_properties_subject=נושא: +document_properties_keywords=מילות מפתח: +document_properties_creation_date=תאריך יצירה: +document_properties_modification_date=תאריך שינוי: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=יוצר: +document_properties_producer=יצרן PDF: +document_properties_version=גרסת PDF: +document_properties_page_count=מספר דפים: +document_properties_page_size=גודל העמוד: +document_properties_page_size_unit_inches=אינ׳ +document_properties_page_size_unit_millimeters=מ״מ +document_properties_page_size_orientation_portrait=לאורך +document_properties_page_size_orientation_landscape=לרוחב +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=מכתב +document_properties_page_size_name_legal=דף משפטי +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=תצוגת דף מהירה: +document_properties_linearized_yes=כן +document_properties_linearized_no=לא +document_properties_close=סגירה + +print_progress_message=מסמך בהכנה להדפסה… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=ביטול + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=הצגה/הסתרה של סרגל הצד +toggle_sidebar_notification2.title=החלפת תצוגת סרגל צד (מסמך שמכיל תוכן עניינים/קבצים מצורפים/שכבות) +toggle_sidebar_label=הצגה/הסתרה של סרגל הצד +document_outline.title=הצגת תוכן העניינים של המסמך (לחיצה כפולה כדי להרחיב או לצמצם את כל הפריטים) +document_outline_label=תוכן העניינים של המסמך +attachments.title=הצגת צרופות +attachments_label=צרופות +layers.title=הצגת שכבות (יש ללחוץ לחיצה כפולה כדי לאפס את כל השכבות למצב ברירת המחדל) +layers_label=שכבות +thumbs.title=הצגת תצוגה מקדימה +thumbs_label=תצוגה מקדימה +current_outline_item.title=מציאת פריט תוכן העניינים הנוכחי +current_outline_item_label=פריט תוכן העניינים הנוכחי +findbar.title=חיפוש במסמך +findbar_label=חיפוש + +additional_layers=שכבות נוספות +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=עמוד {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=עמוד {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=תצוגה מקדימה של עמוד {{page}} + +# Find panel button title and messages +find_input.title=חיפוש +find_input.placeholder=חיפוש במסמך… +find_previous.title=מציאת המופע הקודם של הביטוי +find_previous_label=קודם +find_next.title=מציאת המופע הבא של הביטוי +find_next_label=הבא +find_highlight=הדגשת הכול +find_match_case_label=התאמת אותיות +find_match_diacritics_label=התאמה דיאקריטית +find_entire_word_label=מילים שלמות +find_reached_top=הגיע לראש הדף, ממשיך מלמטה +find_reached_bottom=הגיע לסוף הדף, ממשיך מלמעלה +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]=תוצאה {{current}} מתוך {{total}} +find_match_count[two]={{current}} מתוך {{total}} תוצאות +find_match_count[few]={{current}} מתוך {{total}} תוצאות +find_match_count[many]={{current}} מתוך {{total}} תוצאות +find_match_count[other]={{current}} מתוך {{total}} תוצאות +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=יותר מ־{{limit}} תוצאות +find_match_count_limit[one]=יותר מתוצאה אחת +find_match_count_limit[two]=יותר מ־{{limit}} תוצאות +find_match_count_limit[few]=יותר מ־{{limit}} תוצאות +find_match_count_limit[many]=יותר מ־{{limit}} תוצאות +find_match_count_limit[other]=יותר מ־{{limit}} תוצאות +find_not_found=הביטוי לא נמצא + +# Error panel labels +error_more_info=מידע נוסף +error_less_info=פחות מידע +error_close=סגירה +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js גרסה {{version}} (בנייה: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=הודעה: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=תוכן מחסנית: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=קובץ: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=שורה: {{line}} + +# Predefined zoom values +page_scale_width=רוחב העמוד +page_scale_fit=התאמה לעמוד +page_scale_auto=מרחק מתצוגה אוטומטי +page_scale_actual=גודל אמיתי +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=בטעינה… +loading_error=אירעה שגיאה בעת טעינת ה־PDF. +invalid_file_error=קובץ PDF פגום או לא תקין. +missing_file_error=קובץ PDF חסר. +unexpected_response_error=תגובת שרת לא צפויה. + +rendering_error=אירעה שגיאה בעת עיבוד הדף. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[הערת {{type}}] +password_label=נא להכניס את הססמה לפתיחת קובץ PDF זה. +password_invalid=ססמה שגויה. נא לנסות שנית. +password_ok=אישור +password_cancel=ביטול + +printing_not_supported=אזהרה: הדפסה אינה נתמכת במלואה בדפדפן זה. +printing_not_ready=אזהרה: מסמך ה־PDF לא נטען לחלוטין עד מצב שמאפשר הדפסה. +web_fonts_disabled=גופני רשת מנוטרלים: לא ניתן להשתמש בגופני PDF מוטבעים. + +# Editor +editor_free_text2.title=טקסט +editor_free_text2_label=טקסט +editor_ink2.title=ציור +editor_ink2_label=ציור + +free_text2_default_content=להתחיל להקליד… + +# Editor Parameters +editor_free_text_color=צבע +editor_free_text_size=גודל +editor_ink_color=צבע +editor_ink_thickness=עובי +editor_ink_opacity=אטימות + +# Editor aria +editor_free_text2_aria_label=עורך טקסט +editor_ink2_aria_label=עורך ציור +editor_ink_canvas_aria_label=תמונה שנוצרה על־ידי משתמש diff --git a/www/include/vendor/pdfjs/web/locale/hi-IN/viewer.properties b/www/include/vendor/pdfjs/web/locale/hi-IN/viewer.properties new file mode 100644 index 0000000..e296f0a --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/hi-IN/viewer.properties @@ -0,0 +1,235 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=पिछला पृष्ठ +previous_label=पिछला +next.title=अगला पृष्ठ +next_label=आगे + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=पृष्ठ: +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}} का +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} of {{pagesCount}}) + +zoom_out.title=\u0020छोटा करें +zoom_out_label=\u0020छोटा करें +zoom_in.title=बड़ा करें +zoom_in_label=बड़ा करें +zoom.title=बड़ा-छोटा करें +presentation_mode.title=प्रस्तुति अवस्था में जाएँ +presentation_mode_label=\u0020प्रस्तुति अवस्था +open_file.title=फ़ाइल खोलें +open_file_label=\u0020खोलें +print.title=छापें +print_label=\u0020छापें +download.title=डाउनलोड +download_label=डाउनलोड +bookmark.title=मौजूदा दृश्य (नए विंडो में नक़ल लें या खोलें) +bookmark_label=\u0020मौजूदा दृश्य + +# Secondary toolbar and context menu +tools.title=औज़ार +tools_label=औज़ार +first_page.title=प्रथम पृष्ठ पर जाएँ +first_page_label=प्रथम पृष्ठ पर जाएँ +last_page.title=अंतिम पृष्ठ पर जाएँ +last_page_label=\u0020अंतिम पृष्ठ पर जाएँ +page_rotate_cw.title=घड़ी की दिशा में घुमाएँ +page_rotate_cw_label=घड़ी की दिशा में घुमाएँ +page_rotate_ccw.title=घड़ी की दिशा से उल्टा घुमाएँ +page_rotate_ccw_label=\u0020घड़ी की दिशा से उल्टा घुमाएँ + +cursor_text_select_tool.title=पाठ चयन उपकरण सक्षम करें +cursor_text_select_tool_label=पाठ चयन उपकरण +cursor_hand_tool.title=हस्त उपकरण सक्षम करें +cursor_hand_tool_label=हस्त उपकरण + +scroll_vertical.title=लंबवत स्क्रॉलिंग का उपयोग करें +scroll_vertical_label=लंबवत स्क्रॉलिंग +scroll_horizontal.title=क्षितिजिय स्क्रॉलिंग का उपयोग करें +scroll_horizontal_label=क्षितिजिय स्क्रॉलिंग +scroll_wrapped.title=व्राप्पेड स्क्रॉलिंग का उपयोग करें + +spread_none_label=कोई स्प्रेड उपलब्ध नहीं +spread_odd.title=विषम-क्रमांकित पृष्ठों से प्रारंभ होने वाले पृष्ठ स्प्रेड में शामिल हों +spread_odd_label=विषम फैलाव + +# Document properties dialog box +document_properties.title=दस्तावेज़ विशेषता... +document_properties_label=दस्तावेज़ विशेषता... +document_properties_file_name=फ़ाइल नाम: +document_properties_file_size=फाइल आकारः +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=शीर्षक: +document_properties_author=लेखकः +document_properties_subject=विषय: +document_properties_keywords=कुंजी-शब्द: +document_properties_creation_date=निर्माण दिनांक: +document_properties_modification_date=संशोधन दिनांक: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=निर्माता: +document_properties_producer=PDF उत्पादक: +document_properties_version=PDF संस्करण: +document_properties_page_count=पृष्ठ गिनती: +document_properties_page_size=पृष्ठ आकार: +document_properties_page_size_unit_inches=इंच +document_properties_page_size_unit_millimeters=मिमी +document_properties_page_size_orientation_portrait=पोर्ट्रेट +document_properties_page_size_orientation_landscape=लैंडस्केप +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=पत्र +document_properties_page_size_name_legal=क़ानूनी +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=तीव्र वेब व्यू: +document_properties_linearized_yes=हाँ +document_properties_linearized_no=नहीं +document_properties_close=बंद करें + +print_progress_message=छपाई के लिए दस्तावेज़ को तैयार किया जा रहा है... +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=रद्द करें + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=\u0020स्लाइडर टॉगल करें +toggle_sidebar_label=स्लाइडर टॉगल करें +document_outline.title=दस्तावेज़ की रूपरेखा दिखाइए (सारी वस्तुओं को फलने अथवा समेटने के लिए दो बार क्लिक करें) +document_outline_label=दस्तावेज़ आउटलाइन +attachments.title=संलग्नक दिखायें +attachments_label=संलग्नक +thumbs.title=लघुछवियाँ दिखाएँ +thumbs_label=लघु छवि +findbar.title=\u0020दस्तावेज़ में ढूँढ़ें +findbar_label=ढूँढें + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=पृष्ठ {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=पृष्ठ {{page}} की लघु-छवि + +# Find panel button title and messages +find_input.title=ढूँढें +find_input.placeholder=दस्तावेज़ में खोजें... +find_previous.title=वाक्यांश की पिछली उपस्थिति ढूँढ़ें +find_previous_label=पिछला +find_next.title=वाक्यांश की अगली उपस्थिति ढूँढ़ें +find_next_label=अगला +find_highlight=\u0020सभी आलोकित करें +find_match_case_label=मिलान स्थिति +find_entire_word_label=संपूर्ण शब्द +find_reached_top=पृष्ठ के ऊपर पहुंच गया, नीचे से जारी रखें +find_reached_bottom=पृष्ठ के नीचे में जा पहुँचा, ऊपर से जारी +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{total}} में {{current}} मेल +find_match_count[two]={{total}} में {{current}} मेल +find_match_count[few]={{total}} में {{current}} मेल +find_match_count[many]={{total}} में {{current}} मेल +find_match_count[other]={{total}} में {{current}} मेल +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]={{limit}} से अधिक मेल +find_match_count_limit[one]={{limit}} से अधिक मेल +find_match_count_limit[two]={{limit}} से अधिक मेल +find_match_count_limit[few]={{limit}} से अधिक मेल +find_match_count_limit[many]={{limit}} से अधिक मेल +find_match_count_limit[other]={{limit}} से अधिक मेल +find_not_found=वाक्यांश नहीं मिला + +# Error panel labels +error_more_info=अधिक सूचना +error_less_info=कम सूचना +error_close=बंद करें +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=\u0020संदेश: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=स्टैक: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=फ़ाइल: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=पंक्ति: {{line}} +rendering_error=पृष्ठ रेंडरिंग के दौरान त्रुटि आई. + +# Predefined zoom values +page_scale_width=\u0020पृष्ठ चौड़ाई +page_scale_fit=पृष्ठ फिट +page_scale_auto=स्वचालित जूम +page_scale_actual=वास्तविक आकार +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=PDF लोड करते समय एक त्रुटि हुई. +invalid_file_error=अमान्य या भ्रष्ट PDF फ़ाइल. +missing_file_error=\u0020अनुपस्थित PDF फ़ाइल. +unexpected_response_error=अप्रत्याशित सर्वर प्रतिक्रिया. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=\u0020[{{type}} Annotation] +password_label=इस PDF फ़ाइल को खोलने के लिए कृपया कूटशब्द भरें. +password_invalid=अवैध कूटशब्द, कृपया फिर कोशिश करें. +password_ok=OK +password_cancel=रद्द करें + +printing_not_supported=चेतावनी: इस ब्राउज़र पर छपाई पूरी तरह से समर्थित नहीं है. +printing_not_ready=चेतावनी: PDF छपाई के लिए पूरी तरह से लोड नहीं है. +web_fonts_disabled=वेब फॉन्ट्स निष्क्रिय हैं: अंतःस्थापित PDF फॉन्टस के उपयोग में असमर्थ. + diff --git a/www/include/vendor/pdfjs/web/locale/hr/viewer.properties b/www/include/vendor/pdfjs/web/locale/hr/viewer.properties new file mode 100644 index 0000000..251eb61 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/hr/viewer.properties @@ -0,0 +1,267 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Prethodna stranica +previous_label=Prethodna +next.title=Sljedeća stranica +next_label=Sljedeća + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Stranica +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=od {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} od {{pagesCount}}) + +zoom_out.title=Umanji +zoom_out_label=Umanji +zoom_in.title=Uvećaj +zoom_in_label=Uvećaj +zoom.title=Zumiranje +presentation_mode.title=Prebaci u prezentacijski način rada +presentation_mode_label=Prezentacijski način rada +open_file.title=Otvori datoteku +open_file_label=Otvori +print.title=Ispiši +print_label=Ispiši +download.title=Preuzmi +download_label=Preuzmi +save.title=Spremi +save_label=Spremi +bookmark.title=Trenutačni prikaz (kopiraj ili otvori u novom prozoru) +bookmark_label=Trenutačni prikaz + +# Secondary toolbar and context menu +tools.title=Alati +tools_label=Alati +first_page.title=Idi na prvu stranicu +first_page_label=Idi na prvu stranicu +last_page.title=Idi na posljednju stranicu +last_page_label=Idi na posljednju stranicu +page_rotate_cw.title=Rotiraj u smjeru kazaljke na satu +page_rotate_cw_label=Rotiraj u smjeru kazaljke na satu +page_rotate_ccw.title=Rotiraj obrnutno od smjera kazaljke na satu +page_rotate_ccw_label=Rotiraj obrnutno od smjera kazaljke na satu + +cursor_text_select_tool.title=Omogući alat za označavanje teksta +cursor_text_select_tool_label=Alat za označavanje teksta +cursor_hand_tool.title=Omogući ručni alat +cursor_hand_tool_label=Ručni alat + +scroll_vertical.title=Koristi okomito pomicanje +scroll_vertical_label=Okomito pomicanje +scroll_horizontal.title=Koristi vodoravno pomicanje +scroll_horizontal_label=Vodoravno pomicanje +scroll_wrapped.title=Koristi kontinuirani raspored stranica +scroll_wrapped_label=Kontinuirani raspored stranica + +spread_none.title=Ne izrađuj duplerice +spread_none_label=Pojedinačne stranice +spread_odd.title=Izradi duplerice koje počinju s neparnim stranicama +spread_odd_label=Neparne duplerice +spread_even.title=Izradi duplerice koje počinju s parnim stranicama +spread_even_label=Parne duplerice + +# Document properties dialog box +document_properties.title=Svojstva dokumenta … +document_properties_label=Svojstva dokumenta … +document_properties_file_name=Naziv datoteke: +document_properties_file_size=Veličina datoteke: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bajtova) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bajtova) +document_properties_title=Naslov: +document_properties_author=Autor: +document_properties_subject=Predmet: +document_properties_keywords=Ključne riječi: +document_properties_creation_date=Datum stvaranja: +document_properties_modification_date=Datum promjene: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Stvaratelj: +document_properties_producer=PDF stvaratelj: +document_properties_version=PDF verzija: +document_properties_page_count=Broj stranica: +document_properties_page_size=Dimenzije stranice: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=uspravno +document_properties_page_size_orientation_landscape=položeno +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Brzi web pregled: +document_properties_linearized_yes=Da +document_properties_linearized_no=Ne +document_properties_close=Zatvori + +print_progress_message=Pripremanje dokumenta za ispis… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Odustani + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Prikaži/sakrij bočnu traku +toggle_sidebar_notification2.title=Prikazivanje i sklanjanje bočne trake (dokument sadrži strukturu/privitke/slojeve) +toggle_sidebar_label=Prikaži/sakrij bočnu traku +document_outline.title=Prikaži strukturu dokumenta (dvostruki klik za rasklapanje/sklapanje svih stavki) +document_outline_label=Struktura dokumenta +attachments.title=Prikaži privitke +attachments_label=Privitci +layers.title=Prikaži slojeve (dvoklik za vraćanje svih slojeva u zadano stanje) +layers_label=Slojevi +thumbs.title=Prikaži minijature +thumbs_label=Minijature +current_outline_item.title=Pronađi trenutačni element strukture +current_outline_item_label=Trenutačni element strukture +findbar.title=Pronađi u dokumentu +findbar_label=Pronađi + +additional_layers=Dodatni slojevi +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Stranica {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Stranica {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Minijatura stranice {{page}} + +# Find panel button title and messages +find_input.title=Pronađi +find_input.placeholder=Pronađi u dokumentu … +find_previous.title=Pronađi prethodno pojavljivanje ovog izraza +find_previous_label=Prethodno +find_next.title=Pronađi sljedeće pojavljivanje ovog izraza +find_next_label=Sljedeće +find_highlight=Istankni sve +find_match_case_label=Razlikovanje velikih i malih slova +find_entire_word_label=Cijele riječi +find_reached_top=Dosegnut početak dokumenta, nastavak s kraja +find_reached_bottom=Dosegnut kraj dokumenta, nastavak s početka +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} od {{total}} se podudara +find_match_count[two]={{current}} od {{total}} se podudara +find_match_count[few]={{current}} od {{total}} se podudara +find_match_count[many]={{current}} od {{total}} se podudara +find_match_count[other]={{current}} od {{total}} se podudara +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Više od {{limit}} podudaranja +find_match_count_limit[one]=Više od {{limit}} podudaranja +find_match_count_limit[two]=Više od {{limit}} podudaranja +find_match_count_limit[few]=Više od {{limit}} podudaranja +find_match_count_limit[many]=Više od {{limit}} podudaranja +find_match_count_limit[other]=Više od {{limit}} podudaranja +find_not_found=Izraz nije pronađen + +# Error panel labels +error_more_info=Više informacija +error_less_info=Manje informacija +error_close=Zatvori +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Poruka: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stog: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Datoteka: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Redak: {{line}} + +# Predefined zoom values +page_scale_width=Prilagodi širini prozora +page_scale_fit=Prilagodi veličini prozora +page_scale_auto=Automatsko zumiranje +page_scale_actual=Stvarna veličina +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}} % + +# Loading indicator messages +loading=Učitavanje… +loading_error=Došlo je do greške pri učitavanju PDF-a. +invalid_file_error=Neispravna ili oštećena PDF datoteka. +missing_file_error=Nedostaje PDF datoteka. +unexpected_response_error=Neočekivani odgovor poslužitelja. + +rendering_error=Došlo je do greške prilikom iscrtavanja stranice. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Bilješka] +password_label=Za otvoranje ove PDF datoteku upiši lozinku. +password_invalid=Neispravna lozinka. Pokušaj ponovo. +password_ok=U redu +password_cancel=Odustani + +printing_not_supported=Upozorenje: Ovaj preglednik ne podržava u potpunosti ispisivanje. +printing_not_ready=Upozorenje: PDF nije u potpunosti učitan za ispis. +web_fonts_disabled=Web fontovi su deaktivirani: nije moguće koristiti ugrađene PDF fontove. + +# Editor +editor_free_text2.title=Tekst +editor_free_text2_label=Tekst + +free_text2_default_content=Počni tipkati … + +# Editor Parameters +editor_free_text_color=Boja +editor_free_text_size=Veličina +editor_ink_color=Boja +editor_ink_thickness=Debljina +editor_ink_opacity=Neprozirnost + +# Editor aria +editor_free_text2_aria_label=Uređivač teksta diff --git a/www/include/vendor/pdfjs/web/locale/hsb/viewer.properties b/www/include/vendor/pdfjs/web/locale/hsb/viewer.properties new file mode 100644 index 0000000..db9c924 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/hsb/viewer.properties @@ -0,0 +1,279 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Předchadna strona +previous_label=Wróćo +next.title=Přichodna strona +next_label=Dale + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Strona +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=z {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} z {{pagesCount}}) + +zoom_out.title=Pomjeńšić +zoom_out_label=Pomjeńšić +zoom_in.title=Powjetšić +zoom_in_label=Powjetšić +zoom.title=Skalowanje +presentation_mode.title=Do prezentaciskeho modusa přeńć +presentation_mode_label=Prezentaciski modus +open_file.title=Dataju wočinić +open_file_label=Wočinić +print.title=Ćišćeć +print_label=Ćišćeć +download.title=Sćahnyć +download_label=Sćahnyć +save.title=Składować +save_label=Składować +bookmark.title=Aktualny napohlad (kopěrować abo w nowym woknje wočinić) +bookmark_label=Aktualny napohlad + +bookmark1.title=Aktualna strona (URL z aktualneje strony pokazać) +bookmark1_label=Aktualna strona + +# Secondary toolbar and context menu +tools.title=Nastroje +tools_label=Nastroje +first_page.title=K prěnjej stronje +first_page_label=K prěnjej stronje +last_page.title=K poslednjej stronje +last_page_label=K poslednjej stronje +page_rotate_cw.title=K směrej časnika wjerćeć +page_rotate_cw_label=K směrej časnika wjerćeć +page_rotate_ccw.title=Přećiwo směrej časnika wjerćeć +page_rotate_ccw_label=Přećiwo směrej časnika wjerćeć + +cursor_text_select_tool.title=Nastroj za wuběranje teksta zmóžnić +cursor_text_select_tool_label=Nastroj za wuběranje teksta +cursor_hand_tool.title=Ručny nastroj zmóžnić +cursor_hand_tool_label=Ručny nastroj + +scroll_page.title=Kulenje strony wužiwać +scroll_page_label=Kulenje strony +scroll_vertical.title=Wertikalne suwanje wužiwać +scroll_vertical_label=Wertikalne suwanje +scroll_horizontal.title=Horicontalne suwanje wužiwać +scroll_horizontal_label=Horicontalne suwanje +scroll_wrapped.title=Postupne suwanje wužiwać +scroll_wrapped_label=Postupne suwanje + +spread_none.title=Strony njezwjazać +spread_none_label=Žana dwójna strona +spread_odd.title=Strony započinajo z njerunymi stronami zwjazać +spread_odd_label=Njerune strony +spread_even.title=Strony započinajo z runymi stronami zwjazać +spread_even_label=Rune strony + +# Document properties dialog box +document_properties.title=Dokumentowe kajkosće… +document_properties_label=Dokumentowe kajkosće… +document_properties_file_name=Mjeno dataje: +document_properties_file_size=Wulkosć dataje: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bajtow) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bajtow) +document_properties_title=Titul: +document_properties_author=Awtor: +document_properties_subject=Předmjet: +document_properties_keywords=Klučowe słowa: +document_properties_creation_date=Datum wutworjenja: +document_properties_modification_date=Datum změny: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Awtor: +document_properties_producer=PDF-zhotowjer: +document_properties_version=PDF-wersija: +document_properties_page_count=Ličba stronow: +document_properties_page_size=Wulkosć strony: +document_properties_page_size_unit_inches=cól +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=wysoki format +document_properties_page_size_orientation_landscape=prěčny format +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Fast Web View: +document_properties_linearized_yes=Haj +document_properties_linearized_no=Ně +document_properties_close=Začinić + +print_progress_message=Dokument so za ćišćenje přihotuje… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Přetorhnyć + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Bóčnicu pokazać/schować +toggle_sidebar_notification2.title=Bóčnicu přepinać (dokument rozrjad/přiwěški/woršty wobsahuje) +toggle_sidebar_label=Bóčnicu pokazać/schować +document_outline.title=Dokumentowy naćisk pokazać (dwójne kliknjenje, zo bychu so wšě zapiski pokazali/schowali) +document_outline_label=Dokumentowa struktura +attachments.title=Přiwěški pokazać +attachments_label=Přiwěški +layers.title=Woršty pokazać (klikńće dwójce, zo byšće wšě woršty na standardny staw wróćo stajił) +layers_label=Woršty +thumbs.title=Miniatury pokazać +thumbs_label=Miniatury +current_outline_item.title=Aktualny rozrjadowy zapisk pytać +current_outline_item_label=Aktualny rozrjadowy zapisk +findbar.title=W dokumenće pytać +findbar_label=Pytać + +additional_layers=Dalše woršty +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Strona {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Strona {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura strony {{page}} + +# Find panel button title and messages +find_input.title=Pytać +find_input.placeholder=W dokumenće pytać… +find_previous.title=Předchadne wustupowanje pytanskeho wuraza pytać +find_previous_label=Wróćo +find_next.title=Přichodne wustupowanje pytanskeho wuraza pytać +find_next_label=Dale +find_highlight=Wšě wuzběhnyć +find_match_case_label=Wulkopisanje wobkedźbować +find_match_diacritics_label=Diakritiske znamješka wužiwać +find_entire_word_label=Cyłe słowa +find_reached_top=Spočatk dokumenta docpěty, pokročuje so z kóncom +find_reached_bottom=Kónc dokument docpěty, pokročuje so ze spočatkom +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} z {{total}} wotpowědnika +find_match_count[two]={{current}} z {{total}} wotpowědnikow +find_match_count[few]={{current}} z {{total}} wotpowědnikow +find_match_count[many]={{current}} z {{total}} wotpowědnikow +find_match_count[other]={{current}} z {{total}} wotpowědnikow +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Wjace hač {{limit}} wotpowědnikow +find_match_count_limit[one]=Wjace hač {{limit}} wotpowědnik +find_match_count_limit[two]=Wjace hač {{limit}} wotpowědnikaj +find_match_count_limit[few]=Wjace hač {{limit}} wotpowědniki +find_match_count_limit[many]=Wjace hač {{limit}} wotpowědnikow +find_match_count_limit[other]=Wjace hač {{limit}} wotpowědnikow +find_not_found=Pytanski wuraz njeje so namakał + +# Error panel labels +error_more_info=Wjace informacijow +error_less_info=Mjenje informacijow +error_close=Začinić +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Zdźělenka: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Lisćina zawołanjow: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Dataja: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Linka: {{line}} + +# Predefined zoom values +page_scale_width=Šěrokosć strony +page_scale_fit=Wulkosć strony +page_scale_auto=Awtomatiske skalowanje +page_scale_actual=Aktualna wulkosć +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Začituje so… + +# Loading indicator messages +loading_error=Při začitowanju PDF je zmylk wustupił. +invalid_file_error=Njepłaćiwa abo wobškodźena PDF-dataja. +missing_file_error=Falowaca PDF-dataja. +unexpected_response_error=Njewočakowana serwerowa wotmołwa. + +rendering_error=Při zwobraznjenju strony je zmylk wustupił. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Typ přispomnjenki: {{type}}] +password_label=Zapodajće hesło, zo byšće PDF-dataju wočinił. +password_invalid=Njepłaćiwe hesło. Prošu spytajće hišće raz. +password_ok=W porjadku +password_cancel=Přetorhnyć + +printing_not_supported=Warnowanje: Ćišćenje so přez tutón wobhladowak połnje njepodpěruje. +printing_not_ready=Warnowanje: PDF njeje so za ćišćenje dospołnje začitał. +web_fonts_disabled=Webpisma su znjemóžnjene: njeje móžno, zasadźene PDF-pisma wužiwać. + +# Editor +editor_free_text2.title=Tekst +editor_free_text2_label=Tekst +editor_ink2.title=Rysować +editor_ink2_label=Rysować + +free_text2_default_content=Započńće pisać… + +# Editor Parameters +editor_free_text_color=Barba +editor_free_text_size=Wulkosć +editor_ink_color=Barba +editor_ink_thickness=Tołstosć +editor_ink_opacity=Opacita + +# Editor aria +editor_free_text2_aria_label=Tekstowy editor +editor_ink2_aria_label=Rysowanski editor +editor_ink_canvas_aria_label=Wobraz wutworjeny wot wužiwarja diff --git a/www/include/vendor/pdfjs/web/locale/hu/viewer.properties b/www/include/vendor/pdfjs/web/locale/hu/viewer.properties new file mode 100644 index 0000000..93e5cbd --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/hu/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Előző oldal +previous_label=Előző +next.title=Következő oldal +next_label=Tovább + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Oldal +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=összesen: {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} / {{pagesCount}}) + +zoom_out.title=Kicsinyítés +zoom_out_label=Kicsinyítés +zoom_in.title=Nagyítás +zoom_in_label=Nagyítás +zoom.title=Nagyítás +presentation_mode.title=Váltás bemutató módba +presentation_mode_label=Bemutató mód +open_file.title=Fájl megnyitása +open_file_label=Megnyitás +print.title=Nyomtatás +print_label=Nyomtatás +download.title=Letöltés +download_label=Letöltés +save.title=Mentés +save_label=Mentés +bookmark.title=Jelenlegi nézet (másolás vagy megnyitás új ablakban) +bookmark_label=Aktuális nézet + +bookmark1.title=Jelenlegi oldal (webcím megtekintése a jelenlegi oldalról) +bookmark1_label=Jelenlegi oldal + +# Secondary toolbar and context menu +tools.title=Eszközök +tools_label=Eszközök +first_page.title=Ugrás az első oldalra +first_page_label=Ugrás az első oldalra +last_page.title=Ugrás az utolsó oldalra +last_page_label=Ugrás az utolsó oldalra +page_rotate_cw.title=Forgatás az óramutató járásával egyezően +page_rotate_cw_label=Forgatás az óramutató járásával egyezően +page_rotate_ccw.title=Forgatás az óramutató járásával ellentétesen +page_rotate_ccw_label=Forgatás az óramutató járásával ellentétesen + +cursor_text_select_tool.title=Szövegkijelölő eszköz bekapcsolása +cursor_text_select_tool_label=Szövegkijelölő eszköz +cursor_hand_tool.title=Kéz eszköz bekapcsolása +cursor_hand_tool_label=Kéz eszköz + +scroll_page.title=Oldalgörgetés használata +scroll_page_label=Oldalgörgetés +scroll_vertical.title=Függőleges görgetés használata +scroll_vertical_label=Függőleges görgetés +scroll_horizontal.title=Vízszintes görgetés használata +scroll_horizontal_label=Vízszintes görgetés +scroll_wrapped.title=Rácsos elrendezés használata +scroll_wrapped_label=Rácsos elrendezés + +spread_none.title=Ne tapassza össze az oldalakat +spread_none_label=Nincs összetapasztás +spread_odd.title=Lapok összetapasztása, a páratlan számú oldalakkal kezdve +spread_odd_label=Összetapasztás: páratlan +spread_even.title=Lapok összetapasztása, a páros számú oldalakkal kezdve +spread_even_label=Összetapasztás: páros + +# Document properties dialog box +document_properties.title=Dokumentum tulajdonságai… +document_properties_label=Dokumentum tulajdonságai… +document_properties_file_name=Fájlnév: +document_properties_file_size=Fájlméret: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bájt) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bájt) +document_properties_title=Cím: +document_properties_author=Szerző: +document_properties_subject=Tárgy: +document_properties_keywords=Kulcsszavak: +document_properties_creation_date=Létrehozás dátuma: +document_properties_modification_date=Módosítás dátuma: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Létrehozta: +document_properties_producer=PDF előállító: +document_properties_version=PDF verzió: +document_properties_page_count=Oldalszám: +document_properties_page_size=Lapméret: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=álló +document_properties_page_size_orientation_landscape=fekvő +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Jogi információk +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Gyors webes nézet: +document_properties_linearized_yes=Igen +document_properties_linearized_no=Nem +document_properties_close=Bezárás + +print_progress_message=Dokumentum előkészítése nyomtatáshoz… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Mégse + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Oldalsáv be/ki +toggle_sidebar_notification2.title=Oldalsáv be/ki (a dokumentum vázlatot/mellékleteket/rétegeket tartalmaz) +toggle_sidebar_label=Oldalsáv be/ki +document_outline.title=Dokumentum megjelenítése online (dupla kattintás minden elem kinyitásához/összecsukásához) +document_outline_label=Dokumentumvázlat +attachments.title=Mellékletek megjelenítése +attachments_label=Van melléklet +layers.title=Rétegek megjelenítése (dupla kattintás az összes réteg alapértelmezett állapotra visszaállításához) +layers_label=Rétegek +thumbs.title=Bélyegképek megjelenítése +thumbs_label=Bélyegképek +current_outline_item.title=Jelenlegi vázlatelem megkeresése +current_outline_item_label=Jelenlegi vázlatelem +findbar.title=Keresés a dokumentumban +findbar_label=Keresés + +additional_layers=További rétegek +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark={{page}}. oldal +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title={{page}}. oldal +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas={{page}}. oldal bélyegképe + +# Find panel button title and messages +find_input.title=Keresés +find_input.placeholder=Keresés a dokumentumban… +find_previous.title=A kifejezés előző előfordulásának keresése +find_previous_label=Előző +find_next.title=A kifejezés következő előfordulásának keresése +find_next_label=Tovább +find_highlight=Összes kiemelése +find_match_case_label=Kis- és nagybetűk megkülönböztetése +find_match_diacritics_label=Diakritikus jelek +find_entire_word_label=Teljes szavak +find_reached_top=A dokumentum eleje elérve, folytatás a végétől +find_reached_bottom=A dokumentum vége elérve, folytatás az elejétől +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} / {{total}} találat +find_match_count[two]={{current}} / {{total}} találat +find_match_count[few]={{current}} / {{total}} találat +find_match_count[many]={{current}} / {{total}} találat +find_match_count[other]={{current}} / {{total}} találat +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Több mint {{limit}} találat +find_match_count_limit[one]=Több mint {{limit}} találat +find_match_count_limit[two]=Több mint {{limit}} találat +find_match_count_limit[few]=Több mint {{limit}} találat +find_match_count_limit[many]=Több mint {{limit}} találat +find_match_count_limit[other]=Több mint {{limit}} találat +find_not_found=A kifejezés nem található + +# Error panel labels +error_more_info=További tudnivalók +error_less_info=Kevesebb információ +error_close=Bezárás +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Üzenet: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Verem: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fájl: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Sor: {{line}} + +# Predefined zoom values +page_scale_width=Oldalszélesség +page_scale_fit=Teljes oldal +page_scale_auto=Automatikus nagyítás +page_scale_actual=Valódi méret +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Betöltés… +loading_error=Hiba történt a PDF betöltésekor. +invalid_file_error=Érvénytelen vagy sérült PDF fájl. +missing_file_error=Hiányzó PDF fájl. +unexpected_response_error=Váratlan kiszolgálóválasz. + +rendering_error=Hiba történt az oldal feldolgozása közben. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} megjegyzés] +password_label=Adja meg a jelszót a PDF fájl megnyitásához. +password_invalid=Helytelen jelszó. Próbálja újra. +password_ok=OK +password_cancel=Mégse + +printing_not_supported=Figyelmeztetés: Ez a böngésző nem teljesen támogatja a nyomtatást. +printing_not_ready=Figyelmeztetés: A PDF nincs teljesen betöltve a nyomtatáshoz. +web_fonts_disabled=Webes betűkészletek letiltva: nem használhatók a beágyazott PDF betűkészletek. + +# Editor +editor_free_text2.title=Szöveg +editor_free_text2_label=Szöveg +editor_ink2.title=Rajzolás +editor_ink2_label=Rajzolás + +free_text2_default_content=Kezdjen el gépelni… + +# Editor Parameters +editor_free_text_color=Szín +editor_free_text_size=Méret +editor_ink_color=Szín +editor_ink_thickness=Vastagság +editor_ink_opacity=Átlátszatlanság + +# Editor aria +editor_free_text2_aria_label=Szövegszerkesztő +editor_ink2_aria_label=Rajzszerkesztő +editor_ink_canvas_aria_label=Felhasználó által készített kép diff --git a/www/include/vendor/pdfjs/web/locale/hy-AM/viewer.properties b/www/include/vendor/pdfjs/web/locale/hy-AM/viewer.properties new file mode 100644 index 0000000..aa2a22c --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/hy-AM/viewer.properties @@ -0,0 +1,251 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Նախորդ էջը +previous_label=Նախորդը +next.title=Հաջորդ էջը +next_label=Հաջորդը + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Էջ. +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=` {{pagesCount}}-ից +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}}-ը {{pagesCount}})-ից + +zoom_out.title=Փոքրացնել +zoom_out_label=Փոքրացնել +zoom_in.title=Խոշորացնել +zoom_in_label=Խոշորացնել +zoom.title=Մասշտաբ +presentation_mode.title=Անցնել Ներկայացման եղանակին +presentation_mode_label=Ներկայացման եղանակ +open_file.title=Բացել նիշք +open_file_label=Բացել +print.title=Տպել +print_label=Տպել +download.title=Բեռնել +download_label=Բեռնել +bookmark.title=Ընթացիկ տեսքով (պատճենել կամ բացել նոր պատուհանում) +bookmark_label=Ընթացիկ տեսքը + + +# Secondary toolbar and context menu +tools.title=Գործիքներ +tools_label=Գործիքներ +first_page.title=Անցնել առաջին էջին +first_page_label=Անցնել առաջին էջին +last_page.title=Անցնել վերջին էջին +last_page_label=Անցնել վերջին էջին +page_rotate_cw.title=Պտտել ըստ ժամացույցի սլաքի +page_rotate_cw_label=Պտտել ըստ ժամացույցի սլաքի +page_rotate_ccw.title=Պտտել հակառակ ժամացույցի սլաքի +page_rotate_ccw_label=Պտտել հակառակ ժամացույցի սլաքի + +cursor_text_select_tool.title=Միացնել գրույթ ընտրելու գործիքը +cursor_text_select_tool_label=Գրույթը ընտրելու գործիք +cursor_hand_tool.title=Միացնել Ձեռքի գործիքը +cursor_hand_tool_label=Ձեռքի գործիք + +scroll_vertical.title=Օգտագործել ուղղահայաց ոլորում +scroll_vertical_label=Ուղղահայաց ոլորում +scroll_horizontal.title=Օգտագործել հորիզոնական ոլորում +scroll_horizontal_label=Հորիզոնական ոլորում +scroll_wrapped.title=Օգտագործել փաթաթված ոլորում +scroll_wrapped_label=Փաթաթված ոլորում + +spread_none.title=Մի միացեք էջի վերածածկերին +spread_none_label=Չկա վերածածկեր +spread_odd.title=Միացեք էջի վերածածկերին սկսելով՝ կենտ համարակալված էջերով +spread_odd_label=Կենտ վերածածկեր +spread_even.title=Միացեք էջի վերածածկերին սկսելով՝ զույգ համարակալված էջերով +spread_even_label=Զույգ վերածածկեր + +# Document properties dialog box +document_properties.title=Փաստաթղթի հատկությունները… +document_properties_label=Փաստաթղթի հատկությունները… +document_properties_file_name=Նիշքի անունը. +document_properties_file_size=Նիշք չափը. +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} ԿԲ ({{size_b}} բայթ) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} ՄԲ ({{size_b}} բայթ) +document_properties_title=Վերնագիր. +document_properties_author=Հեղինակ․ +document_properties_subject=Վերնագիր. +document_properties_keywords=Հիմնաբառ. +document_properties_creation_date=Ստեղծելու ամսաթիվը. +document_properties_modification_date=Փոփոխելու ամսաթիվը. +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Ստեղծող. +document_properties_producer=PDF-ի հեղինակը. +document_properties_version=PDF-ի տարբերակը. +document_properties_page_count=Էջերի քանակը. +document_properties_page_size=Էջի չափը. +document_properties_page_size_unit_inches=ում +document_properties_page_size_unit_millimeters=մմ +document_properties_page_size_orientation_portrait=ուղղաձիգ +document_properties_page_size_orientation_landscape=հորիզոնական +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Նամակ +document_properties_page_size_name_legal=Օրինական +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Արագ վեբ դիտում․ +document_properties_linearized_yes=Այո +document_properties_linearized_no=Ոչ +document_properties_close=Փակել + +print_progress_message=Նախապատրաստում է փաստաթուղթը տպելուն... +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Չեղարկել + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Բացել/Փակել Կողային վահանակը +toggle_sidebar_label=Բացել/Փակել Կողային վահանակը +document_outline.title=Ցուցադրել փաստաթղթի ուրվագիծը (կրկնակի սեղմեք՝ միավորները ընդարձակելու/կոծկելու համար) +document_outline_label=Փաստաթղթի բովանդակությունը +attachments.title=Ցուցադրել կցորդները +attachments_label=Կցորդներ +thumbs.title=Ցուցադրել Մանրապատկերը +thumbs_label=Մանրապատկերը +findbar.title=Գտնել փաստաթղթում +findbar_label=Որոնում + +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Էջը {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Էջի մանրապատկերը {{page}} + +# Find panel button title and messages +find_input.title=Որոնում +find_input.placeholder=Գտնել փաստաթղթում... +find_previous.title=Գտնել անրահայտության նախորդ հանդիպումը +find_previous_label=Նախորդը +find_next.title=Գտիր արտահայտության հաջորդ հանդիպումը +find_next_label=Հաջորդը +find_highlight=Գունանշել բոլորը +find_match_case_label=Մեծ(փոքր)ատառ հաշվի առնել +find_entire_word_label=Ամբողջ բառերը +find_reached_top=Հասել եք փաստաթղթի վերևին, կշարունակվի ներքևից +find_reached_bottom=Հասել եք փաստաթղթի վերջին, կշարունակվի վերևից +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ հոգնակի(ընդհանուր) ]} +find_match_count[one]={{current}} {{total}}-ի համընկնումից +find_match_count[two]={{current}} {{total}}-ի համընկնումներից +find_match_count[few]={{current}} {{total}}-ի համընկնումներից +find_match_count[many]={{current}} {{total}}-ի համընկնումներից +find_match_count[other]={{current}} {{total}}-ի համընկնումներից +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ հոգնակի (սահմանը) ]} +find_match_count_limit[zero]=Ավելին քան {{limit}} համընկնումները +find_match_count_limit[one]=Ավելին քան {{limit}} համընկնումը +find_match_count_limit[two]=Ավելին քան {{limit}} համընկնումներներ +find_match_count_limit[few]=Ավելին քան {{limit}} համընկնումներներ +find_match_count_limit[many]=Ավելին քան {{limit}} համընկնումներներ +find_match_count_limit[other]=Ավելին քան {{limit}} համընկնումներներ +find_not_found=Արտահայտությունը չգտնվեց + +# Error panel labels +error_more_info=Ավելի շատ տեղեկություն +error_less_info=Քիչ տեղեկություն +error_close=Փակել +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (կառուցումը. {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Գրությունը. {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Շեղջ. {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Ֆայլ. {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Տողը. {{line}} + +# Predefined zoom values +page_scale_width=Էջի լայնքը +page_scale_fit=Ձգել էջը +page_scale_auto=Ինքնաշխատ +page_scale_actual=Իրական չափը +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages + +# Loading indicator messages +loading_error=Սխալ՝ PDF ֆայլը բացելիս։ +invalid_file_error=Սխալ կամ վնասված PDF ֆայլ: +missing_file_error=PDF ֆայլը բացակայում է: +unexpected_response_error=Սպասարկիչի անսպասելի պատասխան: + +rendering_error=Սխալ՝ էջը ստեղծելիս: + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Ծանոթություն] +password_label=Մուտքագրեք PDF-ի գաղտնաբառը: +password_invalid=Գաղտնաբառը սխալ է: Կրկին փորձեք: +password_ok=Լավ +password_cancel=Չեղարկել + +printing_not_supported=Զգուշացում. Տպելը ամբողջությամբ չի աջակցվում դիտարկիչի կողմից։ +printing_not_ready=Զգուշացում. PDF-ը ամբողջությամբ չի բեռնավորվել տպելու համար: +web_fonts_disabled=Վեբ-տառատեսակները անջատված են. հնարավոր չէ օգտագործել ներկառուցված PDF տառատեսակները: + +# Editor + + +# Editor Parameters + +# Editor aria diff --git a/www/include/vendor/pdfjs/web/locale/hye/viewer.properties b/www/include/vendor/pdfjs/web/locale/hye/viewer.properties new file mode 100644 index 0000000..40194da --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/hye/viewer.properties @@ -0,0 +1,252 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Նախորդ էջ +previous_label=Նախորդը +next.title=Յաջորդ էջ +next_label=Յաջորդը + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=էջ +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}}-ից\u0020 +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}}-ը {{pagesCount}})-ից + +zoom_out.title=Փոքրացնել +zoom_out_label=Փոքրացնել +zoom_in.title=Խոշորացնել +zoom_in_label=Խոշորացնել +zoom.title=Խոշորացում +presentation_mode.title=Անցնել ներկայացման եղանակին +presentation_mode_label=Ներկայացման եղանակ +open_file.title=Բացել նիշքը +open_file_label=Բացել +print.title=Տպել +print_label=Տպել +download.title=Բեռնել +download_label=Բեռնել +bookmark.title=Ընթացիկ տեսքով (պատճէնել կամ բացել նոր պատուհանում) +bookmark_label=Ընթացիկ տեսք + +# Secondary toolbar and context menu +tools.title=Գործիքներ +tools_label=Գործիքներ +first_page.title=Գնալ դէպի առաջին էջ +first_page_label=Գնալ դէպի առաջին էջ +last_page.title=Գնալ դէպի վերջին էջ +last_page_label=Գնալ դէպի վերջին էջ +page_rotate_cw.title=Պտտել ժամացոյցի սլաքի ուղղութեամբ +page_rotate_cw_label=Պտտել ժամացոյցի սլաքի ուղղութեամբ +page_rotate_ccw.title=Պտտել ժամացոյցի սլաքի հակառակ ուղղութեամբ +page_rotate_ccw_label=Պտտել ժամացոյցի սլաքի հակառակ ուղղութեամբ + +cursor_text_select_tool.title=Միացնել գրոյթ ընտրելու գործիքը +cursor_text_select_tool_label=Գրուածք ընտրելու գործիք +cursor_hand_tool.title=Միացնել ձեռքի գործիքը +cursor_hand_tool_label=Ձեռքի գործիք + +scroll_page.title=Աւգտագործել էջի ոլորում +scroll_page_label=Էջի ոլորում +scroll_vertical.title=Աւգտագործել ուղղահայեաց ոլորում +scroll_vertical_label=Ուղղահայեաց ոլորում +scroll_horizontal.title=Աւգտագործել հորիզոնական ոլորում +scroll_horizontal_label=Հորիզոնական ոլորում +scroll_wrapped.title=Աւգտագործել փաթաթուած ոլորում +scroll_wrapped_label=Փաթաթուած ոլորում + +spread_none.title=Մի միացէք էջի կոնտեքստում +spread_none_label=Չկայ կոնտեքստ +spread_odd.title=Միացէք էջի կոնտեքստին սկսելով՝ կենտ համարակալուած էջերով +spread_odd_label=Տարաւրինակ կոնտեքստ +spread_even.title=Միացէք էջի կոնտեքստին սկսելով՝ զոյգ համարակալուած էջերով +spread_even_label=Հաւասար վերածածկեր + +# Document properties dialog box +document_properties.title=Փաստաթղթի հատկութիւնները… +document_properties_label=Փաստաթղթի յատկութիւնները… +document_properties_file_name=Նիշքի անունը․ +document_properties_file_size=Նիշք չափը. +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} ԿԲ ({{size_b}} բայթ) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} ՄԲ ({{size_b}} բայթ) +document_properties_title=Վերնագիր +document_properties_author=Հեղինակ․ +document_properties_subject=առարկայ +document_properties_keywords=Հիմնաբառեր +document_properties_creation_date=Ստեղծման ամսաթիւ +document_properties_modification_date=Փոփոխութեան ամսաթիւ. +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Ստեղծող +document_properties_producer=PDF-ի Արտադրողը. +document_properties_version=PDF-ի տարբերակը. +document_properties_page_count=Էջերի քանակը. +document_properties_page_size=Էջի չափը. +document_properties_page_size_unit_inches=ում +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=ուղղաձիգ +document_properties_page_size_orientation_landscape=հորիզոնական +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Նամակ +document_properties_page_size_name_legal=Աւրինական +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Արագ վեբ դիտում․ +document_properties_linearized_yes=Այո +document_properties_linearized_no=Ոչ +document_properties_close=Փակել + +print_progress_message=Նախապատրաստում է փաստաթուղթը տպելուն… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Չեղարկել + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Փոխարկել կողային վահանակը +toggle_sidebar_notification2.title=Փոխանջատել կողմնասիւնը (փաստաթուղթը պարունակում է ուրուագիծ/կցորդներ/շերտեր) +toggle_sidebar_label=Փոխարկել կողային վահանակը +document_outline.title=Ցուցադրել փաստաթղթի ուրուագիծը (կրկնակի սեղմէք՝ միաւորները ընդարձակելու/կոծկելու համար) +document_outline_label=Փաստաթղթի ուրուագիծ +attachments.title=Ցուցադրել կցորդները +attachments_label=Կցորդներ +layers.title=Ցուցադրել շերտերը (կրկնահպել վերակայելու բոլոր շերտերը սկզբնադիր վիճակի) +layers_label=Շերտեր +thumbs.title=Ցուցադրել մանրապատկերը +thumbs_label=Մանրապատկեր +current_outline_item.title=Գտէք ընթացիկ գծագրման տարրը +current_outline_item_label=Ընթացիկ գծագրման տարր +findbar.title=Գտնել փաստաթղթում +findbar_label=Որոնում + +additional_layers=Լրացուցիչ շերտեր +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Էջ {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Էջը {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Էջի մանրապատկերը {{page}} + +# Find panel button title and messages +find_input.title=Որոնում +find_input.placeholder=Գտնել փաստաթղթում… +find_previous.title=Գտնել արտայայտութեան նախորդ արտայայտութիւնը +find_previous_label=Նախորդը +find_next.title=Գտիր արտայայտութեան յաջորդ արտայայտութիւնը +find_next_label=Հաջորդը +find_highlight=Գունանշել բոլորը +find_match_case_label=Հաշուի առնել հանգամանքը +find_match_diacritics_label=Հնչիւնատարբերիչ նշանների համապատասխանեցում +find_entire_word_label=Ամբողջ բառերը +find_reached_top=Հասել եք փաստաթղթի վերեւին,շարունակել ներքեւից +find_reached_bottom=Հասել էք փաստաթղթի վերջին, շարունակել վերեւից +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} {{total}}-ի համընկնումից +find_match_count[two]={{current}} {{total}}-ի համընկնումներից +find_match_count[few]={{current}} {{total}}-ի համընկնումներից +find_match_count[many]={{current}} {{total}}-ի համընկնումներից +find_match_count[other]={{current}} {{total}}-ի համընկնումներից +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Աւելին քան {{limit}} համընկնումները +find_match_count_limit[one]=Աւելին քան {{limit}} համընկնումը +find_match_count_limit[two]=Աւելին քան {{limit}} համընկնումները +find_match_count_limit[few]=Աւելին քան {{limit}} համընկնումները +find_match_count_limit[many]=Աւելին քան {{limit}} համընկնումները +find_match_count_limit[other]=Աւելին քան {{limit}} համընկնումները +find_not_found=Արտայայտութիւնը չգտնուեց + +# Error panel labels +error_more_info=Աւելի շատ տեղեկութիւն +error_less_info=Քիչ տեղեկութիւն +error_close=Փակել +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (կառուցումը. {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Գրութիւնը. {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Շեղջ. {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=նիշք․ {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Տողը. {{line}} +rendering_error=Սխալ է տեղի ունեցել էջի մեկնաբանման ժամանակ + +# Predefined zoom values +page_scale_width=Էջի լայնութիւն +page_scale_fit=Հարմարեցնել էջը +page_scale_auto=Ինքնաշխատ խոշորացում +page_scale_actual=Իրական չափը +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Բեռնում… +loading_error=PDF նիշքը բացելիս սխալ է տեղի ունեցել։ +invalid_file_error=Սխալ կամ վնասուած PDF նիշք։ +missing_file_error=PDF նիշքը բացակաիւմ է։ +unexpected_response_error=Սպասարկիչի անսպասելի պատասխան։ + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Ծանոթութիւն] +password_label=Մուտքագրէք գաղտնաբառը այս PDF նիշքը բացելու համար +password_invalid=Գաղտնաբառը սխալ է: Կրկին փորձէք: +password_ok=Լաւ +password_cancel=Չեղարկել + +printing_not_supported=Զգուշացում. Տպելը ամբողջութեամբ չի աջակցուում զննարկիչի կողմից։ +printing_not_ready=Զգուշացում. PDF֊ը ամբողջութեամբ չի բեռնաւորուել տպելու համար։ +web_fonts_disabled=Վեբ-տառատեսակները անջատուած են. հնարաւոր չէ աւգտագործել ներկառուցուած PDF տառատեսակները։ + diff --git a/www/include/vendor/pdfjs/web/locale/ia/viewer.properties b/www/include/vendor/pdfjs/web/locale/ia/viewer.properties new file mode 100644 index 0000000..5ce89fe --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/ia/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Pagina previe +previous_label=Previe +next.title=Pagina sequente +next_label=Sequente + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Pagina +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=de {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} de {{pagesCount}}) + +zoom_out.title=Distantiar +zoom_out_label=Distantiar +zoom_in.title=Approximar +zoom_in_label=Approximar +zoom.title=Zoom +presentation_mode.title=Excambiar a modo presentation +presentation_mode_label=Modo presentation +open_file.title=Aperir le file +open_file_label=Aperir +print.title=Imprimer +print_label=Imprimer +download.title=Discargar +download_label=Discargar +save.title=Salvar +save_label=Salvar +bookmark.title=Vista actual (copiar o aperir in un nove fenestra) +bookmark_label=Vista actual + +bookmark1.title=Pagina actual (vide le URL del pagina actual) +bookmark1_label=Pagina actual + +# Secondary toolbar and context menu +tools.title=Instrumentos +tools_label=Instrumentos +first_page.title=Ir al prime pagina +first_page_label=Ir al prime pagina +last_page.title=Ir al prime pagina +last_page_label=Ir al prime pagina +page_rotate_cw.title=Rotar in senso horari +page_rotate_cw_label=Rotar in senso horari +page_rotate_ccw.title=Rotar in senso antihorari +page_rotate_ccw_label=Rotar in senso antihorari + +cursor_text_select_tool.title=Activar le instrumento de selection de texto +cursor_text_select_tool_label=Instrumento de selection de texto +cursor_hand_tool.title=Activar le instrumento mano +cursor_hand_tool_label=Instrumento mano + +scroll_page.title=Usar rolamento de pagina +scroll_page_label=Rolamento de pagina +scroll_vertical.title=Usar rolamento vertical +scroll_vertical_label=Rolamento vertical +scroll_horizontal.title=Usar rolamento horizontal +scroll_horizontal_label=Rolamento horizontal +scroll_wrapped.title=Usar rolamento incapsulate +scroll_wrapped_label=Rolamento incapsulate + +spread_none.title=Non junger paginas dual +spread_none_label=Sin paginas dual +spread_odd.title=Junger paginas dual a partir de paginas con numeros impar +spread_odd_label=Paginas dual impar +spread_even.title=Junger paginas dual a partir de paginas con numeros par +spread_even_label=Paginas dual par + +# Document properties dialog box +document_properties.title=Proprietates del documento… +document_properties_label=Proprietates del documento… +document_properties_file_name=Nomine del file: +document_properties_file_size=Dimension de file: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Titulo: +document_properties_author=Autor: +document_properties_subject=Subjecto: +document_properties_keywords=Parolas clave: +document_properties_creation_date=Data de creation: +document_properties_modification_date=Data de modification: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Creator: +document_properties_producer=Productor PDF: +document_properties_version=Version PDF: +document_properties_page_count=Numero de paginas: +document_properties_page_size=Dimension del pagina: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=vertical +document_properties_page_size_orientation_landscape=horizontal +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Littera +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Vista web rapide: +document_properties_linearized_yes=Si +document_properties_linearized_no=No +document_properties_close=Clauder + +print_progress_message=Preparation del documento pro le impression… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cancellar + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Monstrar/celar le barra lateral +toggle_sidebar_notification2.title=Monstrar/celar le barra lateral (le documento contine structura/attachamentos/stratos) +toggle_sidebar_label=Monstrar/celar le barra lateral +document_outline.title=Monstrar le schema del documento (clic duple pro expander/contraher tote le elementos) +document_outline_label=Schema del documento +attachments.title=Monstrar le annexos +attachments_label=Annexos +layers.title=Monstrar stratos (clicca duple pro remontar tote le stratos al stato predefinite) +layers_label=Stratos +thumbs.title=Monstrar le vignettes +thumbs_label=Vignettes +current_outline_item.title=Trovar le elemento de structura actual +current_outline_item_label=Elemento de structura actual +findbar.title=Cercar in le documento +findbar_label=Cercar + +additional_layers=Altere stratos +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Pagina {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Pagina {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Vignette del pagina {{page}} + +# Find panel button title and messages +find_input.title=Cercar +find_input.placeholder=Cercar in le documento… +find_previous.title=Trovar le previe occurrentia del phrase +find_previous_label=Previe +find_next.title=Trovar le successive occurrentia del phrase +find_next_label=Sequente +find_highlight=Evidentiar toto +find_match_case_label=Distinguer majusculas/minusculas +find_match_diacritics_label=Differentiar diacriticos +find_entire_word_label=Parolas integre +find_reached_top=Initio del documento attingite, continuation ab fin +find_reached_bottom=Fin del documento attingite, continuation ab initio +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} de {{total}} concordantia +find_match_count[two]={{current}} de {{total}} concordantias +find_match_count[few]={{current}} de {{total}} concordantias +find_match_count[many]={{current}} de {{total}} concordantias +find_match_count[other]={{current}} de {{total}} concordantias +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Plus de {{limit}} concordantias +find_match_count_limit[one]=Plus de {{limit}} concordantia +find_match_count_limit[two]=Plus de {{limit}} concordantias +find_match_count_limit[few]=Plus de {{limit}} concordantias +find_match_count_limit[many]=Plus de {{limit}} correspondentias +find_match_count_limit[other]=Plus de {{limit}} concordantias +find_not_found=Phrase non trovate + +# Error panel labels +error_more_info=Plus de informationes +error_less_info=Minus de informationes +error_close=Clauder +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Message: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Pila: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=File: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Linea: {{line}} + +# Predefined zoom values +page_scale_width=Plen largor del pagina +page_scale_fit=Pagina integre +page_scale_auto=Zoom automatic +page_scale_actual=Dimension real +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Cargante… +loading_error=Un error occurreva durante que on cargava le file PDF. +invalid_file_error=File PDF corrumpite o non valide. +missing_file_error=File PDF mancante. +unexpected_response_error=Responsa del servitor inexpectate. + +rendering_error=Un error occurreva durante que on processava le pagina. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Annotation] +password_label=Insere le contrasigno pro aperir iste file PDF. +password_invalid=Contrasigno invalide. Per favor retenta. +password_ok=OK +password_cancel=Cancellar + +printing_not_supported=Attention : le impression non es totalmente supportate per ce navigator. +printing_not_ready=Attention: le file PDF non es integremente cargate pro lo poter imprimer. +web_fonts_disabled=Le typos de litteras web es disactivate: impossibile usar le typos de litteras PDF incorporate. + +# Editor +editor_free_text2.title=Texto +editor_free_text2_label=Texto +editor_ink2.title=Designar +editor_ink2_label=Designar + +free_text2_default_content=Comenciar a scriber… + +# Editor Parameters +editor_free_text_color=Color +editor_free_text_size=Dimension +editor_ink_color=Color +editor_ink_thickness=Spissor +editor_ink_opacity=Opacitate + +# Editor aria +editor_free_text2_aria_label=Editor de texto +editor_ink2_aria_label=Editor de designos +editor_ink_canvas_aria_label=Imagine create per le usator diff --git a/www/include/vendor/pdfjs/web/locale/id/viewer.properties b/www/include/vendor/pdfjs/web/locale/id/viewer.properties new file mode 100644 index 0000000..84f84a8 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/id/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Laman Sebelumnya +previous_label=Sebelumnya +next.title=Laman Selanjutnya +next_label=Selanjutnya + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Halaman +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=dari {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} dari {{pagesCount}}) + +zoom_out.title=Perkecil +zoom_out_label=Perkecil +zoom_in.title=Perbesar +zoom_in_label=Perbesar +zoom.title=Perbesaran +presentation_mode.title=Ganti ke Mode Presentasi +presentation_mode_label=Mode Presentasi +open_file.title=Buka Berkas +open_file_label=Buka +print.title=Cetak +print_label=Cetak +download.title=Unduh +download_label=Unduh +save.title=Simpan +save_label=Simpan +bookmark.title=Tampilan Sekarang (salin atau buka di jendela baru) +bookmark_label=Tampilan Sekarang + +bookmark1.title=Laman Saat Ini (Lihat URL dari Laman Sekarang) +bookmark1_label=Laman Saat Ini + +# Secondary toolbar and context menu +tools.title=Alat +tools_label=Alat +first_page.title=Buka Halaman Pertama +first_page_label=Buka Halaman Pertama +last_page.title=Buka Halaman Terakhir +last_page_label=Buka Halaman Terakhir +page_rotate_cw.title=Putar Searah Jarum Jam +page_rotate_cw_label=Putar Searah Jarum Jam +page_rotate_ccw.title=Putar Berlawanan Arah Jarum Jam +page_rotate_ccw_label=Putar Berlawanan Arah Jarum Jam + +cursor_text_select_tool.title=Aktifkan Alat Seleksi Teks +cursor_text_select_tool_label=Alat Seleksi Teks +cursor_hand_tool.title=Aktifkan Alat Tangan +cursor_hand_tool_label=Alat Tangan + +scroll_page.title=Gunakan Pengguliran Laman +scroll_page_label=Pengguliran Laman +scroll_vertical.title=Gunakan Penggeseran Vertikal +scroll_vertical_label=Penggeseran Vertikal +scroll_horizontal.title=Gunakan Penggeseran Horizontal +scroll_horizontal_label=Penggeseran Horizontal +scroll_wrapped.title=Gunakan Penggeseran Terapit +scroll_wrapped_label=Penggeseran Terapit + +spread_none.title=Jangan gabungkan lembar halaman +spread_none_label=Tidak Ada Lembaran +spread_odd.title=Gabungkan lembar lamanan mulai dengan halaman ganjil +spread_odd_label=Lembaran Ganjil +spread_even.title=Gabungkan lembar halaman dimulai dengan halaman genap +spread_even_label=Lembaran Genap + +# Document properties dialog box +document_properties.title=Properti Dokumen… +document_properties_label=Properti Dokumen… +document_properties_file_name=Nama berkas: +document_properties_file_size=Ukuran berkas: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} byte) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} byte) +document_properties_title=Judul: +document_properties_author=Penyusun: +document_properties_subject=Subjek: +document_properties_keywords=Kata Kunci: +document_properties_creation_date=Tanggal Dibuat: +document_properties_modification_date=Tanggal Dimodifikasi: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Pembuat: +document_properties_producer=Pemroduksi PDF: +document_properties_version=Versi PDF: +document_properties_page_count=Jumlah Halaman: +document_properties_page_size=Ukuran Laman: +document_properties_page_size_unit_inches=inci +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=tegak +document_properties_page_size_orientation_landscape=mendatar +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Tampilan Web Kilat: +document_properties_linearized_yes=Ya +document_properties_linearized_no=Tidak +document_properties_close=Tutup + +print_progress_message=Menyiapkan dokumen untuk pencetakan… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Batalkan + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Aktif/Nonaktifkan Bilah Samping +toggle_sidebar_notification2.title=Aktif/Nonaktifkan Bilah Samping (dokumen berisi kerangka/lampiran/lapisan) +toggle_sidebar_label=Aktif/Nonaktifkan Bilah Samping +document_outline.title=Tampilkan Kerangka Dokumen (klik ganda untuk membentangkan/menciutkan semua item) +document_outline_label=Kerangka Dokumen +attachments.title=Tampilkan Lampiran +attachments_label=Lampiran +layers.title=Tampilkan Lapisan (klik ganda untuk mengatur ulang semua lapisan ke keadaan baku) +layers_label=Lapisan +thumbs.title=Tampilkan Miniatur +thumbs_label=Miniatur +current_outline_item.title=Cari Butir Ikhtisar Saat Ini +current_outline_item_label=Butir Ikhtisar Saat Ini +findbar.title=Temukan di Dokumen +findbar_label=Temukan + +additional_layers=Lapisan Tambahan +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Halaman {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Laman {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatur Laman {{page}} + +# Find panel button title and messages +find_input.title=Temukan +find_input.placeholder=Temukan di dokumen… +find_previous.title=Temukan kata sebelumnya +find_previous_label=Sebelumnya +find_next.title=Temukan lebih lanjut +find_next_label=Selanjutnya +find_highlight=Sorot semuanya +find_match_case_label=Cocokkan BESAR/kecil +find_match_diacritics_label=Pencocokan Diakritik +find_entire_word_label=Seluruh teks +find_reached_top=Sampai di awal dokumen, dilanjutkan dari bawah +find_reached_bottom=Sampai di akhir dokumen, dilanjutkan dari atas +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} dari {{total}} hasil +find_match_count[two]={{current}} dari {{total}} hasil +find_match_count[few]={{current}} dari {{total}} hasil +find_match_count[many]={{current}} dari {{total}} hasil +find_match_count[other]={{current}} dari {{total}} hasil +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Ditemukan lebih dari {{limit}} +find_match_count_limit[one]=Ditemukan lebih dari {{limit}} +find_match_count_limit[two]=Ditemukan lebih dari {{limit}} +find_match_count_limit[few]=Ditemukan lebih dari {{limit}} +find_match_count_limit[many]=Ditemukan lebih dari {{limit}} +find_match_count_limit[other]=Ditemukan lebih dari {{limit}} +find_not_found=Frasa tidak ditemukan + +# Error panel labels +error_more_info=Lebih Banyak Informasi +error_less_info=Lebih Sedikit Informasi +error_close=Tutup +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Pesan: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Berkas: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Baris: {{line}} + +# Predefined zoom values +page_scale_width=Lebar Laman +page_scale_fit=Muat Laman +page_scale_auto=Perbesaran Otomatis +page_scale_actual=Ukuran Asli +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Memuat… +loading_error=Galat terjadi saat memuat PDF. +invalid_file_error=Berkas PDF tidak valid atau rusak. +missing_file_error=Berkas PDF tidak ada. +unexpected_response_error=Balasan server yang tidak diharapkan. + +rendering_error=Galat terjadi saat merender laman. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anotasi {{type}}] +password_label=Masukkan sandi untuk membuka berkas PDF ini. +password_invalid=Sandi tidak valid. Silakan coba lagi. +password_ok=Oke +password_cancel=Batal + +printing_not_supported=Peringatan: Pencetakan tidak didukung secara lengkap pada peramban ini. +printing_not_ready=Peringatan: Berkas PDF masih belum dimuat secara lengkap untuk dapat dicetak. +web_fonts_disabled=Font web dinonaktifkan: tidak dapat menggunakan font PDF yang tersemat. + +# Editor +editor_free_text2.title=Teks +editor_free_text2_label=Teks +editor_ink2.title=Gambar +editor_ink2_label=Gambar + +free_text2_default_content=Mulai mengetik… + +# Editor Parameters +editor_free_text_color=Warna +editor_free_text_size=Ukuran +editor_ink_color=Warna +editor_ink_thickness=Ketebalan +editor_ink_opacity=Opasitas + +# Editor aria +editor_free_text2_aria_label=Editor Teks +editor_ink2_aria_label=Editor Gambar +editor_ink_canvas_aria_label=Gambar yang dibuat pengguna diff --git a/www/include/vendor/pdfjs/web/locale/is/viewer.properties b/www/include/vendor/pdfjs/web/locale/is/viewer.properties new file mode 100644 index 0000000..ca21798 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/is/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Fyrri síða +previous_label=Fyrri +next.title=Næsta síða +next_label=Næsti + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Síða +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=af {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} af {{pagesCount}}) + +zoom_out.title=Minnka aðdrátt +zoom_out_label=Minnka aðdrátt +zoom_in.title=Auka aðdrátt +zoom_in_label=Auka aðdrátt +zoom.title=Aðdráttur +presentation_mode.title=Skipta yfir á kynningarham +presentation_mode_label=Kynningarhamur +open_file.title=Opna skrá +open_file_label=Opna +print.title=Prenta +print_label=Prenta +download.title=Hala niður +download_label=Hala niður +save.title=Vista +save_label=Vista +bookmark.title=Núverandi sýn (afritaðu eða opnaðu í nýjum glugga) +bookmark_label=Núverandi sýn + +bookmark1.title=Núverandi síða (Skoða vefslóð frá núverandi síðu) +bookmark1_label=Núverandi síða + +# Secondary toolbar and context menu +tools.title=Verkfæri +tools_label=Verkfæri +first_page.title=Fara á fyrstu síðu +first_page_label=Fara á fyrstu síðu +last_page.title=Fara á síðustu síðu +last_page_label=Fara á síðustu síðu +page_rotate_cw.title=Snúa réttsælis +page_rotate_cw_label=Snúa réttsælis +page_rotate_ccw.title=Snúa rangsælis +page_rotate_ccw_label=Snúa rangsælis + +cursor_text_select_tool.title=Virkja textavalsáhald +cursor_text_select_tool_label=Textavalsáhald +cursor_hand_tool.title=Virkja handarverkfæri +cursor_hand_tool_label=Handarverkfæri + +scroll_page.title=Nota síðuskrun +scroll_page_label=Síðuskrun +scroll_vertical.title=Nota lóðrétt skrun +scroll_vertical_label=Lóðrétt skrun +scroll_horizontal.title=Nota lárétt skrun +scroll_horizontal_label=Lárétt skrun +scroll_wrapped.title=Nota línuskipt síðuskrun +scroll_wrapped_label=Línuskipt síðuskrun + +spread_none.title=Ekki taka þátt í dreifingu síðna +spread_none_label=Engin dreifing +spread_odd.title=Taka þátt í dreifingu síðna með oddatölum +spread_odd_label=Oddatöludreifing +spread_even.title=Taktu þátt í dreifingu síðna með jöfnuntölum +spread_even_label=Jafnatöludreifing + +# Document properties dialog box +document_properties.title=Eiginleikar skjals… +document_properties_label=Eiginleikar skjals… +document_properties_file_name=Skráarnafn: +document_properties_file_size=Skrárstærð: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Titill: +document_properties_author=Hönnuður: +document_properties_subject=Efni: +document_properties_keywords=Stikkorð: +document_properties_creation_date=Búið til: +document_properties_modification_date=Dags breytingar: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Höfundur: +document_properties_producer=PDF framleiðandi: +document_properties_version=PDF útgáfa: +document_properties_page_count=Blaðsíðufjöldi: +document_properties_page_size=Stærð síðu: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=skammsnið +document_properties_page_size_orientation_landscape=langsnið +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Fljótleg vefskoðun: +document_properties_linearized_yes=Já +document_properties_linearized_no=Nei +document_properties_close=Loka + +print_progress_message=Undirbý skjal fyrir prentun… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Hætta við + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Víxla hliðarspjaldi af/á +toggle_sidebar_notification2.title=Víxla hliðarslá (skjal inniheldur yfirlit/viðhengi/lög) +toggle_sidebar_label=Víxla hliðarspjaldi af/á +document_outline.title=Sýna yfirlit skjals (tvísmelltu til að opna/loka öllum hlutum) +document_outline_label=Efnisskipan skjals +attachments.title=Sýna viðhengi +attachments_label=Viðhengi +layers.title=Birta lög (tvísmelltu til að endurstilla öll lög í sjálfgefna stöðu) +layers_label=Lög +thumbs.title=Sýna smámyndir +thumbs_label=Smámyndir +current_outline_item.title=Finna núverandi atriði efnisskipunar +current_outline_item_label=Núverandi atriði efnisskipunar +findbar.title=Leita í skjali +findbar_label=Leita + +additional_layers=Viðbótarlög +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Síða {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Síða {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Smámynd af síðu {{page}} + +# Find panel button title and messages +find_input.title=Leita +find_input.placeholder=Leita í skjali… +find_previous.title=Leita að fyrra tilfelli þessara orða +find_previous_label=Fyrri +find_next.title=Leita að næsta tilfelli þessara orða +find_next_label=Næsti +find_highlight=Lita allt +find_match_case_label=Passa við stafstöðu +find_match_diacritics_label=Passa við broddstafi +find_entire_word_label=Heil orð +find_reached_top=Náði efst í skjal, held áfram neðst +find_reached_bottom=Náði enda skjals, held áfram efst +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} af {{total}} niðurstöðu +find_match_count[two]={{current}} af {{total}} niðurstöðum +find_match_count[few]={{current}} af {{total}} niðurstöðum +find_match_count[many]={{current}} af {{total}} niðurstöðum +find_match_count[other]={{current}} af {{total}} niðurstöðum +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Fleiri en {{limit}} niðurstöður +find_match_count_limit[one]=Fleiri en {{limit}} niðurstaða +find_match_count_limit[two]=Fleiri en {{limit}} niðurstöður +find_match_count_limit[few]=Fleiri en {{limit}} niðurstöður +find_match_count_limit[many]=Fleiri en {{limit}} niðurstöður +find_match_count_limit[other]=Fleiri en {{limit}} niðurstöður +find_not_found=Fann ekki orðið + +# Error panel labels +error_more_info=Meiri upplýsingar +error_less_info=Minni upplýsingar +error_close=Loka +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Skilaboð: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stafli: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Skrá: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Lína: {{line}} + +# Predefined zoom values +page_scale_width=Síðubreidd +page_scale_fit=Passa á síðu +page_scale_auto=Sjálfvirkur aðdráttur +page_scale_actual=Raunstærð +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Hleður… +loading_error=Villa kom upp við að hlaða inn PDF. +invalid_file_error=Ógild eða skemmd PDF skrá. +missing_file_error=Vantar PDF skrá. +unexpected_response_error=Óvænt svar frá netþjóni. + +rendering_error=Upp kom villa við að birta síðuna. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Skýring] +password_label=Sláðu inn lykilorð til að opna þessa PDF skrá. +password_invalid=Ógilt lykilorð. Reyndu aftur. +password_ok=Í lagi +password_cancel=Hætta við + +printing_not_supported=Aðvörun: Prentun er ekki með fyllilegan stuðning á þessum vafra. +printing_not_ready=Aðvörun: Ekki er búið að hlaða inn allri PDF skránni fyrir prentun. +web_fonts_disabled=Vef leturgerðir eru óvirkar: get ekki notað innbyggðar PDF leturgerðir. + +# Editor +editor_free_text2.title=Texti +editor_free_text2_label=Texti +editor_ink2.title=Teikna +editor_ink2_label=Teikna + +free_text2_default_content=Byrjaðu að skrifa… + +# Editor Parameters +editor_free_text_color=Litur +editor_free_text_size=Stærð +editor_ink_color=Litur +editor_ink_thickness=Þykkt +editor_ink_opacity=Ógegnsæi + +# Editor aria +editor_free_text2_aria_label=Textaritill +editor_ink2_aria_label=Teikniritill +editor_ink_canvas_aria_label=Mynd gerð af notanda diff --git a/www/include/vendor/pdfjs/web/locale/it/viewer.properties b/www/include/vendor/pdfjs/web/locale/it/viewer.properties new file mode 100644 index 0000000..c7ae231 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/it/viewer.properties @@ -0,0 +1,217 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +previous.title = Pagina precedente +previous_label = Precedente +next.title = Pagina successiva +next_label = Successiva + +page.title = Pagina +of_pages = di {{pagesCount}} +page_of_pages = ({{pageNumber}} di {{pagesCount}}) + +zoom_out.title = Riduci zoom +zoom_out_label = Riduci zoom +zoom_in.title = Aumenta zoom +zoom_in_label = Aumenta zoom +zoom.title = Zoom +presentation_mode.title = Passa alla modalità presentazione +presentation_mode_label = Modalità presentazione +open_file.title = Apri file +open_file_label = Apri +print.title = Stampa +print_label = Stampa +download.title = Scarica questo documento +download_label = Download +save.title = Salva +save_label = Salva +bookmark.title = Visualizzazione corrente (copia o apri in una nuova finestra) +bookmark_label = Visualizzazione corrente +bookmark1.title = Pagina corrente (mostra URL della pagina corrente) +bookmark1_label = Pagina corrente + +tools.title = Strumenti +tools_label = Strumenti +first_page.title = Vai alla prima pagina +first_page_label = Vai alla prima pagina +last_page.title = Vai all’ultima pagina +last_page_label = Vai all’ultima pagina +page_rotate_cw.title = Ruota in senso orario +page_rotate_cw_label = Ruota in senso orario +page_rotate_ccw.title = Ruota in senso antiorario +page_rotate_ccw_label = Ruota in senso antiorario + +cursor_text_select_tool.title = Attiva strumento di selezione testo +cursor_text_select_tool_label = Strumento di selezione testo +cursor_hand_tool.title = Attiva strumento mano +cursor_hand_tool_label = Strumento mano + +scroll_page.title = Utilizza scorrimento pagine +scroll_page_label = Scorrimento pagine +scroll_vertical.title = Scorri le pagine in verticale +scroll_vertical_label = Scorrimento verticale +scroll_horizontal.title = Scorri le pagine in orizzontale +scroll_horizontal_label = Scorrimento orizzontale +scroll_wrapped.title = Scorri le pagine in verticale, disponendole da sinistra a destra e andando a capo automaticamente +scroll_wrapped_label = Scorrimento con a capo automatico + +spread_none.title = Non raggruppare pagine +spread_none_label = Nessun raggruppamento +spread_odd.title = Crea gruppi di pagine che iniziano con numeri di pagina dispari +spread_odd_label = Raggruppamento dispari +spread_even.title = Crea gruppi di pagine che iniziano con numeri di pagina pari +spread_even_label = Raggruppamento pari + +document_properties.title = Proprietà del documento… +document_properties_label = Proprietà del documento… +document_properties_file_name = Nome file: +document_properties_file_size = Dimensione file: +document_properties_kb = {{size_kb}} kB ({{size_b}} byte) +document_properties_mb = {{size_mb}} MB ({{size_b}} byte) +document_properties_title = Titolo: +document_properties_author = Autore: +document_properties_subject = Oggetto: +document_properties_keywords = Parole chiave: +document_properties_creation_date = Data creazione: +document_properties_modification_date = Data modifica: +document_properties_date_string = {{date}}, {{time}} +document_properties_creator = Autore originale: +document_properties_producer = Produttore PDF: +document_properties_version = Versione PDF: +document_properties_page_count = Conteggio pagine: +document_properties_page_size = Dimensioni pagina: +document_properties_page_size_unit_inches = in +document_properties_page_size_unit_millimeters = mm +document_properties_page_size_orientation_portrait = verticale +document_properties_page_size_orientation_landscape = orizzontale +document_properties_page_size_name_a3 = A3 +document_properties_page_size_name_a4 = A4 +document_properties_page_size_name_letter = Lettera +document_properties_page_size_name_legal = Legale +document_properties_page_size_dimension_string = {{width}} × {{height}} {{unit}} ({{orientation}}) +document_properties_page_size_dimension_name_string = {{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +document_properties_linearized = Visualizzazione web veloce: +document_properties_linearized_yes = Sì +document_properties_linearized_no = No +document_properties_close = Chiudi + +print_progress_message = Preparazione documento per la stampa… +print_progress_percent = {{progress}}% +print_progress_close = Annulla + +toggle_sidebar.title = Attiva/disattiva barra laterale +toggle_sidebar_notification2.title = Attiva/disattiva barra laterale (il documento contiene struttura/allegati/livelli) +toggle_sidebar_label = Attiva/disattiva barra laterale +document_outline.title = Visualizza la struttura del documento (doppio clic per visualizzare/comprimere tutti gli elementi) +document_outline_label = Struttura documento +attachments.title = Visualizza allegati +attachments_label = Allegati +layers.title = Visualizza livelli (doppio clic per ripristinare tutti i livelli allo stato predefinito) +layers_label = Livelli +thumbs.title = Mostra le miniature +thumbs_label = Miniature +current_outline_item.title = Trova elemento struttura corrente +current_outline_item_label = Elemento struttura corrente +findbar.title = Trova nel documento +findbar_label = Trova + +additional_layers = Livelli aggiuntivi +page_landmark = Pagina {{page}} +thumb_page_title = Pagina {{page}} +thumb_page_canvas = Miniatura della pagina {{page}} + +find_input.title = Trova +find_input.placeholder = Trova nel documento… +find_previous.title = Trova l’occorrenza precedente del testo da cercare +find_previous_label = Precedente +find_next.title = Trova l’occorrenza successiva del testo da cercare +find_next_label = Successivo +find_highlight = Evidenzia +find_match_case_label = Maiuscole/minuscole +find_match_diacritics_label = Segni diacritici +find_entire_word_label = Parole intere +find_reached_top = Raggiunto l’inizio della pagina, continua dalla fine +find_reached_bottom = Raggiunta la fine della pagina, continua dall’inizio +find_match_count = {[ plural(total) ]} +find_match_count[one] = {{current}} di {{total}} corrispondenza +find_match_count[two] = {{current}} di {{total}} corrispondenze +find_match_count[few] = {{current}} di {{total}} corrispondenze +find_match_count[many] = {{current}} di {{total}} corrispondenze +find_match_count[other] = {{current}} di {{total}} corrispondenze +find_match_count_limit = {[ plural(limit) ]} +find_match_count_limit[zero] = Più di {{limit}} corrispondenze +find_match_count_limit[one] = Più di {{limit}} corrispondenza +find_match_count_limit[two] = Più di {{limit}} corrispondenze +find_match_count_limit[few] = Più di {{limit}} corrispondenze +find_match_count_limit[many] = Più di {{limit}} corrispondenze +find_match_count_limit[other] = Più di {{limit}} corrispondenze +find_not_found = Testo non trovato + +error_more_info = Ulteriori informazioni +error_less_info = Nascondi dettagli +error_close = Chiudi +error_version_info = PDF.js v{{version}} (build: {{build}}) +error_message = Messaggio: {{message}} +error_stack = Stack: {{stack}} +error_file = File: {{file}} +error_line = Riga: {{line}} +rendering_error = Si è verificato un errore durante il rendering della pagina. + +page_scale_width = Larghezza pagina +page_scale_fit = Adatta a una pagina +page_scale_auto = Zoom automatico +page_scale_actual = Dimensioni effettive +page_scale_percent = {{scale}}% + +loading = Caricamento in corso… +loading_error = Si è verificato un errore durante il caricamento del PDF. +invalid_file_error = File PDF non valido o danneggiato. +missing_file_error = File PDF non disponibile. +unexpected_response_error = Risposta imprevista del server + +annotation_date_string = {{date}}, {{time}} + +text_annotation_type.alt = [Annotazione: {{type}}] +password_label = Inserire la password per aprire questo file PDF. +password_invalid = Password non corretta. Riprovare. +password_ok = OK +password_cancel = Annulla + +printing_not_supported = Attenzione: la stampa non è completamente supportata da questo browser. +printing_not_ready = Attenzione: il PDF non è ancora stato caricato completamente per la stampa. +web_fonts_disabled = I web font risultano disattivati: impossibile utilizzare i caratteri incorporati nel PDF. + +# Editor +editor_free_text2.title = Testo +editor_free_text2_label = Testo +editor_ink2.title = Disegno +editor_ink2_label = Disegno + +free_text2_default_content = Inizia a digitare… + +# Editor Parameters +editor_free_text_color = Colore +editor_free_text_size = Dimensione +editor_ink_color = Colore +editor_ink_thickness = Spessore +editor_ink_opacity = Opacità + +# Editor aria +editor_free_text2_aria_label = Editor di testo +editor_ink2_aria_label = Editor disegni +editor_ink_canvas_aria_label = Immagine creata dall’utente diff --git a/www/include/vendor/pdfjs/web/locale/ja/viewer.properties b/www/include/vendor/pdfjs/web/locale/ja/viewer.properties new file mode 100644 index 0000000..82d2889 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/ja/viewer.properties @@ -0,0 +1,279 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=前のページへ戻ります +previous_label=前へ +next.title=次のページへ進みます +next_label=次へ + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=ページ +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=/ {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} / {{pagesCount}}) + +zoom_out.title=表示を縮小します +zoom_out_label=縮小 +zoom_in.title=表示を拡大します +zoom_in_label=拡大 +zoom.title=拡大/縮小 +presentation_mode.title=プレゼンテーションモードに切り替えます +presentation_mode_label=プレゼンテーションモード +open_file.title=ファイルを開きます +open_file_label=開く +print.title=印刷します +print_label=印刷 +download.title=ダウンロードします +download_label=ダウンロード +save.title=保存します +save_label=保存 +bookmark.title=現在のビューの URL です (コピーまたは新しいウィンドウに開く) +bookmark_label=現在のビュー + +bookmark1.title=現在のページの URL です (現在のページを表示する URL) +bookmark1_label=現在のページ + +# Secondary toolbar and context menu +tools.title=ツール +tools_label=ツール +first_page.title=最初のページへ移動します +first_page_label=最初のページへ移動 +last_page.title=最後のページへ移動します +last_page_label=最後のページへ移動 +page_rotate_cw.title=ページを右へ回転します +page_rotate_cw_label=右回転 +page_rotate_ccw.title=ページを左へ回転します +page_rotate_ccw_label=左回転 + +cursor_text_select_tool.title=テキスト選択ツールを有効にします +cursor_text_select_tool_label=テキスト選択ツール +cursor_hand_tool.title=手のひらツールを有効にします +cursor_hand_tool_label=手のひらツール + +scroll_page.title=ページ単位でスクロールします +scroll_page_label=ページ単位でスクロール +scroll_vertical.title=縦スクロールにします +scroll_vertical_label=縦スクロール +scroll_horizontal.title=横スクロールにします +scroll_horizontal_label=横スクロール +scroll_wrapped.title=折り返しスクロールにします +scroll_wrapped_label=折り返しスクロール + +spread_none.title=見開きにしません +spread_none_label=見開きにしない +spread_odd.title=奇数ページ開始で見開きにします +spread_odd_label=奇数ページ見開き +spread_even.title=偶数ページ開始で見開きにします +spread_even_label=偶数ページ見開き + +# Document properties dialog box +document_properties.title=文書のプロパティ... +document_properties_label=文書のプロパティ... +document_properties_file_name=ファイル名: +document_properties_file_size=ファイルサイズ: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} バイト) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} バイト) +document_properties_title=タイトル: +document_properties_author=作成者: +document_properties_subject=件名: +document_properties_keywords=キーワード: +document_properties_creation_date=作成日: +document_properties_modification_date=更新日: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=アプリケーション: +document_properties_producer=PDF 作成: +document_properties_version=PDF のバージョン: +document_properties_page_count=ページ数: +document_properties_page_size=ページサイズ: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=縦 +document_properties_page_size_orientation_landscape=横 +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=レター +document_properties_page_size_name_legal=リーガル +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=ウェブ表示用に最適化: +document_properties_linearized_yes=はい +document_properties_linearized_no=いいえ +document_properties_close=閉じる + +print_progress_message=文書の印刷を準備しています... +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=キャンセル + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=サイドバー表示を切り替えます +toggle_sidebar_notification2.title=サイドバー表示を切り替えます (文書に含まれるアウトライン / 添付 / レイヤー) +toggle_sidebar_label=サイドバーの切り替え +document_outline.title=文書の目次を表示します (ダブルクリックで項目を開閉します) +document_outline_label=文書の目次 +attachments.title=添付ファイルを表示します +attachments_label=添付ファイル +layers.title=レイヤーを表示します (ダブルクリックですべてのレイヤーが初期状態に戻ります) +layers_label=レイヤー +thumbs.title=縮小版を表示します +thumbs_label=縮小版 +current_outline_item.title=現在のアウトライン項目を検索 +current_outline_item_label=現在のアウトライン項目 +findbar.title=文書内を検索します +findbar_label=検索 + +additional_layers=追加レイヤー +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark={{page}} ページ +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title={{page}} ページ +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas={{page}} ページの縮小版 + +# Find panel button title and messages +find_input.title=検索 +find_input.placeholder=文書内を検索... +find_previous.title=現在より前の位置で指定文字列が現れる部分を検索します +find_previous_label=前へ +find_next.title=現在より後の位置で指定文字列が現れる部分を検索します +find_next_label=次へ +find_highlight=すべて強調表示 +find_match_case_label=大文字/小文字を区別 +find_match_diacritics_label=発音区別符号を区別 +find_entire_word_label=単語一致 +find_reached_top=文書先頭に到達したので末尾から続けて検索します +find_reached_bottom=文書末尾に到達したので先頭から続けて検索します +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{total}} 件中 {{current}} 件目 +find_match_count[two]={{total}} 件中 {{current}} 件目 +find_match_count[few]={{total}} 件中 {{current}} 件目 +find_match_count[many]={{total}} 件中 {{current}} 件目 +find_match_count[other]={{total}} 件中 {{current}} 件目 +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]={{limit}} 件以上一致 +find_match_count_limit[one]={{limit}} 件以上一致 +find_match_count_limit[two]={{limit}} 件以上一致 +find_match_count_limit[few]={{limit}} 件以上一致 +find_match_count_limit[many]={{limit}} 件以上一致 +find_match_count_limit[other]={{limit}} 件以上一致 +find_not_found=見つかりませんでした + +# Error panel labels +error_more_info=詳細情報 +error_less_info=詳細情報を隠す +error_close=閉じる +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (ビルド: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=メッセージ: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=スタック: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=ファイル: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=行: {{line}} + +# Predefined zoom values +page_scale_width=幅に合わせる +page_scale_fit=ページのサイズに合わせる +page_scale_auto=自動ズーム +page_scale_actual=実際のサイズ +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=読み込み中... + +# Loading indicator messages +loading_error=PDF の読み込み中にエラーが発生しました。 +invalid_file_error=無効または破損した PDF ファイル。 +missing_file_error=PDF ファイルが見つかりません。 +unexpected_response_error=サーバーから予期せぬ応答がありました。 + +rendering_error=ページのレンダリング中にエラーが発生しました。 + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} 注釈] +password_label=この PDF ファイルを開くためのパスワードを入力してください。 +password_invalid=無効なパスワードです。もう一度やり直してください。 +password_ok=OK +password_cancel=キャンセル + +printing_not_supported=警告: このブラウザーでは印刷が完全にサポートされていません。 +printing_not_ready=警告: PDF を印刷するための読み込みが終了していません。 +web_fonts_disabled=ウェブフォントが無効になっています: 埋め込まれた PDF のフォントを使用できません。 + +# Editor +editor_free_text2.title=フリーテキスト注釈 +editor_free_text2_label=フリーテキスト注釈 +editor_ink2.title=インク注釈 +editor_ink2_label=インク注釈 + +free_text2_default_content=テキストを入力してください... + +# Editor Parameters +editor_free_text_color=色 +editor_free_text_size=サイズ +editor_ink_color=色 +editor_ink_thickness=太さ +editor_ink_opacity=不透明度 + +# Editor aria +editor_free_text2_aria_label=フリーテキスト注釈エディター +editor_ink2_aria_label=インク注釈エディター +editor_ink_canvas_aria_label=ユーザー作成画像 diff --git a/www/include/vendor/pdfjs/web/locale/ka/viewer.properties b/www/include/vendor/pdfjs/web/locale/ka/viewer.properties new file mode 100644 index 0000000..c90514d --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/ka/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=წინა გვერდი +previous_label=წინა +next.title=შემდეგი გვერდი +next_label=შემდეგი + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=გვერდი +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}}-დან +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} {{pagesCount}}-დან) + +zoom_out.title=ზომის შემცირება +zoom_out_label=დაშორება +zoom_in.title=ზომის გაზრდა +zoom_in_label=მოახლოება +zoom.title=ზომა +presentation_mode.title=ჩვენების რეჟიმზე გადართვა +presentation_mode_label=ჩვენების რეჟიმი +open_file.title=ფაილის გახსნა +open_file_label=გახსნა +print.title=ამობეჭდვა +print_label=ამობეჭდვა +download.title=ჩამოტვირთვა +download_label=ჩამოტვირთვა +save.title=შენახვა +save_label=შენახვა +bookmark.title=მიმდინარე ხედი (ასლის აღება ან გახსნა ახალ ფანჯარაში) +bookmark_label=მიმდინარე ხედი + +bookmark1.title=მიმდინარე გვერდი (ბმული ამ გვერდისთვის) +bookmark1_label=მიმდინარე გვერდი + +# Secondary toolbar and context menu +tools.title=ხელსაწყოები +tools_label=ხელსაწყოები +first_page.title=პირველ გვერდზე გადასვლა +first_page_label=პირველ გვერდზე გადასვლა +last_page.title=ბოლო გვერდზე გადასვლა +last_page_label=ბოლო გვერდზე გადასვლა +page_rotate_cw.title=საათის ისრის მიმართულებით შებრუნება +page_rotate_cw_label=მარჯვნივ გადაბრუნება +page_rotate_ccw.title=საათის ისრის საპირისპიროდ შებრუნება +page_rotate_ccw_label=მარცხნივ გადაბრუნება + +cursor_text_select_tool.title=მოსანიშნი მაჩვენებლის გამოყენება +cursor_text_select_tool_label=მოსანიშნი მაჩვენებელი +cursor_hand_tool.title=გადასაადგილებელი მაჩვენებლის გამოყენება +cursor_hand_tool_label=გადასაადგილებელი + +scroll_page.title=გვერდზე გადაადგილების გამოყენება +scroll_page_label=გვერდზე გადაადგილება +scroll_vertical.title=გვერდების შვეულად ჩვენება +scroll_vertical_label=შვეული გადაადგილება +scroll_horizontal.title=გვერდების თარაზულად ჩვენება +scroll_horizontal_label=განივი გადაადგილება +scroll_wrapped.title=გვერდების ცხრილურად ჩვენება +scroll_wrapped_label=ცხრილური გადაადგილება + +spread_none.title=ორ გვერდზე გაშლის გარეშე +spread_none_label=ცალგვერდიანი ჩვენება +spread_odd.title=ორ გვერდზე გაშლა, კენტი გვერდიდან დაწყებული +spread_odd_label=ორ გვერდზე კენტიდან +spread_even.title=ორ გვერდზე გაშლა, ლუწი გვერდიდან დაწყებული +spread_even_label=ორ გვერდზე ლუწიდან + +# Document properties dialog box +document_properties.title=დოკუმენტის შესახებ… +document_properties_label=დოკუმენტის შესახებ… +document_properties_file_name=ფაილის სახელი: +document_properties_file_size=ფაილის მოცულობა: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} კბ ({{size_b}} ბაიტი) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} მბ ({{size_b}} ბაიტი) +document_properties_title=სათაური: +document_properties_author=შემქმნელი: +document_properties_subject=თემა: +document_properties_keywords=საკვანძო სიტყვები: +document_properties_creation_date=შექმნის დრო: +document_properties_modification_date=ჩასწორების დრო: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=გამომცემი: +document_properties_producer=PDF-შემდგენელი: +document_properties_version=PDF-ვერსია: +document_properties_page_count=გვერდები: +document_properties_page_size=გვერდის ზომა: +document_properties_page_size_unit_inches=დუიმი +document_properties_page_size_unit_millimeters=მმ +document_properties_page_size_orientation_portrait=შვეულად +document_properties_page_size_orientation_landscape=თარაზულად +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=მსუბუქი ვებჩვენება: +document_properties_linearized_yes=დიახ +document_properties_linearized_no=არა +document_properties_close=დახურვა + +print_progress_message=დოკუმენტი მზადდება ამოსაბეჭდად… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=გაუქმება + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=გვერდითა ზოლის გამოჩენა/დამალვა +toggle_sidebar_notification2.title=გვერდითი ზოლის გამოჩენა (შეიცავს სარჩევს/დანართს/ფენებს) +toggle_sidebar_label=გვერდითა ზოლის გამოჩენა/დამალვა +document_outline.title=დოკუმენტის სარჩევის ჩვენება (ორმაგი წკაპით თითოეულის ჩამოშლა/აკეცვა) +document_outline_label=დოკუმენტის სარჩევი +attachments.title=დანართების ჩვენება +attachments_label=დანართები +layers.title=ფენების გამოჩენა (ორმაგი წკაპით ყველა ფენის ნაგულისხმევზე დაბრუნება) +layers_label=ფენები +thumbs.title=შეთვალიერება +thumbs_label=ესკიზები +current_outline_item.title=მიმდინარე გვერდის მონახვა სარჩევში +current_outline_item_label=მიმდინარე გვერდი სარჩევში +findbar.title=პოვნა დოკუმენტში +findbar_label=ძიება + +additional_layers=დამატებითი ფენები +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=გვერდი {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=გვერდი {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=გვერდის შეთვალიერება {{page}} + +# Find panel button title and messages +find_input.title=ძიება +find_input.placeholder=პოვნა დოკუმენტში… +find_previous.title=ფრაზის წინა კონტექსტის პოვნა +find_previous_label=წინა +find_next.title=ფრაზის შემდეგი კონტექსტის პოვნა +find_next_label=შემდეგი +find_highlight=ყველას მონიშვნა +find_match_case_label=მთავრულით +find_match_diacritics_label=ნიშნებით +find_entire_word_label=მთლიანი სიტყვები +find_reached_top=მიღწეულია დოკუმენტის დასაწყისი, გრძელდება ბოლოდან +find_reached_bottom=მიღწეულია დოკუმენტის ბოლო, გრძელდება დასაწყისიდან +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} / {{total}} თანხვედრიდან +find_match_count[two]={{current}} / {{total}} თანხვედრიდან +find_match_count[few]={{current}} / {{total}} თანხვედრიდან +find_match_count[many]={{current}} / {{total}} თანხვედრიდან +find_match_count[other]={{current}} / {{total}} თანხვედრიდან +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=არანაკლებ {{limit}} თანხვედრა +find_match_count_limit[one]=არანაკლებ {{limit}} თანხვედრა +find_match_count_limit[two]=არანაკლებ {{limit}} თანხვედრა +find_match_count_limit[few]=არანაკლებ {{limit}} თანხვედრა +find_match_count_limit[many]=არანაკლებ {{limit}} თანხვედრა +find_match_count_limit[other]=არანაკლებ {{limit}} თანხვედრა +find_not_found=ფრაზა ვერ მოიძებნა + +# Error panel labels +error_more_info=ვრცლად +error_less_info=შემოკლებულად +error_close=დახურვა +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=შეტყობინება: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=სტეკი: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=ფაილი: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=ხაზი: {{line}} + +# Predefined zoom values +page_scale_width=გვერდის სიგანეზე +page_scale_fit=მთლიანი გვერდი +page_scale_auto=ავტომატური +page_scale_actual=საწყისი ზომა +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=ჩატვირთვა… +loading_error=შეცდომა, PDF-ფაილის ჩატვირთვისას. +invalid_file_error=არამართებული ან დაზიანებული PDF-ფაილი. +missing_file_error=ნაკლული PDF-ფაილი. +unexpected_response_error=სერვერის მოულოდნელი პასუხი. + +rendering_error=შეცდომა, გვერდის ჩვენებისას. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} შენიშვნა] +password_label=შეიყვანეთ პაროლი PDF-ფაილის გასახსნელად. +password_invalid=არასწორი პაროლი. გთხოვთ, სცადოთ ხელახლა. +password_ok=კარგი +password_cancel=გაუქმება + +printing_not_supported=გაფრთხილება: ამობეჭდვა ამ ბრაუზერში არაა სრულად მხარდაჭერილი. +printing_not_ready=გაფრთხილება: PDF სრულად ჩატვირთული არაა, ამობეჭდვის დასაწყებად. +web_fonts_disabled=ვებშრიფტები გამორთულია: ჩაშენებული PDF-შრიფტების გამოყენება ვერ ხერხდება. + +# Editor +editor_free_text2.title=წარწერა +editor_free_text2_label=ტექსტი +editor_ink2.title=დახატვა +editor_ink2_label=დახატვა + +free_text2_default_content=აკრიფეთ… + +# Editor Parameters +editor_free_text_color=ფერი +editor_free_text_size=ზომა +editor_ink_color=ფერი +editor_ink_thickness=სისქე +editor_ink_opacity=გაუმჭვირვალობა + +# Editor aria +editor_free_text2_aria_label=ნაწერის ჩასწორება +editor_ink2_aria_label=ნახატის ჩასწორება +editor_ink_canvas_aria_label=მომხმარებლის შექმნილი სურათი diff --git a/www/include/vendor/pdfjs/web/locale/kab/viewer.properties b/www/include/vendor/pdfjs/web/locale/kab/viewer.properties new file mode 100644 index 0000000..3ebfd31 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/kab/viewer.properties @@ -0,0 +1,279 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Asebter azewwar +previous_label=Azewwar +next.title=Asebter d-iteddun +next_label=Ddu ɣer zdat + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Asebter +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=ɣef {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} n {{pagesCount}}) + +zoom_out.title=Semẓi +zoom_out_label=Semẓi +zoom_in.title=Semɣeṛ +zoom_in_label=Semɣeṛ +zoom.title=Semɣeṛ/Semẓi +presentation_mode.title=Uɣal ɣer Uskar Tihawt +presentation_mode_label=Askar Tihawt +open_file.title=Ldi Afaylu +open_file_label=Ldi +print.title=Siggez +print_label=Siggez +download.title=Sader +download_label=Azdam +save.title=Sekles +save_label=Sekles +bookmark.title=Timeẓri tamirant (nɣel neɣ ldi ɣef usfaylu amaynut) +bookmark_label=Askan amiran + +bookmark1.title=Asebter amiran (Sken-d tansa URL seg usebter amiran) +bookmark1_label=Asebter amiran + +# Secondary toolbar and context menu +tools.title=Ifecka +tools_label=Ifecka +first_page.title=Ddu ɣer usebter amezwaru +first_page_label=Ddu ɣer usebter amezwaru +last_page.title=Ddu ɣer usebter aneggaru +last_page_label=Ddu ɣer usebter aneggaru +page_rotate_cw.title=Tuzzya tusrigt +page_rotate_cw_label=Tuzzya tusrigt +page_rotate_ccw.title=Tuzzya amgal-usrig +page_rotate_ccw_label=Tuzzya amgal-usrig + +cursor_text_select_tool.title=Rmed afecku n tefrant n uḍris +cursor_text_select_tool_label=Afecku n tefrant n uḍris +cursor_hand_tool.title=Rmed afecku afus +cursor_hand_tool_label=Afecku afus + +scroll_page.title=Seqdec adrurem n usebter +scroll_page_label=Adrurem n usebter +scroll_vertical.title=Seqdec adrurem ubdid +scroll_vertical_label=Adrurem ubdid +scroll_horizontal.title=Seqdec adrurem aglawan +scroll_horizontal_label=Adrurem aglawan +scroll_wrapped.title=Seqdec adrurem yuẓen +scroll_wrapped_label=Adrurem yuẓen + +spread_none.title=Ur sedday ara isiɣzaf n usebter +spread_none_label=Ulac isiɣzaf +spread_odd.title=Seddu isiɣzaf n usebter ibeddun s yisebtar irayuganen +spread_odd_label=Isiɣzaf irayuganen +spread_even.title=Seddu isiɣzaf n usebter ibeddun s yisebtar iyuganen +spread_even_label=Isiɣzaf iyuganen + +# Document properties dialog box +document_properties.title=Taɣaṛa n isemli… +document_properties_label=Taɣaṛa n isemli… +document_properties_file_name=Isem n ufaylu: +document_properties_file_size=Teɣzi n ufaylu: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KAṬ ({{size_b}} ibiten) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MAṬ ({{size_b}} iṭamḍanen) +document_properties_title=Azwel: +document_properties_author=Ameskar: +document_properties_subject=Amgay: +document_properties_keywords=Awalen n tsaruţ +document_properties_creation_date=Azemz n tmerna: +document_properties_modification_date=Azemz n usnifel: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Yerna-t: +document_properties_producer=Afecku n uselket PDF: +document_properties_version=Lqem PDF: +document_properties_page_count=Amḍan n yisebtar: +document_properties_page_size=Tuγzi n usebter: +document_properties_page_size_unit_inches=deg +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=s teɣzi +document_properties_page_size_orientation_landscape=s tehri +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Asekkil +document_properties_page_size_name_legal=Usḍif +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Taskant Web taruradt: +document_properties_linearized_yes=Ih +document_properties_linearized_no=Ala +document_properties_close=Mdel + +print_progress_message=Aheggi i usiggez n isemli… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Sefsex + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Sken/Fer agalis adisan +toggle_sidebar_notification2.title=Ffer/Sekn agalis adisan (isemli yegber aɣawas/ticeqqufin yeddan/tissiwin) +toggle_sidebar_label=Sken/Fer agalis adisan +document_outline.title=Sken isemli (Senned snat tikal i wesemɣer/Afneẓ n iferdisen meṛṛa) +document_outline_label=Isɣalen n isebtar +attachments.title=Sken ticeqqufin yeddan +attachments_label=Ticeqqufin yeddan +layers.title=Skeen tissiwin (sit sin yiberdan i uwennez n meṛṛa tissiwin ɣer waddad amezwer) +layers_label=Tissiwin +thumbs.title=Sken tanfult. +thumbs_label=Tinfulin +current_outline_item.title=Af-d aferdis n uɣawas amiran +current_outline_item_label=Aferdis n uɣawas amiran +findbar.title=Nadi deg isemli +findbar_label=Nadi + +additional_layers=Tissiwin-nniḍen +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Asebter {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Asebter {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Tanfult n usebter {{page}} + +# Find panel button title and messages +find_input.title=Nadi +find_input.placeholder=Nadi deg isemli… +find_previous.title=Aff-d tamseḍriwt n twinest n deffir +find_previous_label=Azewwar +find_next.title=Aff-d timseḍriwt n twinest d-iteddun +find_next_label=Ddu ɣer zdat +find_highlight=Err izirig imaṛṛa +find_match_case_label=Qadeṛ amasal n isekkilen +find_match_diacritics_label=Qadeṛ ifeskilen +find_entire_word_label=Awalen iččuranen +find_reached_top=Yabbeḍ s afella n usebter, tuɣalin s wadda +find_reached_bottom=Tebḍeḍ s adda n usebter, tuɣalin s afella +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} seg {{total}} n tmeɣṛuḍin +find_match_count[two]={{current}} seg {{total}} n tmeɣṛuḍin +find_match_count[few]={{current}} seg {{total}} n tmeɣṛuḍin +find_match_count[many]={{current}} seg {{total}} n tmeɣṛuḍin +find_match_count[other]={{current}} seg {{total}} n tmeɣṛuḍin +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Ugar n {{limit}} n tmeɣṛuḍin +find_match_count_limit[one]=Ugar n {{limit}} n tmeɣṛuḍin +find_match_count_limit[two]=Ugar n {{limit}} n tmeɣṛuḍin +find_match_count_limit[few]=Ugar n {{limit}} n tmeɣṛuḍin +find_match_count_limit[many]=Ugar n {{limit}} n tmeɣṛuḍin +find_match_count_limit[other]=Ugar n {{limit}} n tmeɣṛuḍin +find_not_found=Ulac tawinest + +# Error panel labels +error_more_info=Ugar n telɣut +error_less_info=Drus n isalen +error_close=Mdel +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Izen: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Tanebdant: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Afaylu: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Izirig: {{line}} + +# Predefined zoom values +page_scale_width=Tehri n usebter +page_scale_fit=Asebter imaṛṛa +page_scale_auto=Asemɣeṛ/Asemẓi awurman +page_scale_actual=Teɣzi tilawt +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Asali… + +# Loading indicator messages +loading_error=Teḍra-d tuccḍa deg alluy n PDF: +invalid_file_error=Afaylu PDF arameɣtu neɣ yexṣeṛ. +missing_file_error=Ulac afaylu PDF. +unexpected_response_error=Aqeddac yerra-d yir tiririt ur nettwaṛǧi ara. + +rendering_error=Teḍra-d tuccḍa deg uskan n usebter. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Tabzimt {{type}}] +password_label=Sekcem awal uffir akken ad ldiḍ afaylu-yagi PDF +password_invalid=Awal uffir mačči d ameɣtu, Ɛreḍ tikelt-nniḍen. +password_ok=IH +password_cancel=Sefsex + +printing_not_supported=Ɣuṛ-k: Asiggez ur ittusefrak ara yakan imaṛṛa deg iminig-a. +printing_not_ready=Ɣuṛ-k: Afaylu PDF ur d-yuli ara imeṛṛa akken ad ittusiggez. +web_fonts_disabled=Tisefsiyin web ttwassensent; D awezɣi useqdec n tsefsiyin yettwarnan ɣer PDF. + +# Editor +editor_free_text2.title=Aḍris +editor_free_text2_label=Aḍris +editor_ink2.title=Suneɣ +editor_ink2_label=Suneɣ + +free_text2_default_content=Bdu tira... + +# Editor Parameters +editor_free_text_color=Initen +editor_free_text_size=Teɣzi +editor_ink_color=Ini +editor_ink_thickness=Tuzert +editor_ink_opacity=Tebrek + +# Editor aria +editor_free_text2_aria_label=Amaẓrag n uḍris +editor_ink2_aria_label=Amaẓrag n usuneɣ +editor_ink_canvas_aria_label=Tugna yettwarnan sɣur useqdac diff --git a/www/include/vendor/pdfjs/web/locale/kk/viewer.properties b/www/include/vendor/pdfjs/web/locale/kk/viewer.properties new file mode 100644 index 0000000..ac1fa65 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/kk/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Алдыңғы парақ +previous_label=Алдыңғысы +next.title=Келесі парақ +next_label=Келесі + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Парақ +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}} ішінен +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=(парақ {{pageNumber}}, {{pagesCount}} ішінен) + +zoom_out.title=Кішірейту +zoom_out_label=Кішірейту +zoom_in.title=Үлкейту +zoom_in_label=Үлкейту +zoom.title=Масштаб +presentation_mode.title=Презентация режиміне ауысу +presentation_mode_label=Презентация режимі +open_file.title=Файлды ашу +open_file_label=Ашу +print.title=Баспаға шығару +print_label=Баспаға шығару +download.title=Жүктеп алу +download_label=Жүктеп алу +save.title=Сақтау +save_label=Сақтау +bookmark.title=Ағымдағы көрініс (көшіру не жаңа терезеде ашу) +bookmark_label=Ағымдағы көрініс + +bookmark1.title=Ағымдағы бет (Ағымдағы беттен URL адресін көру) +bookmark1_label=Ағымдағы бет + +# Secondary toolbar and context menu +tools.title=Құралдар +tools_label=Құралдар +first_page.title=Алғашқы параққа өту +first_page_label=Алғашқы параққа өту +last_page.title=Соңғы параққа өту +last_page_label=Соңғы параққа өту +page_rotate_cw.title=Сағат тілі бағытымен айналдыру +page_rotate_cw_label=Сағат тілі бағытымен бұру +page_rotate_ccw.title=Сағат тілі бағытына қарсы бұру +page_rotate_ccw_label=Сағат тілі бағытына қарсы бұру + +cursor_text_select_tool.title=Мәтінді таңдау құралын іске қосу +cursor_text_select_tool_label=Мәтінді таңдау құралы +cursor_hand_tool.title=Қол құралын іске қосу +cursor_hand_tool_label=Қол құралы + +scroll_page.title=Беттерді айналдыруды пайдалану +scroll_page_label=Беттерді айналдыру +scroll_vertical.title=Вертикалды айналдыруды қолдану +scroll_vertical_label=Вертикалды айналдыру +scroll_horizontal.title=Горизонталды айналдыруды қолдану +scroll_horizontal_label=Горизонталды айналдыру +scroll_wrapped.title=Масштабталатын айналдыруды қолдану +scroll_wrapped_label=Масштабталатын айналдыру + +spread_none.title=Жазық беттер режимін қолданбау +spread_none_label=Жазық беттер режимсіз +spread_odd.title=Жазық беттер тақ нөмірлі беттерден басталады +spread_odd_label=Тақ нөмірлі беттер сол жақтан +spread_even.title=Жазық беттер жұп нөмірлі беттерден басталады +spread_even_label=Жұп нөмірлі беттер сол жақтан + +# Document properties dialog box +document_properties.title=Құжат қасиеттері… +document_properties_label=Құжат қасиеттері… +document_properties_file_name=Файл аты: +document_properties_file_size=Файл өлшемі: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} КБ ({{size_b}} байт) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} МБ ({{size_b}} байт) +document_properties_title=Тақырыбы: +document_properties_author=Авторы: +document_properties_subject=Тақырыбы: +document_properties_keywords=Кілт сөздер: +document_properties_creation_date=Жасалған күні: +document_properties_modification_date=Түзету күні: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Жасаған: +document_properties_producer=PDF өндірген: +document_properties_version=PDF нұсқасы: +document_properties_page_count=Беттер саны: +document_properties_page_size=Бет өлшемі: +document_properties_page_size_unit_inches=дюйм +document_properties_page_size_unit_millimeters=мм +document_properties_page_size_orientation_portrait=тік +document_properties_page_size_orientation_landscape=жатық +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Жылдам Web көрінісі: +document_properties_linearized_yes=Иә +document_properties_linearized_no=Жоқ +document_properties_close=Жабу + +print_progress_message=Құжатты баспаға шығару үшін дайындау… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Бас тарту + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Бүйір панелін көрсету/жасыру +toggle_sidebar_notification2.title=Бүйір панелін көрсету/жасыру (құжатта құрылымы/салынымдар/қабаттар бар) +toggle_sidebar_label=Бүйір панелін көрсету/жасыру +document_outline.title=Құжат құрылымын көрсету (барлық нәрселерді жазық қылу/жинау үшін қос шерту керек) +document_outline_label=Құжат құрамасы +attachments.title=Салынымдарды көрсету +attachments_label=Салынымдар +layers.title=Қабаттарды көрсету (барлық қабаттарды бастапқы күйге келтіру үшін екі рет шертіңіз) +layers_label=Қабаттар +thumbs.title=Кіші көріністерді көрсету +thumbs_label=Кіші көріністер +current_outline_item.title=Құрылымның ағымдағы элементін табу +current_outline_item_label=Құрылымның ағымдағы элементі +findbar.title=Құжаттан табу +findbar_label=Табу + +additional_layers=Қосымша қабаттар +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Бет {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title={{page}} парағы +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas={{page}} парағы үшін кіші көрінісі + +# Find panel button title and messages +find_input.title=Табу +find_input.placeholder=Құжаттан табу… +find_previous.title=Осы сөздердің мәтіннен алдыңғы кездесуін табу +find_previous_label=Алдыңғысы +find_next.title=Осы сөздердің мәтіннен келесі кездесуін табу +find_next_label=Келесі +find_highlight=Барлығын түспен ерекшелеу +find_match_case_label=Регистрді ескеру +find_match_diacritics_label=Диакритиканы ескеру +find_entire_word_label=Сөздер толығымен +find_reached_top=Құжаттың басына жеттік, соңынан бастап жалғастырамыз +find_reached_bottom=Құжаттың соңына жеттік, басынан бастап жалғастырамыз +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} / {{total}} сәйкестік +find_match_count[two]={{current}} / {{total}} сәйкестік +find_match_count[few]={{current}} / {{total}} сәйкестік +find_match_count[many]={{current}} / {{total}} сәйкестік +find_match_count[other]={{current}} / {{total}} сәйкестік +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]={{limit}} сәйкестіктен көп +find_match_count_limit[one]={{limit}} сәйкестіктен көп +find_match_count_limit[two]={{limit}} сәйкестіктен көп +find_match_count_limit[few]={{limit}} сәйкестіктен көп +find_match_count_limit[many]={{limit}} сәйкестіктен көп +find_match_count_limit[other]={{limit}} сәйкестіктен көп +find_not_found=Сөз(дер) табылмады + +# Error panel labels +error_more_info=Көбірек ақпарат +error_less_info=Азырақ ақпарат +error_close=Жабу +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (жинақ: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Хабарлама: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Стек: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Файл: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Жол: {{line}} + +# Predefined zoom values +page_scale_width=Парақ ені +page_scale_fit=Парақты сыйдыру +page_scale_auto=Автомасштабтау +page_scale_actual=Нақты өлшемі +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Жүктелуде… +loading_error=PDF жүктеу кезінде қате кетті. +invalid_file_error=Зақымдалған немесе қате PDF файл. +missing_file_error=PDF файлы жоқ. +unexpected_response_error=Сервердің күтпеген жауабы. + +rendering_error=Парақты өңдеу кезінде қате кетті. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} аңдатпасы] +password_label=Бұл PDF файлын ашу үшін парольді енгізіңіз. +password_invalid=Пароль дұрыс емес. Қайталап көріңіз. +password_ok=ОК +password_cancel=Бас тарту + +printing_not_supported=Ескерту: Баспаға шығаруды бұл браузер толығымен қолдамайды. +printing_not_ready=Ескерту: Баспаға шығару үшін, бұл PDF толығымен жүктеліп алынбады. +web_fonts_disabled=Веб қаріптері сөндірілген: құрамына енгізілген PDF қаріптерін қолдану мүмкін емес. + +# Editor +editor_free_text2.title=Мәтін +editor_free_text2_label=Мәтін +editor_ink2.title=Сурет салу +editor_ink2_label=Сурет салу + +free_text2_default_content=Теруді бастау… + +# Editor Parameters +editor_free_text_color=Түс +editor_free_text_size=Өлшемі +editor_ink_color=Түс +editor_ink_thickness=Қалыңдығы +editor_ink_opacity=Мөлдірсіздігі + +# Editor aria +editor_free_text2_aria_label=Мәтін түзеткіші +editor_ink2_aria_label=Сурет түзеткіші +editor_ink_canvas_aria_label=Пайдаланушы жасаған сурет diff --git a/www/include/vendor/pdfjs/web/locale/km/viewer.properties b/www/include/vendor/pdfjs/web/locale/km/viewer.properties new file mode 100644 index 0000000..9b5fb73 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/km/viewer.properties @@ -0,0 +1,210 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=ទំព័រ​មុន +previous_label=មុន +next.title=ទំព័រ​បន្ទាប់ +next_label=បន្ទាប់ + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=ទំព័រ +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=នៃ {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} នៃ {{pagesCount}}) + +zoom_out.title=​បង្រួម +zoom_out_label=​បង្រួម +zoom_in.title=​ពង្រីក +zoom_in_label=​ពង្រីក +zoom.title=ពង្រីក +presentation_mode.title=ប្ដូរ​ទៅ​របៀប​បទ​បង្ហាញ +presentation_mode_label=របៀប​បទ​បង្ហាញ +open_file.title=បើក​ឯកសារ +open_file_label=បើក +print.title=បោះពុម្ព +print_label=បោះពុម្ព +download.title=ទាញ​យក +download_label=ទាញ​យក +bookmark.title=ទិដ្ឋភាព​បច្ចុប្បន្ន (ចម្លង ឬ​បើក​នៅ​ក្នុង​បង្អួច​ថ្មី) +bookmark_label=ទិដ្ឋភាព​បច្ចុប្បន្ន + +# Secondary toolbar and context menu +tools.title=ឧបករណ៍ +tools_label=ឧបករណ៍ +first_page.title=ទៅកាន់​ទំព័រ​ដំបូង​ +first_page_label=ទៅកាន់​ទំព័រ​ដំបូង​ +last_page.title=ទៅកាន់​ទំព័រ​ចុងក្រោយ​ +last_page_label=ទៅកាន់​ទំព័រ​ចុងក្រោយ +page_rotate_cw.title=បង្វិល​ស្រប​ទ្រនិច​នាឡិកា +page_rotate_cw_label=បង្វិល​ស្រប​ទ្រនិច​នាឡិកា +page_rotate_ccw.title=បង្វិល​ច្រាស​ទ្រនិច​នាឡិកា​​ +page_rotate_ccw_label=បង្វិល​ច្រាស​ទ្រនិច​នាឡិកា​​ + +cursor_text_select_tool.title=បើក​ឧបករណ៍​ជ្រើស​អត្ថបទ +cursor_text_select_tool_label=ឧបករណ៍​ជ្រើស​អត្ថបទ +cursor_hand_tool.title=បើក​ឧបករណ៍​ដៃ +cursor_hand_tool_label=ឧបករណ៍​ដៃ + + + +# Document properties dialog box +document_properties.title=លក្ខណ​សម្បត្តិ​ឯកសារ… +document_properties_label=លក្ខណ​សម្បត្តិ​ឯកសារ… +document_properties_file_name=ឈ្មោះ​ឯកសារ៖ +document_properties_file_size=ទំហំ​ឯកសារ៖ +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} បៃ) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} បៃ) +document_properties_title=ចំណងជើង៖ +document_properties_author=អ្នក​និពន្ធ៖ +document_properties_subject=ប្រធានបទ៖ +document_properties_keywords=ពាក្យ​គន្លឹះ៖ +document_properties_creation_date=កាលបរិច្ឆេទ​បង្កើត៖ +document_properties_modification_date=កាលបរិច្ឆេទ​កែប្រែ៖ +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=អ្នក​បង្កើត៖ +document_properties_producer=កម្មវិធី​បង្កើត PDF ៖ +document_properties_version=កំណែ PDF ៖ +document_properties_page_count=ចំនួន​ទំព័រ៖ +document_properties_page_size_unit_inches=អ៊ីញ +document_properties_page_size_unit_millimeters=មម +document_properties_page_size_orientation_portrait=បញ្ឈរ +document_properties_page_size_orientation_landscape=ផ្តេក +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=សំបុត្រ +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized_yes=បាទ/ចាស +document_properties_linearized_no=ទេ +document_properties_close=បិទ + +print_progress_message=កំពុង​រៀបចំ​ឯកសារ​សម្រាប់​បោះពុម្ព… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=បោះបង់ + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=បិទ/បើក​គ្រាប់​រំកិល +toggle_sidebar_label=បិទ/បើក​គ្រាប់​រំកិល +document_outline.title=បង្ហាញ​គ្រោង​ឯកសារ (ចុច​ទ្វេ​ដង​ដើម្បី​ពង្រីក/បង្រួម​ធាតុ​ទាំងអស់) +document_outline_label=គ្រោង​ឯកសារ +attachments.title=បង្ហាញ​ឯកសារ​ភ្ជាប់ +attachments_label=ឯកសារ​ភ្ជាប់ +thumbs.title=បង្ហាញ​រូបភាព​តូចៗ +thumbs_label=រួបភាព​តូចៗ +findbar.title=រក​នៅ​ក្នុង​ឯកសារ +findbar_label=រក + +# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=ទំព័រ {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=រូបភាព​តូច​របស់​ទំព័រ {{page}} + +# Find panel button title and messages +find_input.title=រក +find_input.placeholder=រក​នៅ​ក្នុង​ឯកសារ... +find_previous.title=រក​ពាក្យ ឬ​ឃ្លា​ដែល​បាន​ជួប​មុន +find_previous_label=មុន +find_next.title=រក​ពាក្យ ឬ​ឃ្លា​ដែល​បាន​ជួប​បន្ទាប់ +find_next_label=បន្ទាប់ +find_highlight=បន្លិច​ទាំងអស់ +find_match_case_label=ករណី​ដំណូច +find_reached_top=បាន​បន្ត​ពី​ខាង​ក្រោម ទៅ​ដល់​ខាង​​លើ​នៃ​ឯកសារ +find_reached_bottom=បាន​បន្ត​ពី​ខាងលើ ទៅដល់​ចុង​​នៃ​ឯកសារ +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_not_found=រក​មិន​ឃើញ​ពាក្យ ឬ​ឃ្លា + +# Error panel labels +error_more_info=ព័ត៌មាន​បន្ថែម +error_less_info=ព័ត៌មាន​តិចតួច +error_close=បិទ +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=សារ ៖ {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=ជង់ ៖ {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=ឯកសារ ៖ {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=ជួរ ៖ {{line}} +rendering_error=មាន​កំហុស​បាន​កើតឡើង​ពេល​បង្ហាញ​ទំព័រ ។ + +# Predefined zoom values +page_scale_width=ទទឹង​ទំព័រ +page_scale_fit=សម​ទំព័រ +page_scale_auto=ពង្រីក​ស្វ័យប្រវត្តិ +page_scale_actual=ទំហំ​ជាក់ស្ដែង +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=មាន​កំហុស​បាន​កើតឡើង​ពេល​កំពុង​ផ្ទុក PDF ។ +invalid_file_error=ឯកសារ PDF ខូច ឬ​មិន​ត្រឹមត្រូវ ។ +missing_file_error=បាត់​ឯកសារ PDF +unexpected_response_error=ការ​ឆ្លើយ​តម​ម៉ាស៊ីន​មេ​ដែល​មិន​បាន​រំពឹង។ + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} ចំណារ​ពន្យល់] +password_label=បញ្ចូល​ពាក្យសម្ងាត់​ដើម្បី​បើក​ឯកសារ PDF នេះ។ +password_invalid=ពាក្យសម្ងាត់​មិន​ត្រឹមត្រូវ។ សូម​ព្យាយាម​ម្ដងទៀត។ +password_ok=យល់​ព្រម +password_cancel=បោះបង់ + +printing_not_supported=ការ​ព្រមាន ៖ កា​រ​បោះពុម្ព​មិន​ត្រូវ​បាន​គាំទ្រ​ពេញលេញ​ដោយ​កម្មវិធី​រុករក​នេះ​ទេ ។ +printing_not_ready=ព្រមាន៖ PDF មិន​ត្រូវ​បាន​ផ្ទុក​ទាំងស្រុង​ដើម្បី​បោះពុម្ព​ទេ។ +web_fonts_disabled=បាន​បិទ​ពុម្ពអក្សរ​បណ្ដាញ ៖ មិន​អាច​ប្រើ​ពុម្ពអក្សរ PDF ដែល​បាន​បង្កប់​បាន​ទេ ។ + diff --git a/www/include/vendor/pdfjs/web/locale/kn/viewer.properties b/www/include/vendor/pdfjs/web/locale/kn/viewer.properties new file mode 100644 index 0000000..1a62056 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/kn/viewer.properties @@ -0,0 +1,187 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=ಹಿಂದಿನ ಪುಟ +previous_label=ಹಿಂದಿನ +next.title=ಮುಂದಿನ ಪುಟ +next_label=ಮುಂದಿನ + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=ಪುಟ +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}} ರಲ್ಲಿ +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pagesCount}} ರಲ್ಲಿ {{pageNumber}}) + +zoom_out.title=ಕಿರಿದಾಗಿಸು +zoom_out_label=ಕಿರಿದಾಗಿಸಿ +zoom_in.title=ಹಿರಿದಾಗಿಸು +zoom_in_label=ಹಿರಿದಾಗಿಸಿ +zoom.title=ಗಾತ್ರಬದಲಿಸು +presentation_mode.title=ಪ್ರಸ್ತುತಿ (ಪ್ರಸೆಂಟೇಶನ್) ಕ್ರಮಕ್ಕೆ ಬದಲಾಯಿಸು +presentation_mode_label=ಪ್ರಸ್ತುತಿ (ಪ್ರಸೆಂಟೇಶನ್) ಕ್ರಮ +open_file.title=ಕಡತವನ್ನು ತೆರೆ +open_file_label=ತೆರೆಯಿರಿ +print.title=ಮುದ್ರಿಸು +print_label=ಮುದ್ರಿಸಿ +download.title=ಇಳಿಸು +download_label=ಇಳಿಸಿಕೊಳ್ಳಿ +bookmark.title=ಪ್ರಸಕ್ತ ನೋಟ (ಪ್ರತಿ ಮಾಡು ಅಥವ ಹೊಸ ಕಿಟಕಿಯಲ್ಲಿ ತೆರೆ) +bookmark_label=ಪ್ರಸಕ್ತ ನೋಟ + +# Secondary toolbar and context menu +tools.title=ಉಪಕರಣಗಳು +tools_label=ಉಪಕರಣಗಳು +first_page.title=ಮೊದಲ ಪುಟಕ್ಕೆ ತೆರಳು +first_page_label=ಮೊದಲ ಪುಟಕ್ಕೆ ತೆರಳು +last_page.title=ಕೊನೆಯ ಪುಟಕ್ಕೆ ತೆರಳು +last_page_label=ಕೊನೆಯ ಪುಟಕ್ಕೆ ತೆರಳು +page_rotate_cw.title=ಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು +page_rotate_cw_label=ಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು +page_rotate_ccw.title=ಅಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು +page_rotate_ccw_label=ಅಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು + +cursor_text_select_tool.title=ಪಠ್ಯ ಆಯ್ಕೆ ಉಪಕರಣವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ +cursor_text_select_tool_label=ಪಠ್ಯ ಆಯ್ಕೆಯ ಉಪಕರಣ +cursor_hand_tool.title=ಕೈ ಉಪಕರಣವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ +cursor_hand_tool_label=ಕೈ ಉಪಕರಣ + + + +# Document properties dialog box +document_properties.title=ಡಾಕ್ಯುಮೆಂಟ್‌ ಗುಣಗಳು... +document_properties_label=ಡಾಕ್ಯುಮೆಂಟ್‌ ಗುಣಗಳು... +document_properties_file_name=ಕಡತದ ಹೆಸರು: +document_properties_file_size=ಕಡತದ ಗಾತ್ರ: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} ಬೈಟ್‍ಗಳು) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} ಬೈಟ್‍ಗಳು) +document_properties_title=ಶೀರ್ಷಿಕೆ: +document_properties_author=ಕರ್ತೃ: +document_properties_subject=ವಿಷಯ: +document_properties_keywords=ಮುಖ್ಯಪದಗಳು: +document_properties_creation_date=ರಚಿಸಿದ ದಿನಾಂಕ: +document_properties_modification_date=ಮಾರ್ಪಡಿಸಲಾದ ದಿನಾಂಕ: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=ರಚಿಸಿದವರು: +document_properties_producer=PDF ಉತ್ಪಾದಕ: +document_properties_version=PDF ಆವೃತ್ತಿ: +document_properties_page_count=ಪುಟದ ಎಣಿಕೆ: +document_properties_page_size_unit_inches=ಇದರಲ್ಲಿ +document_properties_page_size_orientation_portrait=ಭಾವಚಿತ್ರ +document_properties_page_size_orientation_landscape=ಪ್ರಕೃತಿ ಚಿತ್ರ +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_close=ಮುಚ್ಚು + +print_progress_message=ಮುದ್ರಿಸುವುದಕ್ಕಾಗಿ ದಸ್ತಾವೇಜನ್ನು ಸಿದ್ಧಗೊಳಿಸಲಾಗುತ್ತಿದೆ… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=ರದ್ದು ಮಾಡು + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=ಬದಿಪಟ್ಟಿಯನ್ನು ಹೊರಳಿಸು +toggle_sidebar_label=ಬದಿಪಟ್ಟಿಯನ್ನು ಹೊರಳಿಸು +document_outline_label=ದಸ್ತಾವೇಜಿನ ಹೊರರೇಖೆ +attachments.title=ಲಗತ್ತುಗಳನ್ನು ತೋರಿಸು +attachments_label=ಲಗತ್ತುಗಳು +thumbs.title=ಚಿಕ್ಕಚಿತ್ರದಂತೆ ತೋರಿಸು +thumbs_label=ಚಿಕ್ಕಚಿತ್ರಗಳು +findbar.title=ದಸ್ತಾವೇಜಿನಲ್ಲಿ ಹುಡುಕು +findbar_label=ಹುಡುಕು + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=ಪುಟ {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=ಪುಟವನ್ನು ಚಿಕ್ಕಚಿತ್ರದಂತೆ ತೋರಿಸು {{page}} + +# Find panel button title and messages +find_input.title=ಹುಡುಕು +find_input.placeholder=ದಸ್ತಾವೇಜಿನಲ್ಲಿ ಹುಡುಕು… +find_previous.title=ವಾಕ್ಯದ ಹಿಂದಿನ ಇರುವಿಕೆಯನ್ನು ಹುಡುಕು +find_previous_label=ಹಿಂದಿನ +find_next.title=ವಾಕ್ಯದ ಮುಂದಿನ ಇರುವಿಕೆಯನ್ನು ಹುಡುಕು +find_next_label=ಮುಂದಿನ +find_highlight=ಎಲ್ಲವನ್ನು ಹೈಲೈಟ್ ಮಾಡು +find_match_case_label=ಕೇಸನ್ನು ಹೊಂದಿಸು +find_reached_top=ದಸ್ತಾವೇಜಿನ ಮೇಲ್ಭಾಗವನ್ನು ತಲುಪಿದೆ, ಕೆಳಗಿನಿಂದ ಆರಂಭಿಸು +find_reached_bottom=ದಸ್ತಾವೇಜಿನ ಕೊನೆಯನ್ನು ತಲುಪಿದೆ, ಮೇಲಿನಿಂದ ಆರಂಭಿಸು +find_not_found=ವಾಕ್ಯವು ಕಂಡು ಬಂದಿಲ್ಲ + +# Error panel labels +error_more_info=ಹೆಚ್ಚಿನ ಮಾಹಿತಿ +error_less_info=ಕಡಿಮೆ ಮಾಹಿತಿ +error_close=ಮುಚ್ಚು +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=ಸಂದೇಶ: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=ರಾಶಿ: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=ಕಡತ: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=ಸಾಲು: {{line}} +rendering_error=ಪುಟವನ್ನು ನಿರೂಪಿಸುವಾಗ ಒಂದು ದೋಷ ಎದುರಾಗಿದೆ. + +# Predefined zoom values +page_scale_width=ಪುಟದ ಅಗಲ +page_scale_fit=ಪುಟದ ಸರಿಹೊಂದಿಕೆ +page_scale_auto=ಸ್ವಯಂಚಾಲಿತ ಗಾತ್ರಬದಲಾವಣೆ +page_scale_actual=ನಿಜವಾದ ಗಾತ್ರ +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=PDF ಅನ್ನು ಲೋಡ್ ಮಾಡುವಾಗ ಒಂದು ದೋಷ ಎದುರಾಗಿದೆ. +invalid_file_error=ಅಮಾನ್ಯವಾದ ಅಥವ ಹಾಳಾದ PDF ಕಡತ. +missing_file_error=PDF ಕಡತ ಇಲ್ಲ. +unexpected_response_error=ಅನಿರೀಕ್ಷಿತವಾದ ಪೂರೈಕೆಗಣಕದ ಪ್ರತಿಕ್ರಿಯೆ. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} ಟಿಪ್ಪಣಿ] +password_label=PDF ಅನ್ನು ತೆರೆಯಲು ಗುಪ್ತಪದವನ್ನು ನಮೂದಿಸಿ. +password_invalid=ಅಮಾನ್ಯವಾದ ಗುಪ್ತಪದ, ದಯವಿಟ್ಟು ಇನ್ನೊಮ್ಮೆ ಪ್ರಯತ್ನಿಸಿ. +password_ok=OK +password_cancel=ರದ್ದು ಮಾಡು + +printing_not_supported=ಎಚ್ಚರಿಕೆ: ಈ ಜಾಲವೀಕ್ಷಕದಲ್ಲಿ ಮುದ್ರಣಕ್ಕೆ ಸಂಪೂರ್ಣ ಬೆಂಬಲವಿಲ್ಲ. +printing_not_ready=ಎಚ್ಚರಿಕೆ: PDF ಕಡತವು ಮುದ್ರಿಸಲು ಸಂಪೂರ್ಣವಾಗಿ ಲೋಡ್ ಆಗಿಲ್ಲ. +web_fonts_disabled=ಜಾಲ ಅಕ್ಷರಶೈಲಿಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ: ಅಡಕಗೊಳಿಸಿದ PDF ಅಕ್ಷರಶೈಲಿಗಳನ್ನು ಬಳಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ. + diff --git a/www/include/vendor/pdfjs/web/locale/ko/viewer.properties b/www/include/vendor/pdfjs/web/locale/ko/viewer.properties new file mode 100644 index 0000000..3940fda --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/ko/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=이전 페이지 +previous_label=이전 +next.title=다음 페이지 +next_label=다음 + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=페이지 +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=/ {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} / {{pagesCount}}) + +zoom_out.title=축소 +zoom_out_label=축소 +zoom_in.title=확대 +zoom_in_label=확대 +zoom.title=확대/축소 +presentation_mode.title=프레젠테이션 모드로 전환 +presentation_mode_label=프레젠테이션 모드 +open_file.title=파일 열기 +open_file_label=열기 +print.title=인쇄 +print_label=인쇄 +download.title=다운로드 +download_label=다운로드 +save.title=저장 +save_label=저장 +bookmark.title=현재 보기 (복사 또는 새 창에서 열기) +bookmark_label=현재 보기 + +bookmark1.title=현재 페이지 (현재 페이지에서 URL 보기) +bookmark1_label=현재 페이지 + +# Secondary toolbar and context menu +tools.title=도구 +tools_label=도구 +first_page.title=첫 페이지로 이동 +first_page_label=첫 페이지로 이동 +last_page.title=마지막 페이지로 이동 +last_page_label=마지막 페이지로 이동 +page_rotate_cw.title=시계방향으로 회전 +page_rotate_cw_label=시계방향으로 회전 +page_rotate_ccw.title=시계 반대방향으로 회전 +page_rotate_ccw_label=시계 반대방향으로 회전 + +cursor_text_select_tool.title=텍스트 선택 도구 활성화 +cursor_text_select_tool_label=텍스트 선택 도구 +cursor_hand_tool.title=손 도구 활성화 +cursor_hand_tool_label=손 도구 + +scroll_page.title=페이지 스크롤 사용 +scroll_page_label=페이지 스크롤 +scroll_vertical.title=세로 스크롤 사용 +scroll_vertical_label=세로 스크롤 +scroll_horizontal.title=가로 스크롤 사용 +scroll_horizontal_label=가로 스크롤 +scroll_wrapped.title=래핑(자동 줄 바꿈) 스크롤 사용 +scroll_wrapped_label=래핑 스크롤 + +spread_none.title=한 페이지 보기 +spread_none_label=펼쳐짐 없음 +spread_odd.title=홀수 페이지로 시작하는 두 페이지 보기 +spread_odd_label=홀수 펼쳐짐 +spread_even.title=짝수 페이지로 시작하는 두 페이지 보기 +spread_even_label=짝수 펼쳐짐 + +# Document properties dialog box +document_properties.title=문서 속성… +document_properties_label=문서 속성… +document_properties_file_name=파일 이름: +document_properties_file_size=파일 크기: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}}바이트) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}}바이트) +document_properties_title=제목: +document_properties_author=작성자: +document_properties_subject=주제: +document_properties_keywords=키워드: +document_properties_creation_date=작성 날짜: +document_properties_modification_date=수정 날짜: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=작성 프로그램: +document_properties_producer=PDF 변환 소프트웨어: +document_properties_version=PDF 버전: +document_properties_page_count=페이지 수: +document_properties_page_size=페이지 크기: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=세로 방향 +document_properties_page_size_orientation_landscape=가로 방향 +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=레터 +document_properties_page_size_name_legal=리걸 +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=빠른 웹 보기: +document_properties_linearized_yes=예 +document_properties_linearized_no=아니요 +document_properties_close=닫기 + +print_progress_message=인쇄 문서 준비 중… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=취소 + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=탐색창 표시/숨기기 +toggle_sidebar_notification2.title=탐색창 표시/숨기기 (문서에 아웃라인/첨부파일/레이어 포함됨) +toggle_sidebar_label=탐색창 표시/숨기기 +document_outline.title=문서 아웃라인 보기 (더블 클릭해서 모든 항목 펼치기/접기) +document_outline_label=문서 아웃라인 +attachments.title=첨부파일 보기 +attachments_label=첨부파일 +layers.title=레이어 보기 (더블 클릭해서 모든 레이어를 기본 상태로 재설정) +layers_label=레이어 +thumbs.title=미리보기 +thumbs_label=미리보기 +current_outline_item.title=현재 아웃라인 항목 찾기 +current_outline_item_label=현재 아웃라인 항목 +findbar.title=검색 +findbar_label=검색 + +additional_layers=추가 레이어 +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark={{page}} 페이지 +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title={{page}} 페이지 +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas={{page}} 페이지 미리보기 + +# Find panel button title and messages +find_input.title=찾기 +find_input.placeholder=문서에서 찾기… +find_previous.title=지정 문자열에 일치하는 1개 부분을 검색 +find_previous_label=이전 +find_next.title=지정 문자열에 일치하는 다음 부분을 검색 +find_next_label=다음 +find_highlight=모두 강조 표시 +find_match_case_label=대/소문자 구분 +find_match_diacritics_label=분음 부호 일치 +find_entire_word_label=단어 단위로 +find_reached_top=문서 처음까지 검색하고 끝으로 돌아와 검색했습니다. +find_reached_bottom=문서 끝까지 검색하고 앞으로 돌아와 검색했습니다. +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{total}} 중 {{current}} 일치 +find_match_count[two]={{total}} 중 {{current}} 일치 +find_match_count[few]={{total}} 중 {{current}} 일치 +find_match_count[many]={{total}} 중 {{current}} 일치 +find_match_count[other]={{total}} 중 {{current}} 일치 +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]={{limit}} 이상 일치 +find_match_count_limit[one]={{limit}} 이상 일치 +find_match_count_limit[two]={{limit}} 이상 일치 +find_match_count_limit[few]={{limit}} 이상 일치 +find_match_count_limit[many]={{limit}} 이상 일치 +find_match_count_limit[other]={{limit}} 이상 일치 +find_not_found=검색 결과 없음 + +# Error panel labels +error_more_info=자세한 정보 +error_less_info=정보 간단히 보기 +error_close=닫기 +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (빌드: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=메시지: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=스택: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=파일: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=줄 번호: {{line}} + +# Predefined zoom values +page_scale_width=페이지 너비에 맞추기 +page_scale_fit=페이지에 맞추기 +page_scale_auto=자동 +page_scale_actual=실제 크기 +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=로드 중… +loading_error=PDF를 로드하는 동안 오류가 발생했습니다. +invalid_file_error=잘못되었거나 손상된 PDF 파일. +missing_file_error=PDF 파일 없음. +unexpected_response_error=예기치 않은 서버 응답입니다. + +rendering_error=페이지를 렌더링하는 동안 오류가 발생했습니다. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}} {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} 주석] +password_label=이 PDF 파일을 열 수 있는 비밀번호를 입력하세요. +password_invalid=잘못된 비밀번호입니다. 다시 시도하세요. +password_ok=확인 +password_cancel=취소 + +printing_not_supported=경고: 이 브라우저는 인쇄를 완전히 지원하지 않습니다. +printing_not_ready=경고: 이 PDF를 인쇄를 할 수 있을 정도로 읽어들이지 못했습니다. +web_fonts_disabled=웹 폰트가 비활성화됨: 내장된 PDF 글꼴을 사용할 수 없습니다. + +# Editor +editor_free_text2.title=텍스트 +editor_free_text2_label=텍스트 +editor_ink2.title=그리기 +editor_ink2_label=그리기 + +free_text2_default_content=입력하세요… + +# Editor Parameters +editor_free_text_color=색상 +editor_free_text_size=크기 +editor_ink_color=색상 +editor_ink_thickness=두께 +editor_ink_opacity=불투명도 + +# Editor aria +editor_free_text2_aria_label=텍스트 편집기 +editor_ink2_aria_label=그리기 편집기 +editor_ink_canvas_aria_label=사용자 생성 이미지 diff --git a/www/include/vendor/pdfjs/web/locale/lij/viewer.properties b/www/include/vendor/pdfjs/web/locale/lij/viewer.properties new file mode 100644 index 0000000..a7854d1 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/lij/viewer.properties @@ -0,0 +1,235 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Pagina primma +previous_label=Precedente +next.title=Pagina dòppo +next_label=Pròscima + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Pagina +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=de {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} de {{pagesCount}}) + +zoom_out.title=Diminoisci zoom +zoom_out_label=Diminoisci zoom +zoom_in.title=Aomenta zoom +zoom_in_label=Aomenta zoom +zoom.title=Zoom +presentation_mode.title=Vanni into mòddo de prezentaçion +presentation_mode_label=Mòddo de prezentaçion +open_file.title=Arvi file +open_file_label=Arvi +print.title=Stanpa +print_label=Stanpa +download.title=Descaregamento +download_label=Descaregamento +bookmark.title=Vixon corente (còpia ò arvi inte 'n neuvo barcon) +bookmark_label=Vixon corente + +# Secondary toolbar and context menu +tools.title=Atressi +tools_label=Atressi +first_page.title=Vanni a-a primma pagina +first_page_label=Vanni a-a primma pagina +last_page.title=Vanni a l'urtima pagina +last_page_label=Vanni a l'urtima pagina +page_rotate_cw.title=Gia into verso oraio +page_rotate_cw_label=Gia into verso oraio +page_rotate_ccw.title=Gia into verso antioraio +page_rotate_ccw_label=Gia into verso antioraio + +cursor_text_select_tool.title=Abilita strumento de seleçion do testo +cursor_text_select_tool_label=Strumento de seleçion do testo +cursor_hand_tool.title=Abilita strumento man +cursor_hand_tool_label=Strumento man + +scroll_vertical.title=Deuvia rebelamento verticale +scroll_vertical_label=Rebelamento verticale +scroll_horizontal.title=Deuvia rebelamento orizontâ +scroll_horizontal_label=Rebelamento orizontâ +scroll_wrapped.title=Deuvia rebelamento incapsolou +scroll_wrapped_label=Rebelamento incapsolou + +spread_none.title=No unite a-a difuxon de pagina +spread_none_label=No difuxon +spread_odd.title=Uniscite a-a difuxon de pagina co-o numero dèspa +spread_odd_label=Difuxon dèspa +spread_even.title=Uniscite a-a difuxon de pagina co-o numero pari +spread_even_label=Difuxon pari + +# Document properties dialog box +document_properties.title=Propietæ do documento… +document_properties_label=Propietæ do documento… +document_properties_file_name=Nomme schedaio: +document_properties_file_size=Dimenscion schedaio: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} kB ({{size_b}} byte) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} byte) +document_properties_title=Titolo: +document_properties_author=Aoto: +document_properties_subject=Ogetto: +document_properties_keywords=Paròlle ciave: +document_properties_creation_date=Dæta creaçion: +document_properties_modification_date=Dæta cangiamento: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Aotô originale: +document_properties_producer=Produtô PDF: +document_properties_version=Verscion PDF: +document_properties_page_count=Contezzo pagine: +document_properties_page_size=Dimenscion da pagina: +document_properties_page_size_unit_inches=dii gròsci +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=drito +document_properties_page_size_orientation_landscape=desteizo +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letia +document_properties_page_size_name_legal=Lezze +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Vista veloce do Web: +document_properties_linearized_yes=Sci +document_properties_linearized_no=No +document_properties_close=Særa + +print_progress_message=Praparo o documento pe-a stanpa… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Anulla + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Ativa/dizativa bara de scianco +toggle_sidebar_label=Ativa/dizativa bara de scianco +document_outline.title=Fanni vedde o contorno do documento (scicca doggio pe espande/ridue tutti i elementi) +document_outline_label=Contorno do documento +attachments.title=Fanni vedde alegæ +attachments_label=Alegæ +thumbs.title=Mostra miniatue +thumbs_label=Miniatue +findbar.title=Treuva into documento +findbar_label=Treuva + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Pagina {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatua da pagina {{page}} + +# Find panel button title and messages +find_input.title=Treuva +find_input.placeholder=Treuva into documento… +find_previous.title=Treuva a ripetiçion precedente do testo da çercâ +find_previous_label=Precedente +find_next.title=Treuva a ripetiçion dòppo do testo da çercâ +find_next_label=Segoente +find_highlight=Evidençia +find_match_case_label=Maioscole/minoscole +find_entire_word_label=Poula intrega +find_reached_top=Razonto a fin da pagina, continoa da l'iniçio +find_reached_bottom=Razonto l'iniçio da pagina, continoa da-a fin +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} de {{total}} corispondensa +find_match_count[two]={{current}} de {{total}} corispondense +find_match_count[few]={{current}} de {{total}} corispondense +find_match_count[many]={{current}} de {{total}} corispondense +find_match_count[other]={{current}} de {{total}} corispondense +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Ciù de {{limit}} corispondense +find_match_count_limit[one]=Ciù de {{limit}} corispondensa +find_match_count_limit[two]=Ciù de {{limit}} corispondense +find_match_count_limit[few]=Ciù de {{limit}} corispondense +find_match_count_limit[many]=Ciù de {{limit}} corispondense +find_match_count_limit[other]=Ciù de {{limit}} corispondense +find_not_found=Testo no trovou + +# Error panel labels +error_more_info=Ciù informaçioin +error_less_info=Meno informaçioin +error_close=Særa +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Mesaggio: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Schedaio: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Linia: {{line}} +rendering_error=Gh'é stæto 'n'erô itno rendering da pagina. + +# Predefined zoom values +page_scale_width=Larghessa pagina +page_scale_fit=Adatta a una pagina +page_scale_auto=Zoom aotomatico +page_scale_actual=Dimenscioin efetive +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=S'é verificou 'n'erô itno caregamento do PDF. +invalid_file_error=O schedaio PDF o l'é no valido ò aroinou. +missing_file_error=O schedaio PDF o no gh'é. +unexpected_response_error=Risposta inprevista do-u server + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anotaçion: {{type}}] +password_label=Dimme a paròlla segreta pe arvî sto schedaio PDF. +password_invalid=Paròlla segreta sbalia. Preuva torna. +password_ok=Va ben +password_cancel=Anulla + +printing_not_supported=Atençion: a stanpa a no l'é conpletamente soportâ da sto navegatô. +printing_not_ready=Atençion: o PDF o no l'é ancon caregou conpletamente pe-a stanpa. +web_fonts_disabled=I font do web en dizativæ: inposcibile adeuviâ i carateri do PDF. + diff --git a/www/include/vendor/pdfjs/web/locale/lo/viewer.properties b/www/include/vendor/pdfjs/web/locale/lo/viewer.properties new file mode 100644 index 0000000..8b877d0 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/lo/viewer.properties @@ -0,0 +1,145 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=ຫນ້າກ່ອນຫນ້າ +previous_label=ກ່ອນຫນ້າ +next.title=ຫນ້າຖັດໄປ +next_label=ຖັດໄປ + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=ຫນ້າ +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=ຈາກ {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} ຈາກ {{pagesCount}}) + +zoom_out.title=ຂະຫຍາຍອອກ +zoom_out_label=ຂະຫຍາຍອອກ +zoom_in.title=ຂະຫຍາຍເຂົ້າ +zoom_in_label=ຂະຫຍາຍເຂົ້າ +zoom.title=ຂະຫຍາຍ +presentation_mode.title=ສັບປ່ຽນເປັນໂຫມດການນຳສະເຫນີ +presentation_mode_label=ໂຫມດການນຳສະເຫນີ +open_file.title=ເປີດໄຟລ໌ +open_file_label=ເປີດ +print.title=ພິມ +print_label=ພິມ +download.title=ດາວໂຫລດ +download_label=ດາວໂຫລດ +bookmark.title=ມຸມມອງປະຈຸບັນ (ສຳເນົາ ຫລື ເປີດໃນວິນໂດໃຫມ່) +bookmark_label=ມຸມມອງປະຈຸບັນ + +# Secondary toolbar and context menu +tools.title=ເຄື່ອງມື +tools_label=ເຄື່ອງມື +first_page.title=ໄປທີ່ຫນ້າທຳອິດ +first_page_label=ໄປທີ່ຫນ້າທຳອິດ +last_page.title=ໄປທີ່ຫນ້າສຸດທ້າຍ +last_page_label=ໄປທີ່ຫນ້າສຸດທ້າຍ +page_rotate_cw.title=ຫມູນຕາມເຂັມໂມງ +page_rotate_cw_label=ຫມູນຕາມເຂັມໂມງ +page_rotate_ccw.title=ຫມູນທວນເຂັມໂມງ +page_rotate_ccw_label=ຫມູນທວນເຂັມໂມງ + + + + +# Document properties dialog box +document_properties_file_name=ຊື່ໄຟລ໌: +document_properties_file_size=ຂະຫນາດໄຟລ໌: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=ລວງຕັ້ງ +document_properties_page_size_orientation_landscape=ລວງນອນ +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=ຈົດໝາຍ +document_properties_page_size_name_legal=ຂໍ້ກົດຫມາຍ +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_close=ປິດ + +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_close=ຍົກເລີກ + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=ເປີດ/ປິດແຖບຂ້າງ +toggle_sidebar_label=ເປີດ/ປິດແຖບຂ້າງ +document_outline_label=ເຄົ້າຮ່າງເອກະສານ +findbar_label=ຄົ້ນຫາ + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. + +# Find panel button title and messages +find_input.title=ຄົ້ນຫາ +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. + +# Error panel labels +error_more_info=ຂໍ້ມູນເພີ່ມເຕີມ +error_less_info=ຂໍ້ມູນນ້ອຍລົງ +error_close=ປິດ +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +rendering_error=ມີຂໍ້ຜິດພາດເກີດຂື້ນຂະນະທີ່ກຳລັງເຣັນເດີຫນ້າ. + +# Predefined zoom values +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. + +loading_error=ມີຂໍ້ຜິດພາດເກີດຂື້ນຂະນະທີ່ກຳລັງໂຫລດ PDF. +invalid_file_error=ໄຟລ໌ PDF ບໍ່ຖືກຕ້ອງຫລືເສຍຫາຍ. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +password_ok=ຕົກລົງ +password_cancel=ຍົກເລີກ + diff --git a/www/include/vendor/pdfjs/web/locale/locale.properties b/www/include/vendor/pdfjs/web/locale/locale.properties new file mode 100644 index 0000000..3868015 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/locale.properties @@ -0,0 +1,333 @@ +[ach] +@import url(ach/viewer.properties) + +[af] +@import url(af/viewer.properties) + +[an] +@import url(an/viewer.properties) + +[ar] +@import url(ar/viewer.properties) + +[ast] +@import url(ast/viewer.properties) + +[az] +@import url(az/viewer.properties) + +[be] +@import url(be/viewer.properties) + +[bg] +@import url(bg/viewer.properties) + +[bn] +@import url(bn/viewer.properties) + +[bo] +@import url(bo/viewer.properties) + +[br] +@import url(br/viewer.properties) + +[brx] +@import url(brx/viewer.properties) + +[bs] +@import url(bs/viewer.properties) + +[ca] +@import url(ca/viewer.properties) + +[cak] +@import url(cak/viewer.properties) + +[ckb] +@import url(ckb/viewer.properties) + +[cs] +@import url(cs/viewer.properties) + +[cy] +@import url(cy/viewer.properties) + +[da] +@import url(da/viewer.properties) + +[de] +@import url(de/viewer.properties) + +[dsb] +@import url(dsb/viewer.properties) + +[el] +@import url(el/viewer.properties) + +[en-CA] +@import url(en-CA/viewer.properties) + +[en-GB] +@import url(en-GB/viewer.properties) + +[en-US] +@import url(en-US/viewer.properties) + +[eo] +@import url(eo/viewer.properties) + +[es-AR] +@import url(es-AR/viewer.properties) + +[es-CL] +@import url(es-CL/viewer.properties) + +[es-ES] +@import url(es-ES/viewer.properties) + +[es-MX] +@import url(es-MX/viewer.properties) + +[et] +@import url(et/viewer.properties) + +[eu] +@import url(eu/viewer.properties) + +[fa] +@import url(fa/viewer.properties) + +[ff] +@import url(ff/viewer.properties) + +[fi] +@import url(fi/viewer.properties) + +[fr] +@import url(fr/viewer.properties) + +[fur] +@import url(fur/viewer.properties) + +[fy-NL] +@import url(fy-NL/viewer.properties) + +[ga-IE] +@import url(ga-IE/viewer.properties) + +[gd] +@import url(gd/viewer.properties) + +[gl] +@import url(gl/viewer.properties) + +[gn] +@import url(gn/viewer.properties) + +[gu-IN] +@import url(gu-IN/viewer.properties) + +[he] +@import url(he/viewer.properties) + +[hi-IN] +@import url(hi-IN/viewer.properties) + +[hr] +@import url(hr/viewer.properties) + +[hsb] +@import url(hsb/viewer.properties) + +[hu] +@import url(hu/viewer.properties) + +[hy-AM] +@import url(hy-AM/viewer.properties) + +[hye] +@import url(hye/viewer.properties) + +[ia] +@import url(ia/viewer.properties) + +[id] +@import url(id/viewer.properties) + +[is] +@import url(is/viewer.properties) + +[it] +@import url(it/viewer.properties) + +[ja] +@import url(ja/viewer.properties) + +[ka] +@import url(ka/viewer.properties) + +[kab] +@import url(kab/viewer.properties) + +[kk] +@import url(kk/viewer.properties) + +[km] +@import url(km/viewer.properties) + +[kn] +@import url(kn/viewer.properties) + +[ko] +@import url(ko/viewer.properties) + +[lij] +@import url(lij/viewer.properties) + +[lo] +@import url(lo/viewer.properties) + +[lt] +@import url(lt/viewer.properties) + +[ltg] +@import url(ltg/viewer.properties) + +[lv] +@import url(lv/viewer.properties) + +[meh] +@import url(meh/viewer.properties) + +[mk] +@import url(mk/viewer.properties) + +[mr] +@import url(mr/viewer.properties) + +[ms] +@import url(ms/viewer.properties) + +[my] +@import url(my/viewer.properties) + +[nb-NO] +@import url(nb-NO/viewer.properties) + +[ne-NP] +@import url(ne-NP/viewer.properties) + +[nl] +@import url(nl/viewer.properties) + +[nn-NO] +@import url(nn-NO/viewer.properties) + +[oc] +@import url(oc/viewer.properties) + +[pa-IN] +@import url(pa-IN/viewer.properties) + +[pl] +@import url(pl/viewer.properties) + +[pt-BR] +@import url(pt-BR/viewer.properties) + +[pt-PT] +@import url(pt-PT/viewer.properties) + +[rm] +@import url(rm/viewer.properties) + +[ro] +@import url(ro/viewer.properties) + +[ru] +@import url(ru/viewer.properties) + +[sat] +@import url(sat/viewer.properties) + +[sc] +@import url(sc/viewer.properties) + +[scn] +@import url(scn/viewer.properties) + +[sco] +@import url(sco/viewer.properties) + +[si] +@import url(si/viewer.properties) + +[sk] +@import url(sk/viewer.properties) + +[skr] +@import url(skr/viewer.properties) + +[sl] +@import url(sl/viewer.properties) + +[son] +@import url(son/viewer.properties) + +[sq] +@import url(sq/viewer.properties) + +[sr] +@import url(sr/viewer.properties) + +[sv-SE] +@import url(sv-SE/viewer.properties) + +[szl] +@import url(szl/viewer.properties) + +[ta] +@import url(ta/viewer.properties) + +[te] +@import url(te/viewer.properties) + +[tg] +@import url(tg/viewer.properties) + +[th] +@import url(th/viewer.properties) + +[tl] +@import url(tl/viewer.properties) + +[tr] +@import url(tr/viewer.properties) + +[trs] +@import url(trs/viewer.properties) + +[uk] +@import url(uk/viewer.properties) + +[ur] +@import url(ur/viewer.properties) + +[uz] +@import url(uz/viewer.properties) + +[vi] +@import url(vi/viewer.properties) + +[wo] +@import url(wo/viewer.properties) + +[xh] +@import url(xh/viewer.properties) + +[zh-CN] +@import url(zh-CN/viewer.properties) + +[zh-TW] +@import url(zh-TW/viewer.properties) + diff --git a/www/include/vendor/pdfjs/web/locale/lt/viewer.properties b/www/include/vendor/pdfjs/web/locale/lt/viewer.properties new file mode 100644 index 0000000..2c4fb8a --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/lt/viewer.properties @@ -0,0 +1,260 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Ankstesnis puslapis +previous_label=Ankstesnis +next.title=Kitas puslapis +next_label=Kitas + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Puslapis +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=iš {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} iš {{pagesCount}}) + +zoom_out.title=Sumažinti +zoom_out_label=Sumažinti +zoom_in.title=Padidinti +zoom_in_label=Padidinti +zoom.title=Mastelis +presentation_mode.title=Pereiti į pateikties veikseną +presentation_mode_label=Pateikties veiksena +open_file.title=Atverti failą +open_file_label=Atverti +print.title=Spausdinti +print_label=Spausdinti +download.title=Parsiųsti +download_label=Parsiųsti +bookmark.title=Esamojo rodinio saitas (kopijavimui ar atvėrimui kitame lange) +bookmark_label=Esamasis rodinys + +# Secondary toolbar and context menu +tools.title=Priemonės +tools_label=Priemonės +first_page.title=Eiti į pirmą puslapį +first_page_label=Eiti į pirmą puslapį +last_page.title=Eiti į paskutinį puslapį +last_page_label=Eiti į paskutinį puslapį +page_rotate_cw.title=Pasukti pagal laikrodžio rodyklę +page_rotate_cw_label=Pasukti pagal laikrodžio rodyklę +page_rotate_ccw.title=Pasukti prieš laikrodžio rodyklę +page_rotate_ccw_label=Pasukti prieš laikrodžio rodyklę + +cursor_text_select_tool.title=Įjungti teksto žymėjimo įrankį +cursor_text_select_tool_label=Teksto žymėjimo įrankis +cursor_hand_tool.title=Įjungti vilkimo įrankį +cursor_hand_tool_label=Vilkimo įrankis + +scroll_page.title=Naudoti puslapio slinkimą +scroll_page_label=Puslapio slinkimas +scroll_vertical.title=Naudoti vertikalų slinkimą +scroll_vertical_label=Vertikalus slinkimas +scroll_horizontal.title=Naudoti horizontalų slinkimą +scroll_horizontal_label=Horizontalus slinkimas +scroll_wrapped.title=Naudoti išklotą slinkimą +scroll_wrapped_label=Išklotas slinkimas + +spread_none.title=Nejungti puslapių į dvilapius +spread_none_label=Be dvilapių +spread_odd.title=Sujungti į dvilapius pradedant nelyginiais puslapiais +spread_odd_label=Nelyginiai dvilapiai +spread_even.title=Sujungti į dvilapius pradedant lyginiais puslapiais +spread_even_label=Lyginiai dvilapiai + +# Document properties dialog box +document_properties.title=Dokumento savybės… +document_properties_label=Dokumento savybės… +document_properties_file_name=Failo vardas: +document_properties_file_size=Failo dydis: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} B) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} B) +document_properties_title=Antraštė: +document_properties_author=Autorius: +document_properties_subject=Tema: +document_properties_keywords=Reikšminiai žodžiai: +document_properties_creation_date=Sukūrimo data: +document_properties_modification_date=Modifikavimo data: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Kūrėjas: +document_properties_producer=PDF generatorius: +document_properties_version=PDF versija: +document_properties_page_count=Puslapių skaičius: +document_properties_page_size=Puslapio dydis: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=stačias +document_properties_page_size_orientation_landscape=gulsčias +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Laiškas +document_properties_page_size_name_legal=Dokumentas +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Spartus žiniatinklio rodinys: +document_properties_linearized_yes=Taip +document_properties_linearized_no=Ne +document_properties_close=Užverti + +print_progress_message=Dokumentas ruošiamas spausdinimui… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Atsisakyti + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Rodyti / slėpti šoninį polangį +toggle_sidebar_notification2.title=Parankinė (dokumentas turi struktūrą / priedų / sluoksnių) +toggle_sidebar_label=Šoninis polangis +document_outline.title=Rodyti dokumento struktūrą (spustelėkite dukart norėdami išplėsti/suskleisti visus elementus) +document_outline_label=Dokumento struktūra +attachments.title=Rodyti priedus +attachments_label=Priedai +layers.title=Rodyti sluoksnius (spustelėkite dukart, norėdami atstatyti visus sluoksnius į numatytąją būseną) +layers_label=Sluoksniai +thumbs.title=Rodyti puslapių miniatiūras +thumbs_label=Miniatiūros +current_outline_item.title=Rasti dabartinį struktūros elementą +current_outline_item_label=Dabartinis struktūros elementas +findbar.title=Ieškoti dokumente +findbar_label=Rasti + +additional_layers=Papildomi sluoksniai +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark={{page}} puslapis +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title={{page}} puslapis +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas={{page}} puslapio miniatiūra + +# Find panel button title and messages +find_input.title=Rasti +find_input.placeholder=Rasti dokumente… +find_previous.title=Ieškoti ankstesnio frazės egzemplioriaus +find_previous_label=Ankstesnis +find_next.title=Ieškoti tolesnio frazės egzemplioriaus +find_next_label=Tolesnis +find_highlight=Viską paryškinti +find_match_case_label=Skirti didžiąsias ir mažąsias raides +find_match_diacritics_label=Skirti diakritinius ženklus +find_entire_word_label=Ištisi žodžiai +find_reached_top=Pasiekus dokumento pradžią, paieška pratęsta nuo pabaigos +find_reached_bottom=Pasiekus dokumento pabaigą, paieška pratęsta nuo pradžios +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} iš {{total}} atitikmens +find_match_count[two]={{current}} iš {{total}} atitikmenų +find_match_count[few]={{current}} iš {{total}} atitikmenų +find_match_count[many]={{current}} iš {{total}} atitikmenų +find_match_count[other]={{current}} iš {{total}} atitikmens +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Daugiau nei {{limit}} atitikmenų +find_match_count_limit[one]=Daugiau nei {{limit}} atitikmuo +find_match_count_limit[two]=Daugiau nei {{limit}} atitikmenys +find_match_count_limit[few]=Daugiau nei {{limit}} atitikmenys +find_match_count_limit[many]=Daugiau nei {{limit}} atitikmenų +find_match_count_limit[other]=Daugiau nei {{limit}} atitikmuo +find_not_found=Ieškoma frazė nerasta + +# Error panel labels +error_more_info=Išsamiau +error_less_info=Glausčiau +error_close=Užverti +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v. {{version}} (darinys: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Pranešimas: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Dėklas: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Failas: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Eilutė: {{line}} +rendering_error=Atvaizduojant puslapį įvyko klaida. + +# Predefined zoom values +page_scale_width=Priderinti prie lapo pločio +page_scale_fit=Pritaikyti prie lapo dydžio +page_scale_auto=Automatinis mastelis +page_scale_actual=Tikras dydis +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Įkeliama… +loading_error=Įkeliant PDF failą įvyko klaida. +invalid_file_error=Tai nėra PDF failas arba jis yra sugadintas. +missing_file_error=PDF failas nerastas. +unexpected_response_error=Netikėtas serverio atsakas. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[„{{type}}“ tipo anotacija] +password_label=Įveskite slaptažodį šiam PDF failui atverti. +password_invalid=Slaptažodis neteisingas. Bandykite dar kartą. +password_ok=Gerai +password_cancel=Atsisakyti + +printing_not_supported=Dėmesio! Spausdinimas šioje naršyklėje nėra pilnai realizuotas. +printing_not_ready=Dėmesio! PDF failas dar nėra pilnai įkeltas spausdinimui. +web_fonts_disabled=Saityno šriftai išjungti – PDF faile esančių šriftų naudoti negalima. + +# Editor +editor_none.title=Išjungti komentarų redagavimą +editor_none_label=Išjungti redagavimą +editor_free_text.title=Pridėti „FreeText“ komentarą +editor_free_text_label=„FreeText“ komentaras +editor_ink.title=Pridėti laisvo stiliaus komentarą +editor_ink_label=Laisvo stiliaus komentaras + diff --git a/www/include/vendor/pdfjs/web/locale/ltg/viewer.properties b/www/include/vendor/pdfjs/web/locale/ltg/viewer.properties new file mode 100644 index 0000000..b117a0e --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/ltg/viewer.properties @@ -0,0 +1,213 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Īprīkšejā lopa +previous_label=Īprīkšejā +next.title=Nuokomuo lopa +next_label=Nuokomuo + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Lopa +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=nu {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} nu {{pagesCount}}) + +zoom_out.title=Attuolynuot +zoom_out_label=Attuolynuot +zoom_in.title=Pītuvynuot +zoom_in_label=Pītuvynuot +zoom.title=Palelynuojums +presentation_mode.title=Puorslēgtīs iz Prezentacejis režymu +presentation_mode_label=Prezentacejis režyms +open_file.title=Attaiseit failu +open_file_label=Attaiseit +print.title=Drukuošona +print_label=Drukōt +download.title=Lejupīluode +download_label=Lejupīluodeit +bookmark.title=Pošreizejais skots (kopēt voi attaiseit jaunā lūgā) +bookmark_label=Pošreizejais skots + +# Secondary toolbar and context menu +tools.title=Reiki +tools_label=Reiki +first_page.title=Īt iz pyrmū lopu +first_page_label=Īt iz pyrmū lopu +last_page.title=Īt iz piedejū lopu +last_page_label=Īt iz piedejū lopu +page_rotate_cw.title=Pagrīzt pa pulksteni +page_rotate_cw_label=Pagrīzt pa pulksteni +page_rotate_ccw.title=Pagrīzt pret pulksteni +page_rotate_ccw_label=Pagrīzt pret pulksteni + +cursor_text_select_tool.title=Aktivizēt teksta izvieles reiku +cursor_text_select_tool_label=Teksta izvieles reiks +cursor_hand_tool.title=Aktivēt rūkys reiku +cursor_hand_tool_label=Rūkys reiks + +scroll_vertical.title=Izmontōt vertikalū ritinōšonu +scroll_vertical_label=Vertikalō ritinōšona +scroll_horizontal.title=Izmontōt horizontalū ritinōšonu +scroll_horizontal_label=Horizontalō ritinōšona +scroll_wrapped.title=Izmontōt mārūgojamū ritinōšonu +scroll_wrapped_label=Mārūgojamō ritinōšona + +spread_none.title=Naizmontōt lopu atvāruma režimu +spread_none_label=Bez atvārumim +spread_odd.title=Izmontōt lopu atvārumus sōkut nu napōra numeru lopom +spread_odd_label=Napōra lopys pa kreisi +spread_even.title=Izmontōt lopu atvārumus sōkut nu pōra numeru lopom +spread_even_label=Pōra lopys pa kreisi + +# Document properties dialog box +document_properties.title=Dokumenta īstatiejumi… +document_properties_label=Dokumenta īstatiejumi… +document_properties_file_name=Faila nūsaukums: +document_properties_file_size=Faila izmārs: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} biti) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} biti) +document_properties_title=Nūsaukums: +document_properties_author=Autors: +document_properties_subject=Tema: +document_properties_keywords=Atslāgi vuordi: +document_properties_creation_date=Izveides datums: +document_properties_modification_date=lobuošonys datums: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Radeituojs: +document_properties_producer=PDF producents: +document_properties_version=PDF verseja: +document_properties_page_count=Lopu skaits: +document_properties_page_size=Lopas izmārs: +document_properties_page_size_unit_inches=collas +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=portreta orientaceja +document_properties_page_size_orientation_landscape=ainovys orientaceja +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Fast Web View: +document_properties_linearized_yes=Jā +document_properties_linearized_no=Nā +document_properties_close=Aiztaiseit + +print_progress_message=Preparing document for printing… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Atceļt + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Puorslēgt suonu jūslu +toggle_sidebar_label=Puorslēgt suonu jūslu +document_outline.title=Show Document Outline (double-click to expand/collapse all items) +document_outline_label=Dokumenta saturs +attachments.title=Show Attachments +attachments_label=Attachments +thumbs.title=Paruodeit seiktālus +thumbs_label=Seiktāli +findbar.title=Mekleit dokumentā +findbar_label=Mekleit + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Lopa {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Lopys {{page}} seiktāls + +# Find panel button title and messages +find_input.title=Mekleit +find_input.placeholder=Mekleit dokumentā… +find_previous.title=Atrast īprīkšejū +find_previous_label=Īprīkšejā +find_next.title=Atrast nuokamū +find_next_label=Nuokomuo +find_highlight=Īkruosuot vysys +find_match_case_label=Lelū, mozū burtu jiuteigs +find_reached_top=Sasnīgts dokumenta suokums, turpynojom nu beigom +find_reached_bottom=Sasnīgtys dokumenta beigys, turpynojom nu suokuma +find_not_found=Frāze nav atrosta + +# Error panel labels +error_more_info=Vairuok informacejis +error_less_info=mozuok informacejis +error_close=Close +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Ziņuojums: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Steks: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=File: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Ryndeņa: {{line}} +rendering_error=Attālojūt lopu rodās klaida + +# Predefined zoom values +page_scale_width=Lopys plotumā +page_scale_fit=Ītylpynūt lopu +page_scale_auto=Automatiskais izmārs +page_scale_actual=Patīsais izmārs +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=Īluodejūt PDF nūtyka klaida. +invalid_file_error=Nadereigs voi būjuots PDF fails. +missing_file_error=PDF fails nav atrosts. +unexpected_response_error=Unexpected server response. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Annotation] +password_label=Īvodit paroli, kab attaiseitu PDF failu. +password_invalid=Napareiza parole, raugit vēļreiz. +password_ok=Labi +password_cancel=Atceļt + +printing_not_supported=Uzmaneibu: Drukuošona nu itei puorlūka dorbojās tikai daleji. +printing_not_ready=Uzmaneibu: PDF nav pilneibā īluodeits drukuošonai. +web_fonts_disabled=Šķārsteikla fonti nav aktivizāti: Navar īgult PDF fontus. + diff --git a/www/include/vendor/pdfjs/web/locale/lv/viewer.properties b/www/include/vendor/pdfjs/web/locale/lv/viewer.properties new file mode 100644 index 0000000..851728f --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/lv/viewer.properties @@ -0,0 +1,235 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Iepriekšējā lapa +previous_label=Iepriekšējā +next.title=Nākamā lapa +next_label=Nākamā + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Lapa +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=no {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} no {{pagesCount}}) + +zoom_out.title=Attālināt\u0020 +zoom_out_label=Attālināt +zoom_in.title=Pietuvināt +zoom_in_label=Pietuvināt +zoom.title=Palielinājums +presentation_mode.title=Pārslēgties uz Prezentācijas režīmu +presentation_mode_label=Prezentācijas režīms +open_file.title=Atvērt failu +open_file_label=Atvērt +print.title=Drukāšana +print_label=Drukāt +download.title=Lejupielāde +download_label=Lejupielādēt +bookmark.title=Pašreizējais skats (kopēt vai atvērt jaunā logā) +bookmark_label=Pašreizējais skats + +# Secondary toolbar and context menu +tools.title=Rīki +tools_label=Rīki +first_page.title=Iet uz pirmo lapu +first_page_label=Iet uz pirmo lapu +last_page.title=Iet uz pēdējo lapu +last_page_label=Iet uz pēdējo lapu +page_rotate_cw.title=Pagriezt pa pulksteni +page_rotate_cw_label=Pagriezt pa pulksteni +page_rotate_ccw.title=Pagriezt pret pulksteni +page_rotate_ccw_label=Pagriezt pret pulksteni + +cursor_text_select_tool.title=Aktivizēt teksta izvēles rīku +cursor_text_select_tool_label=Teksta izvēles rīks +cursor_hand_tool.title=Aktivēt rokas rīku +cursor_hand_tool_label=Rokas rīks + +scroll_vertical.title=Izmantot vertikālo ritināšanu +scroll_vertical_label=Vertikālā ritināšana +scroll_horizontal.title=Izmantot horizontālo ritināšanu +scroll_horizontal_label=Horizontālā ritināšana +scroll_wrapped.title=Izmantot apkļauto ritināšanu +scroll_wrapped_label=Apkļautā ritināšana + +spread_none.title=Nepievienoties lapu izpletumiem +spread_none_label=Neizmantot izpletumus +spread_odd.title=Izmantot lapu izpletumus sākot ar nepāra numuru lapām +spread_odd_label=Nepāra izpletumi +spread_even.title=Izmantot lapu izpletumus sākot ar pāra numuru lapām +spread_even_label=Pāra izpletumi + +# Document properties dialog box +document_properties.title=Dokumenta iestatījumi… +document_properties_label=Dokumenta iestatījumi… +document_properties_file_name=Faila nosaukums: +document_properties_file_size=Faila izmērs: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} biti) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} biti) +document_properties_title=Nosaukums: +document_properties_author=Autors: +document_properties_subject=Tēma: +document_properties_keywords=Atslēgas vārdi: +document_properties_creation_date=Izveides datums: +document_properties_modification_date=LAbošanas datums: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Radītājs: +document_properties_producer=PDF producents: +document_properties_version=PDF versija: +document_properties_page_count=Lapu skaits: +document_properties_page_size=Papīra izmērs: +document_properties_page_size_unit_inches=collas +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=portretorientācija +document_properties_page_size_orientation_landscape=ainavorientācija +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Vēstule +document_properties_page_size_name_legal=Juridiskie teksti +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Ātrā tīmekļa skats: +document_properties_linearized_yes=Jā +document_properties_linearized_no=Nē +document_properties_close=Aizvērt + +print_progress_message=Gatavo dokumentu drukāšanai... +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Atcelt + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Pārslēgt sānu joslu +toggle_sidebar_label=Pārslēgt sānu joslu +document_outline.title=Rādīt dokumenta struktūru (veiciet dubultklikšķi lai izvērstu/sakļautu visus vienumus) +document_outline_label=Dokumenta saturs +attachments.title=Rādīt pielikumus +attachments_label=Pielikumi +thumbs.title=Parādīt sīktēlus +thumbs_label=Sīktēli +findbar.title=Meklēt dokumentā +findbar_label=Meklēt + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Lapa {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Lapas {{page}} sīktēls + +# Find panel button title and messages +find_input.title=Meklēt +find_input.placeholder=Meklēt dokumentā… +find_previous.title=Atrast iepriekšējo +find_previous_label=Iepriekšējā +find_next.title=Atrast nākamo +find_next_label=Nākamā +find_highlight=Iekrāsot visas +find_match_case_label=Lielo, mazo burtu jutīgs +find_entire_word_label=Veselus vārdus +find_reached_top=Sasniegts dokumenta sākums, turpinām no beigām +find_reached_bottom=Sasniegtas dokumenta beigas, turpinām no sākuma +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} no {{total}} rezultāta +find_match_count[two]={{current}} no {{total}} rezultātiem +find_match_count[few]={{current}} no {{total}} rezultātiem +find_match_count[many]={{current}} no {{total}} rezultātiem +find_match_count[other]={{current}} no {{total}} rezultātiem +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Vairāk nekā {{limit}} rezultāti +find_match_count_limit[one]=Vairāk nekā {{limit}} rezultāti +find_match_count_limit[two]=Vairāk nekā {{limit}} rezultāti +find_match_count_limit[few]=Vairāk nekā {{limit}} rezultāti +find_match_count_limit[many]=Vairāk nekā {{limit}} rezultāti +find_match_count_limit[other]=Vairāk nekā {{limit}} rezultāti +find_not_found=Frāze nav atrasta + +# Error panel labels +error_more_info=Vairāk informācijas +error_less_info=MAzāk informācijas +error_close=Close +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Ziņojums: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Steks: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=File: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Rindiņa: {{line}} +rendering_error=Attēlojot lapu radās kļūda + +# Predefined zoom values +page_scale_width=Lapas platumā +page_scale_fit=Ietilpinot lapu +page_scale_auto=Automātiskais izmērs +page_scale_actual=Patiesais izmērs +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=Ielādējot PDF notika kļūda. +invalid_file_error=Nederīgs vai bojāts PDF fails. +missing_file_error=PDF fails nav atrasts. +unexpected_response_error=Negaidīa servera atbilde. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} anotācija] +password_label=Ievadiet paroli, lai atvērtu PDF failu. +password_invalid=Nepareiza parole, mēģiniet vēlreiz. +password_ok=Labi +password_cancel=Atcelt + +printing_not_supported=Uzmanību: Drukāšana no šī pārlūka darbojas tikai daļēji. +printing_not_ready=Uzmanību: PDF nav pilnībā ielādēts drukāšanai. +web_fonts_disabled=Tīmekļa fonti nav aktivizēti: Nevar iegult PDF fontus. + diff --git a/www/include/vendor/pdfjs/web/locale/meh/viewer.properties b/www/include/vendor/pdfjs/web/locale/meh/viewer.properties new file mode 100644 index 0000000..7a1bf04 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/meh/viewer.properties @@ -0,0 +1,111 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Página yata + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. + +zoom.title=Nasa´a ka´nu/Nasa´a luli +open_file_label=Síne + +# Secondary toolbar and context menu + + + + +# Document properties dialog box +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized_yes=Kuvi +document_properties_close=Nakasɨ + +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Nkuvi-ka + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +findbar_label=Nánuku + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. + +# Find panel button title and messages +find_input.title=Nánuku +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} + +# Error panel labels +error_close=Nakasɨ +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number + +# Predefined zoom values +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +password_cancel=Nkuvi-ka + diff --git a/www/include/vendor/pdfjs/web/locale/mk/viewer.properties b/www/include/vendor/pdfjs/web/locale/mk/viewer.properties new file mode 100644 index 0000000..6d59400 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/mk/viewer.properties @@ -0,0 +1,139 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Претходна страница +previous_label=Претходна +next.title=Следна страница +next_label=Следна + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. + +zoom_out.title=Намалување +zoom_out_label=Намали +zoom_in.title=Зголемување +zoom_in_label=Зголеми +zoom.title=Променување на големина +presentation_mode.title=Премини во презентациски режим +presentation_mode_label=Презентациски режим +open_file.title=Отворање датотека +open_file_label=Отвори +print.title=Печатење +print_label=Печати +download.title=Преземање +download_label=Преземи +bookmark.title=Овој преглед (копирај или отвори во нов прозорец) +bookmark_label=Овој преглед + +# Secondary toolbar and context menu +tools.title=Алатки + + + + +# Document properties dialog box +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. + +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_close=Откажи + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Вклучи странична лента +toggle_sidebar_label=Вклучи странична лента +thumbs.title=Прикажување на икони +thumbs_label=Икони +findbar.title=Најди во документот +findbar_label=Најди + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Страница {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Икона од страница {{page}} + +# Find panel button title and messages +find_previous.title=Најди ја предходната појава на фразата +find_previous_label=Претходно +find_next.title=Најди ја следната појава на фразата +find_next_label=Следно +find_highlight=Означи сѐ +find_match_case_label=Токму така +find_reached_top=Барањето стигна до почетокот на документот и почнува од крајот +find_reached_bottom=Барањето стигна до крајот на документот и почнува од почеток +find_not_found=Фразата не е пронајдена + +# Error panel labels +error_more_info=Повеќе информации +error_less_info=Помалку информации +error_close=Затвори +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Порака: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Датотека: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Линија: {{line}} +rendering_error=Настана грешка при прикажувањето на страницата. + +# Predefined zoom values +page_scale_width=Ширина на страница +page_scale_fit=Цела страница +page_scale_auto=Автоматска големина +page_scale_actual=Вистинска големина +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. + +loading_error=Настана грешка при вчитувањето на PDF-от. +invalid_file_error=Невалидна или корумпирана PDF датотека. +missing_file_error=Недостасува PDF документ. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +password_cancel=Откажи + +printing_not_supported=Предупредување: Печатењето не е целосно поддржано во овој прелистувач. +printing_not_ready=Предупредување: PDF документот не е целосно вчитан за печатење. +web_fonts_disabled=Интернет фонтовите се оневозможени: не може да се користат вградените PDF фонтови. + diff --git a/www/include/vendor/pdfjs/web/locale/mr/viewer.properties b/www/include/vendor/pdfjs/web/locale/mr/viewer.properties new file mode 100644 index 0000000..40080f9 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/mr/viewer.properties @@ -0,0 +1,231 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=मागील पृष्ठ +previous_label=मागील +next.title=पुढील पृष्ठ +next_label=पुढील + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=पृष्ठ +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}}पैकी +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pagesCount}} पैकी {{pageNumber}}) + +zoom_out.title=छोटे करा +zoom_out_label=छोटे करा +zoom_in.title=मोठे करा +zoom_in_label=मोठे करा +zoom.title=लहान किंवा मोठे करा +presentation_mode.title=प्रस्तुतिकरण मोडचा वापर करा +presentation_mode_label=प्रस्तुतिकरण मोड +open_file.title=फाइल उघडा +open_file_label=उघडा +print.title=छपाई करा +print_label=छपाई करा +download.title=डाउनलोड करा +download_label=डाउनलोड करा +bookmark.title=सध्याचे अवलोकन (नवीन पटलात प्रत बनवा किंवा उघडा) +bookmark_label=सध्याचे अवलोकन + +# Secondary toolbar and context menu +tools.title=साधने +tools_label=साधने +first_page.title=पहिल्या पृष्ठावर जा +first_page_label=पहिल्या पृष्ठावर जा +last_page.title=शेवटच्या पृष्ठावर जा +last_page_label=शेवटच्या पृष्ठावर जा +page_rotate_cw.title=घड्याळाच्या काट्याच्या दिशेने फिरवा +page_rotate_cw_label=घड्याळाच्या काट्याच्या दिशेने फिरवा +page_rotate_ccw.title=घड्याळाच्या काट्याच्या उलट दिशेने फिरवा +page_rotate_ccw_label=घड्याळाच्या काट्याच्या उलट दिशेने फिरवा + +cursor_text_select_tool.title=मजकूर निवड साधन कार्यान्वयीत करा +cursor_text_select_tool_label=मजकूर निवड साधन +cursor_hand_tool.title=हात साधन कार्यान्वित करा +cursor_hand_tool_label=हस्त साधन + +scroll_vertical.title=अनुलंब स्क्रोलिंग वापरा +scroll_vertical_label=अनुलंब स्क्रोलिंग +scroll_horizontal.title=क्षैतिज स्क्रोलिंग वापरा +scroll_horizontal_label=क्षैतिज स्क्रोलिंग + + +# Document properties dialog box +document_properties.title=दस्तऐवज गुणधर्म… +document_properties_label=दस्तऐवज गुणधर्म… +document_properties_file_name=फाइलचे नाव: +document_properties_file_size=फाइल आकार: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} बाइट्स) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} बाइट्स) +document_properties_title=शिर्षक: +document_properties_author=लेखक: +document_properties_subject=विषय: +document_properties_keywords=मुख्यशब्द: +document_properties_creation_date=निर्माण दिनांक: +document_properties_modification_date=दुरूस्ती दिनांक: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=निर्माता: +document_properties_producer=PDF निर्माता: +document_properties_version=PDF आवृत्ती: +document_properties_page_count=पृष्ठ संख्या: +document_properties_page_size=पृष्ठ आकार: +document_properties_page_size_unit_inches=इंच +document_properties_page_size_unit_millimeters=मीमी +document_properties_page_size_orientation_portrait=उभी मांडणी +document_properties_page_size_orientation_landscape=आडवे +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=जलद वेब दृष्य: +document_properties_linearized_yes=हो +document_properties_linearized_no=नाही +document_properties_close=बंद करा + +print_progress_message=छपाई करीता पृष्ठ तयार करीत आहे… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=रद्द करा + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=बाजूचीपट्टी टॉगल करा +toggle_sidebar_label=बाजूचीपट्टी टॉगल करा +document_outline.title=दस्तऐवज बाह्यरेखा दर्शवा (विस्तृत करण्यासाठी दोनवेळा क्लिक करा /सर्व घटक दाखवा) +document_outline_label=दस्तऐवज रूपरेषा +attachments.title=जोडपत्र दाखवा +attachments_label=जोडपत्र +thumbs.title=थंबनेल्स् दाखवा +thumbs_label=थंबनेल्स् +findbar.title=दस्तऐवजात शोधा +findbar_label=शोधा + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=पृष्ठ {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=पृष्ठाचे थंबनेल {{page}} + +# Find panel button title and messages +find_input.title=शोधा +find_input.placeholder=दस्तऐवजात शोधा… +find_previous.title=वाकप्रयोगची मागील घटना शोधा +find_previous_label=मागील +find_next.title=वाकप्रयोगची पुढील घटना शोधा +find_next_label=पुढील +find_highlight=सर्व ठळक करा +find_match_case_label=आकार जुळवा +find_entire_word_label=संपूर्ण शब्द +find_reached_top=दस्तऐवजाच्या शीर्षकास पोहचले, तळपासून पुढे +find_reached_bottom=दस्तऐवजाच्या तळाला पोहचले, शीर्षकापासून पुढे +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{total}} पैकी {{current}} सुसंगत +find_match_count[two]={{total}} पैकी {{current}} सुसंगत +find_match_count[few]={{total}} पैकी {{current}} सुसंगत +find_match_count[many]={{total}} पैकी {{current}} सुसंगत +find_match_count[other]={{total}} पैकी {{current}} सुसंगत +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]={{limit}} पेक्षा अधिक जुळण्या +find_match_count_limit[one]={{limit}} पेक्षा अधिक जुळण्या +find_match_count_limit[two]={{limit}} पेक्षा अधिक जुळण्या +find_match_count_limit[few]={{limit}} पेक्षा अधिक जुळण्या +find_match_count_limit[many]={{limit}} पेक्षा अधिक जुळण्या +find_match_count_limit[other]={{limit}} पेक्षा अधिक जुळण्या +find_not_found=वाकप्रयोग आढळले नाही + +# Error panel labels +error_more_info=आणखी माहिती +error_less_info=कमी माहिती +error_close=बंद करा +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=संदेश: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=स्टॅक: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=फाइल: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=रेष: {{line}} +rendering_error=पृष्ठ दाखवतेवेळी त्रुटी आढळली. + +# Predefined zoom values +page_scale_width=पृष्ठाची रूंदी +page_scale_fit=पृष्ठ बसवा +page_scale_auto=स्वयं लाहन किंवा मोठे करणे +page_scale_actual=प्रत्यक्ष आकार +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=PDF लोड करतेवेळी त्रुटी आढळली. +invalid_file_error=अवैध किंवा दोषीत PDF फाइल. +missing_file_error=न आढळणारी PDF फाइल. +unexpected_response_error=अनपेक्षित सर्व्हर प्रतिसाद. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} टिपण्णी] +password_label=ही PDF फाइल उघडण्याकरिता पासवर्ड द्या. +password_invalid=अवैध पासवर्ड. कृपया पुन्हा प्रयत्न करा. +password_ok=ठीक आहे +password_cancel=रद्द करा + +printing_not_supported=सावधानता: या ब्राउझरतर्फे छपाइ पूर्णपणे समर्थीत नाही. +printing_not_ready=सावधानता: छपाईकरिता PDF पूर्णतया लोड झाले नाही. +web_fonts_disabled=वेब टंक असमर्थीत आहेत: एम्बेडेड PDF टंक वापर अशक्य. + diff --git a/www/include/vendor/pdfjs/web/locale/ms/viewer.properties b/www/include/vendor/pdfjs/web/locale/ms/viewer.properties new file mode 100644 index 0000000..21542e2 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/ms/viewer.properties @@ -0,0 +1,235 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Halaman Dahulu +previous_label=Dahulu +next.title=Halaman Berikut +next_label=Berikut + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Halaman +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=daripada {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} daripada {{pagesCount}}) + +zoom_out.title=Zum Keluar +zoom_out_label=Zum Keluar +zoom_in.title=Zum Masuk +zoom_in_label=Zum Masuk +zoom.title=Zum +presentation_mode.title=Tukar ke Mod Persembahan +presentation_mode_label=Mod Persembahan +open_file.title=Buka Fail +open_file_label=Buka +print.title=Cetak +print_label=Cetak +download.title=Muat turun +download_label=Muat turun +bookmark.title=Paparan semasa (salin atau buka dalam tetingkap baru) +bookmark_label=Paparan Semasa + +# Secondary toolbar and context menu +tools.title=Alatan +tools_label=Alatan +first_page.title=Pergi ke Halaman Pertama +first_page_label=Pergi ke Halaman Pertama +last_page.title=Pergi ke Halaman Terakhir +last_page_label=Pergi ke Halaman Terakhir +page_rotate_cw.title=Berputar ikut arah Jam +page_rotate_cw_label=Berputar ikut arah Jam +page_rotate_ccw.title=Pusing berlawan arah jam +page_rotate_ccw_label=Pusing berlawan arah jam + +cursor_text_select_tool.title=Dayakan Alatan Pilihan Teks +cursor_text_select_tool_label=Alatan Pilihan Teks +cursor_hand_tool.title=Dayakan Alatan Tangan +cursor_hand_tool_label=Alatan Tangan + +scroll_vertical.title=Guna Skrol Menegak +scroll_vertical_label=Skrol Menegak +scroll_horizontal.title=Guna Skrol Mengufuk +scroll_horizontal_label=Skrol Mengufuk +scroll_wrapped.title=Guna Skrol Berbalut +scroll_wrapped_label=Skrol Berbalut + +spread_none.title=Jangan hubungkan hamparan halaman +spread_none_label=Tanpa Hamparan +spread_odd.title=Hubungkan hamparan halaman dengan halaman nombor ganjil +spread_odd_label=Hamparan Ganjil +spread_even.title=Hubungkan hamparan halaman dengan halaman nombor genap +spread_even_label=Hamparan Seimbang + +# Document properties dialog box +document_properties.title=Sifat Dokumen… +document_properties_label=Sifat Dokumen… +document_properties_file_name=Nama fail: +document_properties_file_size=Saiz fail: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bait) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bait) +document_properties_title=Tajuk: +document_properties_author=Pengarang: +document_properties_subject=Subjek: +document_properties_keywords=Kata kunci: +document_properties_creation_date=Masa Dicipta: +document_properties_modification_date=Tarikh Ubahsuai: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Pencipta: +document_properties_producer=Pengeluar PDF: +document_properties_version=Versi PDF: +document_properties_page_count=Kiraan Laman: +document_properties_page_size=Saiz Halaman: +document_properties_page_size_unit_inches=dalam +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=potret +document_properties_page_size_orientation_landscape=landskap +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Paparan Web Pantas: +document_properties_linearized_yes=Ya +document_properties_linearized_no=Tidak +document_properties_close=Tutup + +print_progress_message=Menyediakan dokumen untuk dicetak… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Batal + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Togol Bar Sisi +toggle_sidebar_label=Togol Bar Sisi +document_outline.title=Papar Rangka Dokumen (klik-dua-kali untuk kembangkan/kolaps semua item) +document_outline_label=Rangka Dokumen +attachments.title=Papar Lampiran +attachments_label=Lampiran +thumbs.title=Papar Thumbnails +thumbs_label=Imej kecil +findbar.title=Cari didalam Dokumen +findbar_label=Cari + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Halaman {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Halaman Imej kecil {{page}} + +# Find panel button title and messages +find_input.title=Cari +find_input.placeholder=Cari dalam dokumen… +find_previous.title=Cari teks frasa berkenaan yang terdahulu +find_previous_label=Dahulu +find_next.title=Cari teks frasa berkenaan yang berikut +find_next_label=Berikut +find_highlight=Serlahkan semua +find_match_case_label=Huruf sepadan +find_entire_word_label=Seluruh perkataan +find_reached_top=Mencapai teratas daripada dokumen, sambungan daripada bawah +find_reached_bottom=Mencapai terakhir daripada dokumen, sambungan daripada atas +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} daripada {{total}} padanan +find_match_count[two]={{current}} daripada {{total}} padanan +find_match_count[few]={{current}} daripada {{total}} padanan +find_match_count[many]={{current}} daripada {{total}} padanan +find_match_count[other]={{current}} daripada {{total}} padanan +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Lebih daripada {{limit}} padanan +find_match_count_limit[one]=Lebih daripada {{limit}} padanan +find_match_count_limit[two]=Lebih daripada {{limit}} padanan +find_match_count_limit[few]=Lebih daripada {{limit}} padanan +find_match_count_limit[many]=Lebih daripada {{limit}} padanan +find_match_count_limit[other]=Lebih daripada {{limit}} padanan +find_not_found=Frasa tidak ditemui + +# Error panel labels +error_more_info=Maklumat Lanjut +error_less_info=Kurang Informasi +error_close=Tutup +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Mesej: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Timbun: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fail: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Garis: {{line}} +rendering_error=Ralat berlaku ketika memberikan halaman. + +# Predefined zoom values +page_scale_width=Lebar Halaman +page_scale_fit=Muat Halaman +page_scale_auto=Zoom Automatik +page_scale_actual=Saiz Sebenar +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=Masalah berlaku semasa menuatkan sebuah PDF. +invalid_file_error=Tidak sah atau fail PDF rosak. +missing_file_error=Fail PDF Hilang. +unexpected_response_error=Respon pelayan yang tidak dijangka. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Anotasi] +password_label=Masukan kata kunci untuk membuka fail PDF ini. +password_invalid=Kata laluan salah. Cuba lagi. +password_ok=OK +password_cancel=Batal + +printing_not_supported=Amaran: Cetakan ini tidak sepenuhnya disokong oleh pelayar ini. +printing_not_ready=Amaran: PDF tidak sepenuhnya dimuatkan untuk dicetak. +web_fonts_disabled=Fon web dinyahdayakan: tidak dapat menggunakan fon terbenam PDF. + diff --git a/www/include/vendor/pdfjs/web/locale/my/viewer.properties b/www/include/vendor/pdfjs/web/locale/my/viewer.properties new file mode 100644 index 0000000..0c97432 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/my/viewer.properties @@ -0,0 +1,191 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=အရင် စာမျက်နှာ +previous_label=အရင်နေရာ +next.title=ရှေ့ စာမျက်နှာ +next_label=နောက်တခု + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=စာမျက်နှာ +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}} ၏ +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pagesCount}} ၏ {{pageNumber}}) + +zoom_out.title=ချုံ့ပါ +zoom_out_label=ချုံ့ပါ +zoom_in.title=ချဲ့ပါ +zoom_in_label=ချဲ့ပါ +zoom.title=ချုံ့/ချဲ့ပါ +presentation_mode.title=ဆွေးနွေးတင်ပြစနစ်သို့ ကူးပြောင်းပါ +presentation_mode_label=ဆွေးနွေးတင်ပြစနစ် +open_file.title=ဖိုင်အားဖွင့်ပါ။ +open_file_label=ဖွင့်ပါ +print.title=ပုံနှိုပ်ပါ +print_label=ပုံနှိုပ်ပါ +download.title=ကူးဆွဲ +download_label=ကူးဆွဲ +bookmark.title=လက်ရှိ မြင်ကွင်း (ဝင်းဒိုးအသစ်မှာ ကူးပါ သို့မဟုတ် ဖွင့်ပါ) +bookmark_label=လက်ရှိ မြင်ကွင်း + +# Secondary toolbar and context menu +tools.title=ကိရိယာများ +tools_label=ကိရိယာများ +first_page.title=ပထမ စာမျက်နှာသို့ +first_page_label=ပထမ စာမျက်နှာသို့ +last_page.title=နောက်ဆုံး စာမျက်နှာသို့ +last_page_label=နောက်ဆုံး စာမျက်နှာသို့ +page_rotate_cw.title=နာရီလက်တံ အတိုင်း +page_rotate_cw_label=နာရီလက်တံ အတိုင်း +page_rotate_ccw.title=နာရီလက်တံ ပြောင်းပြန် +page_rotate_ccw_label=နာရီလက်တံ ပြောင်းပြန် + + + + +# Document properties dialog box +document_properties.title=မှတ်တမ်းမှတ်ရာ ဂုဏ်သတ္တိများ +document_properties_label=မှတ်တမ်းမှတ်ရာ ဂုဏ်သတ္တိများ +document_properties_file_name=ဖိုင် : +document_properties_file_size=ဖိုင်ဆိုဒ် : +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} ကီလိုဘိုတ် ({{size_b}}ဘိုတ်) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=ခေါင်းစဉ်‌ - +document_properties_author=ရေးသားသူ: +document_properties_subject=အကြောင်းအရာ:\u0020 +document_properties_keywords=သော့ချက် စာလုံး: +document_properties_creation_date=ထုတ်လုပ်ရက်စွဲ: +document_properties_modification_date=ပြင်ဆင်ရက်စွဲ: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=ဖန်တီးသူ: +document_properties_producer=PDF ထုတ်လုပ်သူ: +document_properties_version=PDF ဗားရှင်း: +document_properties_page_count=စာမျက်နှာအရေအတွက်: +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_close=ပိတ် + +print_progress_message=Preparing document for printing… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=ပယ်​ဖျက်ပါ + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=ဘေးတန်းဖွင့်ပိတ် +toggle_sidebar_label=ဖွင့်ပိတ် ဆလိုက်ဒါ +document_outline.title=စာတမ်းအကျဉ်းချုပ်ကို ပြပါ (စာရင်းအားလုံးကို ချုံ့/ချဲ့ရန် ကလစ်နှစ်ချက်နှိပ်ပါ) +document_outline_label=စာတမ်းအကျဉ်းချုပ် +attachments.title=တွဲချက်များ ပြပါ +attachments_label=တွဲထားချက်များ +thumbs.title=ပုံရိပ်ငယ်များကို ပြပါ +thumbs_label=ပုံရိပ်ငယ်များ +findbar.title=Find in Document +findbar_label=ရှာဖွေပါ + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=စာမျက်နှာ {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=စာမျက်နှာရဲ့ ပုံရိပ်ငယ် {{page}} + +# Find panel button title and messages +find_input.title=ရှာဖွေပါ +find_input.placeholder=စာတမ်းထဲတွင် ရှာဖွေရန်… +find_previous.title=စကားစုရဲ့ အရင် ​ဖြစ်ပွားမှုကို ရှာဖွေပါ +find_previous_label=နောက်သို့ +find_next.title=စကားစုရဲ့ နောက်ထပ် ​ဖြစ်ပွားမှုကို ရှာဖွေပါ +find_next_label=ရှေ့သို့ +find_highlight=အားလုံးကို မျဉ်းသားပါ +find_match_case_label=စာလုံး တိုက်ဆိုင်ပါ +find_reached_top=စာမျက်နှာထိပ် ရောက်နေပြီ၊ အဆုံးကနေ ပြန်စပါ +find_reached_bottom=စာမျက်နှာအဆုံး ရောက်နေပြီ၊ ထိပ်ကနေ ပြန်စပါ +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_not_found=စကားစု မတွေ့ရဘူး + +# Error panel labels +error_more_info=နောက်ထပ်အချက်အလက်များ +error_less_info=အနည်းငယ်မျှသော သတင်းအချက်အလက် +error_close=ပိတ် +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=မက်ဆေ့ - {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=အထပ် - {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=ဖိုင် {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=လိုင်း - {{line}} +rendering_error=စာမျက်နှာကို ပုံဖော်နေချိန်မှာ အမှားတစ်ခုတွေ့ရပါတယ်။ + +# Predefined zoom values +page_scale_width=စာမျက်နှာ အကျယ် +page_scale_fit=စာမျက်နှာ ကွက်တိ +page_scale_auto=အလိုအလျောက် ချုံ့ချဲ့ +page_scale_actual=အမှန်တကယ်ရှိတဲ့ အရွယ် +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=PDF ဖိုင် ကိုဆွဲတင်နေချိန်မှာ အမှားတစ်ခုတွေ့ရပါတယ်။ +invalid_file_error=မရသော သို့ ပျက်နေသော PDF ဖိုင် +missing_file_error=PDF ပျောက်ဆုံး +unexpected_response_error=မမျှော်လင့်ထားသော ဆာဗာမှ ပြန်ကြားချက် + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} အဓိပ္ပာယ်ဖွင့်ဆိုချက်] +password_label=ယခု PDF ကို ဖွင့်ရန် စကားဝှက်ကို ရိုက်ပါ။ +password_invalid=စာဝှက် မှားသည်။ ထပ်ကြိုးစားကြည့်ပါ။ +password_ok=OK +password_cancel=ပယ်​ဖျက်ပါ + +printing_not_supported=သတိပေးချက်၊ပရင့်ထုတ်ခြင်းကိုဤဘယောက်ဆာသည် ပြည့်ဝစွာထောက်ပံ့မထားပါ ။ +printing_not_ready=သတိပေးချက်: ယခု PDF ဖိုင်သည် ပုံနှိပ်ရန် မပြည့်စုံပါ +web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. + diff --git a/www/include/vendor/pdfjs/web/locale/nb-NO/viewer.properties b/www/include/vendor/pdfjs/web/locale/nb-NO/viewer.properties new file mode 100644 index 0000000..266683c --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/nb-NO/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Forrige side +previous_label=Forrige +next.title=Neste side +next_label=Neste + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Side +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=av {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} av {{pagesCount}}) + +zoom_out.title=Zoom ut +zoom_out_label=Zoom ut +zoom_in.title=Zoom inn +zoom_in_label=Zoom inn +zoom.title=Zoom +presentation_mode.title=Bytt til presentasjonsmodus +presentation_mode_label=Presentasjonsmodus +open_file.title=Åpne fil +open_file_label=Åpne +print.title=Skriv ut +print_label=Skriv ut +download.title=Last ned +download_label=Last ned +save.title=Lagre +save_label=Lagre +bookmark.title=Nåværende visning (kopier eller åpne i et nytt vindu) +bookmark_label=Nåværende visning + +bookmark1.title=Gjeldende side (se URL fra gjeldende side) +bookmark1_label=Gjeldende side + +# Secondary toolbar and context menu +tools.title=Verktøy +tools_label=Verktøy +first_page.title=Gå til første side +first_page_label=Gå til første side +last_page.title=Gå til siste side +last_page_label=Gå til siste side +page_rotate_cw.title=Roter med klokken +page_rotate_cw_label=Roter med klokken +page_rotate_ccw.title=Roter mot klokken +page_rotate_ccw_label=Roter mot klokken + +cursor_text_select_tool.title=Aktiver tekstmarkeringsverktøy +cursor_text_select_tool_label=Tekstmarkeringsverktøy +cursor_hand_tool.title=Aktiver handverktøy +cursor_hand_tool_label=Handverktøy + +scroll_page.title=Bruk siderulling +scroll_page_label=Siderulling +scroll_vertical.title=Bruk vertikal rulling +scroll_vertical_label=Vertikal rulling +scroll_horizontal.title=Bruk horisontal rulling +scroll_horizontal_label=Horisontal rulling +scroll_wrapped.title=Bruk flersiderulling +scroll_wrapped_label=Flersiderulling + +spread_none.title=Vis enkeltsider +spread_none_label=Enkeltsider +spread_odd.title=Vis oppslag med ulike sidenumre til venstre +spread_odd_label=Oppslag med forside +spread_even.title=Vis oppslag med like sidenumre til venstre +spread_even_label=Oppslag uten forside + +# Document properties dialog box +document_properties.title=Dokumentegenskaper … +document_properties_label=Dokumentegenskaper … +document_properties_file_name=Filnavn: +document_properties_file_size=Filstørrelse: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Dokumentegenskaper … +document_properties_author=Forfatter: +document_properties_subject=Emne: +document_properties_keywords=Nøkkelord: +document_properties_creation_date=Opprettet dato: +document_properties_modification_date=Endret dato: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Opprettet av: +document_properties_producer=PDF-verktøy: +document_properties_version=PDF-versjon: +document_properties_page_count=Sideantall: +document_properties_page_size=Sidestørrelse: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=stående +document_properties_page_size_orientation_landscape=liggende +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Hurtig nettvisning: +document_properties_linearized_yes=Ja +document_properties_linearized_no=Nei +document_properties_close=Lukk + +print_progress_message=Forbereder dokument for utskrift … +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Avbryt + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Slå av/på sidestolpe +toggle_sidebar_notification2.title=Vis/gjem sidestolpe (dokumentet inneholder oversikt/vedlegg/lag) +toggle_sidebar_label=Slå av/på sidestolpe +document_outline.title=Vis dokumentdisposisjonen (dobbeltklikk for å utvide/skjule alle elementer) +document_outline_label=Dokumentdisposisjon +attachments.title=Vis vedlegg +attachments_label=Vedlegg +layers.title=Vis lag (dobbeltklikk for å tilbakestille alle lag til standardtilstand) +layers_label=Lag +thumbs.title=Vis miniatyrbilde +thumbs_label=Miniatyrbilde +current_outline_item.title=Finn gjeldende disposisjonselement +current_outline_item_label=Gjeldende disposisjonselement +findbar.title=Finn i dokumentet +findbar_label=Finn + +additional_layers=Ytterligere lag +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Side {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Side {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatyrbilde av side {{page}} + +# Find panel button title and messages +find_input.title=Søk +find_input.placeholder=Søk i dokument… +find_previous.title=Finn forrige forekomst av frasen +find_previous_label=Forrige +find_next.title=Finn neste forekomst av frasen +find_next_label=Neste +find_highlight=Uthev alle +find_match_case_label=Skill store/små bokstaver +find_match_diacritics_label=Samsvar diakritiske tegn +find_entire_word_label=Hele ord +find_reached_top=Nådde toppen av dokumentet, fortsetter fra bunnen +find_reached_bottom=Nådde bunnen av dokumentet, fortsetter fra toppen +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} av {{total}} treff +find_match_count[two]={{current}} av {{total}} treff +find_match_count[few]={{current}} av {{total}} treff +find_match_count[many]={{current}} av {{total}} treff +find_match_count[other]={{current}} av {{total}} treff +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Mer enn {{limit}} treff +find_match_count_limit[one]=Mer enn {{limit}} treff +find_match_count_limit[two]=Mer enn {{limit}} treff +find_match_count_limit[few]=Mer enn {{limit}} treff +find_match_count_limit[many]=Mer enn {{limit}} treff +find_match_count_limit[other]=Mer enn {{limit}} treff +find_not_found=Fant ikke teksten + +# Error panel labels +error_more_info=Mer info +error_less_info=Mindre info +error_close=Lukk +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (bygg: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Melding: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stakk: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fil: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Linje: {{line}} + +# Predefined zoom values +page_scale_width=Sidebredde +page_scale_fit=Tilpass til siden +page_scale_auto=Automatisk zoom +page_scale_actual=Virkelig størrelse +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}} % + +# Loading indicator messages +loading=Laster… +loading_error=En feil oppstod ved lasting av PDF. +invalid_file_error=Ugyldig eller skadet PDF-fil. +missing_file_error=Manglende PDF-fil. +unexpected_response_error=Uventet serverrespons. + +rendering_error=En feil oppstod ved opptegning av siden. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} annotasjon] +password_label=Skriv inn passordet for å åpne denne PDF-filen. +password_invalid=Ugyldig passord. Prøv igjen. +password_ok=OK +password_cancel=Avbryt + +printing_not_supported=Advarsel: Utskrift er ikke fullstendig støttet av denne nettleseren. +printing_not_ready=Advarsel: PDF er ikke fullstendig innlastet for utskrift. +web_fonts_disabled=Web-fonter er avslått: Kan ikke bruke innbundne PDF-fonter. + +# Editor +editor_free_text2.title=Tekst +editor_free_text2_label=Tekst +editor_ink2.title=Tegn +editor_ink2_label=Tegn + +free_text2_default_content=Begynn å skrive… + +# Editor Parameters +editor_free_text_color=Farge +editor_free_text_size=Størrelse +editor_ink_color=Farge +editor_ink_thickness=Tykkelse +editor_ink_opacity=Ugjennomsiktighet + +# Editor aria +editor_free_text2_aria_label=Tekstredigering +editor_ink2_aria_label=Tegneredigering +editor_ink_canvas_aria_label=Brukerskapt bilde diff --git a/www/include/vendor/pdfjs/web/locale/ne-NP/viewer.properties b/www/include/vendor/pdfjs/web/locale/ne-NP/viewer.properties new file mode 100644 index 0000000..cb7e424 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/ne-NP/viewer.properties @@ -0,0 +1,218 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=अघिल्लो पृष्ठ +previous_label=अघिल्लो +next.title=पछिल्लो पृष्ठ +next_label=पछिल्लो + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=पृष्ठ +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}} मध्ये +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pagesCount}} को {{pageNumber}}) + +zoom_out.title=जुम घटाउनुहोस् +zoom_out_label=जुम घटाउनुहोस् +zoom_in.title=जुम बढाउनुहोस् +zoom_in_label=जुम बढाउनुहोस् +zoom.title=जुम गर्नुहोस् +presentation_mode.title=प्रस्तुति मोडमा जानुहोस् +presentation_mode_label=प्रस्तुति मोड +open_file.title=फाइल खोल्नुहोस् +open_file_label=खोल्नुहोस् +print.title=मुद्रण गर्नुहोस् +print_label=मुद्रण गर्नुहोस् +download.title=डाउनलोडहरू +download_label=डाउनलोडहरू +bookmark.title=वर्तमान दृश्य (प्रतिलिपि गर्नुहोस् वा नयाँ सञ्झ्यालमा खुल्नुहोस्) +bookmark_label=हालको दृश्य + +# Secondary toolbar and context menu +tools.title=औजारहरू +tools_label=औजारहरू +first_page.title=पहिलो पृष्ठमा जानुहोस् +first_page_label=पहिलो पृष्ठमा जानुहोस् +last_page.title=पछिल्लो पृष्ठमा जानुहोस् +last_page_label=पछिल्लो पृष्ठमा जानुहोस् +page_rotate_cw.title=घडीको दिशामा घुमाउनुहोस् +page_rotate_cw_label=घडीको दिशामा घुमाउनुहोस् +page_rotate_ccw.title=घडीको विपरित दिशामा घुमाउनुहोस् +page_rotate_ccw_label=घडीको विपरित दिशामा घुमाउनुहोस् + +cursor_text_select_tool.title=पाठ चयन उपकरण सक्षम गर्नुहोस् +cursor_text_select_tool_label=पाठ चयन उपकरण +cursor_hand_tool.title=हाते उपकरण सक्षम गर्नुहोस् +cursor_hand_tool_label=हाते उपकरण + +scroll_vertical.title=ठाडो स्क्रोलिङ्ग प्रयोग गर्नुहोस् +scroll_vertical_label=ठाडो स्क्र्रोलिङ्ग +scroll_horizontal.title=तेर्सो स्क्रोलिङ्ग प्रयोग गर्नुहोस् +scroll_horizontal_label=तेर्सो स्क्रोलिङ्ग +scroll_wrapped.title=लिपि स्क्रोलिङ्ग प्रयोग गर्नुहोस् +scroll_wrapped_label=लिपि स्क्रोलिङ्ग + +spread_none.title=पृष्ठ स्प्रेडमा सामेल हुनुहुन्न +spread_none_label=स्प्रेड छैन + +# Document properties dialog box +document_properties.title=कागजात विशेषताहरू... +document_properties_label=कागजात विशेषताहरू... +document_properties_file_name=फाइल नाम: +document_properties_file_size=फाइल आकार: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=शीर्षक: +document_properties_author=लेखक: +document_properties_subject=विषयः +document_properties_keywords=शब्दकुञ्जीः +document_properties_creation_date=सिर्जना गरिएको मिति: +document_properties_modification_date=परिमार्जित मिति: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=सर्जक: +document_properties_producer=PDF निर्माता: +document_properties_version=PDF संस्करण +document_properties_page_count=पृष्ठ गणना: +document_properties_page_size=पृष्ठ आकार: +document_properties_page_size_unit_inches=इन्च +document_properties_page_size_unit_millimeters=मि.मि. +document_properties_page_size_orientation_portrait=पोट्रेट +document_properties_page_size_orientation_landscape=परिदृश्य +document_properties_page_size_name_letter=अक्षर +document_properties_page_size_name_legal=कानूनी +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized_yes=हो +document_properties_linearized_no=होइन +document_properties_close=बन्द गर्नुहोस् + +print_progress_message=मुद्रणका लागि कागजात तयारी गरिदै… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=रद्द गर्नुहोस् + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=टगल साइडबार +toggle_sidebar_label=टगल साइडबार +document_outline.title=कागजातको रूपरेखा देखाउनुहोस् (सबै वस्तुहरू विस्तार/पतन गर्न डबल-क्लिक गर्नुहोस्) +document_outline_label=दस्तावेजको रूपरेखा +attachments.title=संलग्नहरू देखाउनुहोस् +attachments_label=संलग्नकहरू +thumbs.title=थम्बनेलहरू देखाउनुहोस् +thumbs_label=थम्बनेलहरू +findbar.title=कागजातमा फेला पार्नुहोस् +findbar_label=फेला पार्नुहोस् + +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=पृष्ठ {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas={{page}} पृष्ठको थम्बनेल + +# Find panel button title and messages +find_input.title=फेला पार्नुहोस् +find_input.placeholder=कागजातमा फेला पार्नुहोस्… +find_previous.title=यस वाक्यांशको अघिल्लो घटना फेला पार्नुहोस् +find_previous_label=अघिल्लो +find_next.title=यस वाक्यांशको पछिल्लो घटना फेला पार्नुहोस् +find_next_label=अर्को +find_highlight=सबै हाइलाइट गर्ने +find_match_case_label=केस जोडा मिलाउनुहोस् +find_entire_word_label=पुरा शब्दहरु +find_reached_top=पृष्ठको शिर्षमा पुगीयो, तलबाट जारी गरिएको थियो +find_reached_bottom=पृष्ठको अन्त्यमा पुगीयो, शिर्षबाट जारी गरिएको थियो +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_not_found=वाक्यांश फेला परेन + +# Error panel labels +error_more_info=थप जानकारी +error_less_info=कम जानकारी +error_close=बन्द गर्नुहोस् +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=सन्देश: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=स्ट्याक: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=फाइल: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=लाइन: {{line}} +rendering_error=पृष्ठ प्रतिपादन गर्दा एउटा त्रुटि देखापर्‍यो। + +# Predefined zoom values +page_scale_width=पृष्ठ चौडाइ +page_scale_fit=पृष्ठ ठिक्क मिल्ने +page_scale_auto=स्वचालित जुम +page_scale_actual=वास्तविक आकार +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading_error=यो PDF लोड गर्दा एउटा त्रुटि देखापर्‍यो। +invalid_file_error=अवैध वा दुषित PDF फाइल। +missing_file_error=हराईरहेको PDF फाइल। +unexpected_response_error=अप्रत्याशित सर्भर प्रतिक्रिया। + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Annotation] +password_label=यस PDF फाइललाई खोल्न गोप्यशब्द प्रविष्ट गर्नुहोस्। +password_invalid=अवैध गोप्यशब्द। पुनः प्रयास गर्नुहोस्। +password_ok=ठिक छ +password_cancel=रद्द गर्नुहोस् + +printing_not_supported=चेतावनी: यो ब्राउजरमा मुद्रण पूर्णतया समर्थित छैन। +printing_not_ready=चेतावनी: PDF मुद्रणका लागि पूर्णतया लोड भएको छैन। +web_fonts_disabled=वेब फन्ट असक्षम छन्: एम्बेडेड PDF फन्ट प्रयोग गर्न असमर्थ। + diff --git a/www/include/vendor/pdfjs/web/locale/nl/viewer.properties b/www/include/vendor/pdfjs/web/locale/nl/viewer.properties new file mode 100644 index 0000000..0652576 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/nl/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Vorige pagina +previous_label=Vorige +next.title=Volgende pagina +next_label=Volgende + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Pagina +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=van {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} van {{pagesCount}}) + +zoom_out.title=Uitzoomen +zoom_out_label=Uitzoomen +zoom_in.title=Inzoomen +zoom_in_label=Inzoomen +zoom.title=Zoomen +presentation_mode.title=Wisselen naar presentatiemodus +presentation_mode_label=Presentatiemodus +open_file.title=Bestand openen +open_file_label=Openen +print.title=Afdrukken +print_label=Afdrukken +download.title=Downloaden +download_label=Downloaden +save.title=Opslaan +save_label=Opslaan +bookmark.title=Huidige weergave (kopiëren of openen in nieuw venster) +bookmark_label=Huidige weergave + +bookmark1.title=Huidige pagina (URL van huidige pagina bekijken) +bookmark1_label=Huidige pagina + +# Secondary toolbar and context menu +tools.title=Hulpmiddelen +tools_label=Hulpmiddelen +first_page.title=Naar eerste pagina gaan +first_page_label=Naar eerste pagina gaan +last_page.title=Naar laatste pagina gaan +last_page_label=Naar laatste pagina gaan +page_rotate_cw.title=Rechtsom draaien +page_rotate_cw_label=Rechtsom draaien +page_rotate_ccw.title=Linksom draaien +page_rotate_ccw_label=Linksom draaien + +cursor_text_select_tool.title=Tekstselectiehulpmiddel inschakelen +cursor_text_select_tool_label=Tekstselectiehulpmiddel +cursor_hand_tool.title=Handhulpmiddel inschakelen +cursor_hand_tool_label=Handhulpmiddel + +scroll_page.title=Paginascrollen gebruiken +scroll_page_label=Paginascrollen +scroll_vertical.title=Verticaal scrollen gebruiken +scroll_vertical_label=Verticaal scrollen +scroll_horizontal.title=Horizontaal scrollen gebruiken +scroll_horizontal_label=Horizontaal scrollen +scroll_wrapped.title=Scrollen met terugloop gebruiken +scroll_wrapped_label=Scrollen met terugloop + +spread_none.title=Dubbele pagina’s niet samenvoegen +spread_none_label=Geen dubbele pagina’s +spread_odd.title=Dubbele pagina’s samenvoegen vanaf oneven pagina’s +spread_odd_label=Oneven dubbele pagina’s +spread_even.title=Dubbele pagina’s samenvoegen vanaf even pagina’s +spread_even_label=Even dubbele pagina’s + +# Document properties dialog box +document_properties.title=Documenteigenschappen… +document_properties_label=Documenteigenschappen… +document_properties_file_name=Bestandsnaam: +document_properties_file_size=Bestandsgrootte: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Titel: +document_properties_author=Auteur: +document_properties_subject=Onderwerp: +document_properties_keywords=Sleutelwoorden: +document_properties_creation_date=Aanmaakdatum: +document_properties_modification_date=Wijzigingsdatum: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Maker: +document_properties_producer=PDF-producent: +document_properties_version=PDF-versie: +document_properties_page_count=Aantal pagina’s: +document_properties_page_size=Paginagrootte: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=staand +document_properties_page_size_orientation_landscape=liggend +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Snelle webweergave: +document_properties_linearized_yes=Ja +document_properties_linearized_no=Nee +document_properties_close=Sluiten + +print_progress_message=Document voorbereiden voor afdrukken… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Annuleren + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Zijbalk in-/uitschakelen +toggle_sidebar_notification2.title=Zijbalk in-/uitschakelen (document bevat overzicht/bijlagen/lagen) +toggle_sidebar_label=Zijbalk in-/uitschakelen +document_outline.title=Documentoverzicht tonen (dubbelklik om alle items uit/samen te vouwen) +document_outline_label=Documentoverzicht +attachments.title=Bijlagen tonen +attachments_label=Bijlagen +layers.title=Lagen tonen (dubbelklik om alle lagen naar de standaardstatus terug te zetten) +layers_label=Lagen +thumbs.title=Miniaturen tonen +thumbs_label=Miniaturen +current_outline_item.title=Huidig item in inhoudsopgave zoeken +current_outline_item_label=Huidig item in inhoudsopgave +findbar.title=Zoeken in document +findbar_label=Zoeken + +additional_layers=Aanvullende lagen +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Pagina {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Pagina {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatuur van pagina {{page}} + +# Find panel button title and messages +find_input.title=Zoeken +find_input.placeholder=Zoeken in document… +find_previous.title=De vorige overeenkomst van de tekst zoeken +find_previous_label=Vorige +find_next.title=De volgende overeenkomst van de tekst zoeken +find_next_label=Volgende +find_highlight=Alles markeren +find_match_case_label=Hoofdlettergevoelig +find_match_diacritics_label=Diakritische tekens gebruiken +find_entire_word_label=Hele woorden +find_reached_top=Bovenkant van document bereikt, doorgegaan vanaf onderkant +find_reached_bottom=Onderkant van document bereikt, doorgegaan vanaf bovenkant +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} van {{total}} overeenkomst +find_match_count[two]={{current}} van {{total}} overeenkomsten +find_match_count[few]={{current}} van {{total}} overeenkomsten +find_match_count[many]={{current}} van {{total}} overeenkomsten +find_match_count[other]={{current}} van {{total}} overeenkomsten +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Meer dan {{limit}} overeenkomsten +find_match_count_limit[one]=Meer dan {{limit}} overeenkomst +find_match_count_limit[two]=Meer dan {{limit}} overeenkomsten +find_match_count_limit[few]=Meer dan {{limit}} overeenkomsten +find_match_count_limit[many]=Meer dan {{limit}} overeenkomsten +find_match_count_limit[other]=Meer dan {{limit}} overeenkomsten +find_not_found=Tekst niet gevonden + +# Error panel labels +error_more_info=Meer informatie +error_less_info=Minder informatie +error_close=Sluiten +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Bericht: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Bestand: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Regel: {{line}} + +# Predefined zoom values +page_scale_width=Paginabreedte +page_scale_fit=Hele pagina +page_scale_auto=Automatisch zoomen +page_scale_actual=Werkelijke grootte +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Laden… +loading_error=Er is een fout opgetreden bij het laden van de PDF. +invalid_file_error=Ongeldig of beschadigd PDF-bestand. +missing_file_error=PDF-bestand ontbreekt. +unexpected_response_error=Onverwacht serverantwoord. + +rendering_error=Er is een fout opgetreden bij het weergeven van de pagina. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}}-aantekening] +password_label=Voer het wachtwoord in om dit PDF-bestand te openen. +password_invalid=Ongeldig wachtwoord. Probeer het opnieuw. +password_ok=OK +password_cancel=Annuleren + +printing_not_supported=Waarschuwing: afdrukken wordt niet volledig ondersteund door deze browser. +printing_not_ready=Waarschuwing: de PDF is niet volledig geladen voor afdrukken. +web_fonts_disabled=Weblettertypen zijn uitgeschakeld: gebruik van ingebedde PDF-lettertypen is niet mogelijk. + +# Editor +editor_free_text2.title=Tekst +editor_free_text2_label=Tekst +editor_ink2.title=Tekenen +editor_ink2_label=Tekenen + +free_text2_default_content=Begin met typen… + +# Editor Parameters +editor_free_text_color=Kleur +editor_free_text_size=Grootte +editor_ink_color=Kleur +editor_ink_thickness=Dikte +editor_ink_opacity=Opaciteit + +# Editor aria +editor_free_text2_aria_label=Tekstbewerker +editor_ink2_aria_label=Tekeningbewerker +editor_ink_canvas_aria_label=Door gebruiker gemaakte afbeelding diff --git a/www/include/vendor/pdfjs/web/locale/nn-NO/viewer.properties b/www/include/vendor/pdfjs/web/locale/nn-NO/viewer.properties new file mode 100644 index 0000000..af70d57 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/nn-NO/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Føregåande side +previous_label=Føregåande +next.title=Neste side +next_label=Neste + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Side +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=av {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} av {{pagesCount}}) + +zoom_out.title=Zoom ut +zoom_out_label=Zoom ut +zoom_in.title=Zoom inn +zoom_in_label=Zoom inn +zoom.title=Zoom +presentation_mode.title=Byt til presentasjonsmodus +presentation_mode_label=Presentasjonsmodus +open_file.title=Opne fil +open_file_label=Opne +print.title=Skriv ut +print_label=Skriv ut +download.title=Last ned +download_label=Last ned +save.title=Lagre +save_label=Lagre +bookmark.title=Gjeldande vising (kopier eller opne i nytt vindauge) +bookmark_label=Gjeldande vising + +bookmark1.title=Gjeldande side (sjå URL frå gjeldande side) +bookmark1_label=Gjeldande side + +# Secondary toolbar and context menu +tools.title=Verktøy +tools_label=Verktøy +first_page.title=Gå til første side +first_page_label=Gå til første side +last_page.title=Gå til siste side +last_page_label=Gå til siste side +page_rotate_cw.title=Roter med klokka +page_rotate_cw_label=Roter med klokka +page_rotate_ccw.title=Roter mot klokka +page_rotate_ccw_label=Roter mot klokka + +cursor_text_select_tool.title=Aktiver tekstmarkeringsverktøy +cursor_text_select_tool_label=Tekstmarkeringsverktøy +cursor_hand_tool.title=Aktiver handverktøy +cursor_hand_tool_label=Handverktøy + +scroll_page.title=Bruk siderulling +scroll_page_label=Siderulling +scroll_vertical.title=Bruk vertikal rulling +scroll_vertical_label=Vertikal rulling +scroll_horizontal.title=Bruk horisontal rulling +scroll_horizontal_label=Horisontal rulling +scroll_wrapped.title=Bruk fleirsiderulling +scroll_wrapped_label=Fleirsiderulling + +spread_none.title=Vis enkeltsider +spread_none_label=Enkeltside +spread_odd.title=Vis oppslag med ulike sidenummer til venstre +spread_odd_label=Oppslag med framside +spread_even.title=Vis oppslag med like sidenummmer til venstre +spread_even_label=Oppslag utan framside + +# Document properties dialog box +document_properties.title=Dokumenteigenskapar… +document_properties_label=Dokumenteigenskapar… +document_properties_file_name=Filnamn: +document_properties_file_size=Filstorleik: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Tittel: +document_properties_author=Forfattar: +document_properties_subject=Emne: +document_properties_keywords=Stikkord: +document_properties_creation_date=Dato oppretta: +document_properties_modification_date=Dato endra: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Oppretta av: +document_properties_producer=PDF-verktøy: +document_properties_version=PDF-versjon: +document_properties_page_count=Sidetal: +document_properties_page_size=Sidestørrelse: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=ståande +document_properties_page_size_orientation_landscape=liggande +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Brev +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Rask nettvising: +document_properties_linearized_yes=Ja +document_properties_linearized_no=Nei +document_properties_close=Lat att + +print_progress_message=Førebur dokumentet for utskrift… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Avbryt + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Slå av/på sidestolpe +toggle_sidebar_notification2.title=Vis/gøym sidestolpe (dokumentet inneheld oversikt/vedlegg/lag) +toggle_sidebar_label=Slå av/på sidestolpe +document_outline.title=Vis dokumentdisposisjonen (dobbelklikk for å utvide/gøyme alle elementa) +document_outline_label=Dokumentdisposisjon +attachments.title=Vis vedlegg +attachments_label=Vedlegg +layers.title=Vis lag (dobbeltklikk for å tilbakestille alle lag til standardtilstand) +layers_label=Lag +thumbs.title=Vis miniatyrbilde +thumbs_label=Miniatyrbilde +current_outline_item.title=Finn gjeldande disposisjonselement +current_outline_item_label=Gjeldande disposisjonselement +findbar.title=Finn i dokumentet +findbar_label=Finn + +additional_layers=Ytterlegare lag +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Side {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Side {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatyrbilde av side {{page}} + +# Find panel button title and messages +find_input.title=Søk +find_input.placeholder=Søk i dokument… +find_previous.title=Finn førre førekomst av frasen +find_previous_label=Førre +find_next.title=Finn neste førekomst av frasen +find_next_label=Neste +find_highlight=Uthev alle +find_match_case_label=Skil store/små bokstavar +find_match_diacritics_label=Samsvar diakritiske teikn +find_entire_word_label=Heile ord +find_reached_top=Nådde toppen av dokumentet, fortset frå botnen +find_reached_bottom=Nådde botnen av dokumentet, fortset frå toppen +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} av {{total}} treff +find_match_count[two]={{current}} av {{total}} treff +find_match_count[few]={{current}} av {{total}} treff +find_match_count[many]={{current}} av {{total}} treff +find_match_count[other]={{current}} av {{total}} treff +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Meir enn {{limit}} treff +find_match_count_limit[one]=Meir enn {{limit}} treff +find_match_count_limit[two]=Meir enn {{limit}} treff +find_match_count_limit[few]=Meir enn {{limit}} treff +find_match_count_limit[many]=Meir enn {{limit}} treff +find_match_count_limit[other]=Meir enn {{limit}} treff +find_not_found=Fann ikkje teksten + +# Error panel labels +error_more_info=Meir info +error_less_info=Mindre info +error_close=Lat att +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (bygg: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Melding: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stakk: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fil: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Linje: {{line}} + +# Predefined zoom values +page_scale_width=Sidebreidde +page_scale_fit=Tilpass til sida +page_scale_auto=Automatisk skalering +page_scale_actual=Verkeleg storleik +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Lastar… +loading_error=Ein feil oppstod ved lasting av PDF. +invalid_file_error=Ugyldig eller korrupt PDF-fil. +missing_file_error=Manglande PDF-fil. +unexpected_response_error=Uventa tenarrespons. + +rendering_error=Ein feil oppstod under vising av sida. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}} {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} annotasjon] +password_label=Skriv inn passordet for å opne denne PDF-fila. +password_invalid=Ugyldig passord. Prøv igjen. +password_ok=OK +password_cancel=Avbryt + +printing_not_supported=Åtvaring: Utskrift er ikkje fullstendig støtta av denne nettlesaren. +printing_not_ready=Åtvaring: PDF ikkje fullstendig innlasta for utskrift. +web_fonts_disabled=Web-skrifter er slått av: Kan ikkje bruke innbundne PDF-skrifter. + +# Editor +editor_free_text2.title=Tekst +editor_free_text2_label=Tekst +editor_ink2.title=Teikne +editor_ink2_label=Teikne + +free_text2_default_content=Byrje å skrive… + +# Editor Parameters +editor_free_text_color=Farge +editor_free_text_size=Storleik +editor_ink_color=Farge +editor_ink_thickness=Tjukkleik +editor_ink_opacity=Ugjennomskinleg + +# Editor aria +editor_free_text2_aria_label=Tekstredigering +editor_ink2_aria_label=Teikneredigering +editor_ink_canvas_aria_label=Brukarskapt bilde diff --git a/www/include/vendor/pdfjs/web/locale/oc/viewer.properties b/www/include/vendor/pdfjs/web/locale/oc/viewer.properties new file mode 100644 index 0000000..a5b5489 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/oc/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Pagina precedenta +previous_label=Precedent +next.title=Pagina seguenta +next_label=Seguent + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Pagina +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=sus {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} de {{pagesCount}}) + +zoom_out.title=Zoom arrièr +zoom_out_label=Zoom arrièr +zoom_in.title=Zoom avant +zoom_in_label=Zoom avant +zoom.title=Zoom +presentation_mode.title=Bascular en mòde presentacion +presentation_mode_label=Mòde Presentacion +open_file.title=Dobrir lo fichièr +open_file_label=Dobrir +print.title=Imprimir +print_label=Imprimir +download.title=Telecargar +download_label=Telecargar +save.title=Enregistrar +save_label=Enregistrar +bookmark.title=Afichatge corrent (copiar o dobrir dins una fenèstra novèla) +bookmark_label=Afichatge actual + +bookmark1.title=Pagina actuala (mostrar l’adreça de la pagina actuala) +bookmark1_label=Pagina actuala + +# Secondary toolbar and context menu +tools.title=Aisinas +tools_label=Aisinas +first_page.title=Anar a la primièra pagina +first_page_label=Anar a la primièra pagina +last_page.title=Anar a la darrièra pagina +last_page_label=Anar a la darrièra pagina +page_rotate_cw.title=Rotacion orària +page_rotate_cw_label=Rotacion orària +page_rotate_ccw.title=Rotacion antiorària +page_rotate_ccw_label=Rotacion antiorària + +cursor_text_select_tool.title=Activar l'aisina de seleccion de tèxte +cursor_text_select_tool_label=Aisina de seleccion de tèxte +cursor_hand_tool.title=Activar l’aisina man +cursor_hand_tool_label=Aisina man + +scroll_page.title=Activar lo defilament per pagina +scroll_page_label=Defilament per pagina +scroll_vertical.title=Utilizar lo defilament vertical +scroll_vertical_label=Defilament vertical +scroll_horizontal.title=Utilizar lo defilament orizontal +scroll_horizontal_label=Defilament orizontal +scroll_wrapped.title=Activar lo defilament continú +scroll_wrapped_label=Defilament continú + +spread_none.title=Agropar pas las paginas doas a doas +spread_none_label=Una sola pagina +spread_odd.title=Mostrar doas paginas en començant per las paginas imparas a esquèrra +spread_odd_label=Dobla pagina, impara a drecha +spread_even.title=Mostrar doas paginas en començant per las paginas paras a esquèrra +spread_even_label=Dobla pagina, para a drecha + +# Document properties dialog box +document_properties.title=Proprietats del document… +document_properties_label=Proprietats del document… +document_properties_file_name=Nom del fichièr : +document_properties_file_size=Talha del fichièr : +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} Ko ({{size_b}} octets) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} Mo ({{size_b}} octets) +document_properties_title=Títol : +document_properties_author=Autor : +document_properties_subject=Subjècte : +document_properties_keywords=Mots claus : +document_properties_creation_date=Data de creacion : +document_properties_modification_date=Data de modificacion : +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, a {{time}} +document_properties_creator=Creator : +document_properties_producer=Aisina de conversion PDF : +document_properties_version=Version PDF : +document_properties_page_count=Nombre de paginas : +document_properties_page_size=Talha de la pagina : +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=retrach +document_properties_page_size_orientation_landscape=païsatge +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letra +document_properties_page_size_name_legal=Document juridic +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Vista web rapida : +document_properties_linearized_yes=Òc +document_properties_linearized_no=Non +document_properties_close=Tampar + +print_progress_message=Preparacion del document per l’impression… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Anullar + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Afichar/amagar lo panèl lateral +toggle_sidebar_notification2.title=Afichar/amagar lo panèl lateral (lo document conten esquèmas/pèças juntas/calques) +toggle_sidebar_label=Afichar/amagar lo panèl lateral +document_outline.title=Mostrar los esquèmas del document (dobleclicar per espandre/reduire totes los elements) +document_outline_label=Marcapaginas del document +attachments.title=Visualizar las pèças juntas +attachments_label=Pèças juntas +layers.title=Afichar los calques (doble-clicar per reïnicializar totes los calques a l’estat per defaut) +layers_label=Calques +thumbs.title=Afichar las vinhetas +thumbs_label=Vinhetas +current_outline_item.title=Trobar l’element de plan actual +current_outline_item_label=Element de plan actual +findbar.title=Cercar dins lo document +findbar_label=Recercar + +additional_layers=Calques suplementaris +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Pagina {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Pagina {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Vinheta de la pagina {{page}} + +# Find panel button title and messages +find_input.title=Recercar +find_input.placeholder=Cercar dins lo document… +find_previous.title=Tròba l'ocurréncia precedenta de la frasa +find_previous_label=Precedent +find_next.title=Tròba l'ocurréncia venenta de la frasa +find_next_label=Seguent +find_highlight=Suslinhar tot +find_match_case_label=Respectar la cassa +find_match_diacritics_label=Respectar los diacritics +find_entire_word_label=Mots entièrs +find_reached_top=Naut de la pagina atenh, perseguida del bas +find_reached_bottom=Bas de la pagina atench, perseguida al començament +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]=Ocuréncia {{current}} sus {{total}} +find_match_count[two]=Ocuréncia {{current}} sus {{total}} +find_match_count[few]=Ocuréncia {{current}} sus {{total}} +find_match_count[many]=Ocuréncia {{current}} sus {{total}} +find_match_count[other]=Ocuréncia {{current}} sus {{total}} +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Mai de {{limit}} ocuréncias +find_match_count_limit[one]=Mai de {{limit}} ocuréncia +find_match_count_limit[two]=Mai de {{limit}} ocuréncias +find_match_count_limit[few]=Mai de {{limit}} ocuréncias +find_match_count_limit[many]=Mai de {{limit}} ocuréncias +find_match_count_limit[other]=Mai de {{limit}} ocuréncias +find_not_found=Frasa pas trobada + +# Error panel labels +error_more_info=Mai de detalhs +error_less_info=Mens d'informacions +error_close=Tampar +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (identificant de compilacion : {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Messatge : {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Pila : {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fichièr : {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Linha : {{line}} + +# Predefined zoom values +page_scale_width=Largor plena +page_scale_fit=Pagina entièra +page_scale_auto=Zoom automatic +page_scale_actual=Talha vertadièra +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Cargament… +loading_error=Una error s'es producha pendent lo cargament del fichièr PDF. +invalid_file_error=Fichièr PDF invalid o corromput. +missing_file_error=Fichièr PDF mancant. +unexpected_response_error=Responsa de servidor imprevista. + +rendering_error=Una error s'es producha pendent l'afichatge de la pagina. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}} a {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anotacion {{type}}] +password_label=Picatz lo senhal per dobrir aqueste fichièr PDF. +password_invalid=Senhal incorrècte. Tornatz ensajar. +password_ok=D'acòrdi +password_cancel=Anullar + +printing_not_supported=Atencion : l'impression es pas complètament gerida per aqueste navegador. +printing_not_ready=Atencion : lo PDF es pas entièrament cargat per lo poder imprimir. +web_fonts_disabled=Las polissas web son desactivadas : impossible d'utilizar las polissas integradas al PDF. + +# Editor +editor_free_text2.title=Tèxte +editor_free_text2_label=Tèxte +editor_ink2.title=Dessenhar +editor_ink2_label=Dessenhar + +free_text2_default_content=Començatz d’escriure… + +# Editor Parameters +editor_free_text_color=Color +editor_free_text_size=Talha +editor_ink_color=Color +editor_ink_thickness=Espessor +editor_ink_opacity=Opacitat + +# Editor aria +editor_free_text2_aria_label=Editor de tèxte +editor_ink2_aria_label=Editor de dessenh +editor_ink_canvas_aria_label=Imatge creat per l’utilizaire diff --git a/www/include/vendor/pdfjs/web/locale/pa-IN/viewer.properties b/www/include/vendor/pdfjs/web/locale/pa-IN/viewer.properties new file mode 100644 index 0000000..0549261 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/pa-IN/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=ਪਿਛਲਾ ਸਫ਼ਾ +previous_label=ਪਿੱਛੇ +next.title=ਅਗਲਾ ਸਫ਼ਾ +next_label=ਅੱਗੇ + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=ਸਫ਼ਾ +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}} ਵਿੱਚੋਂ +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages={{pagesCount}}) ਵਿੱਚੋਂ ({{pageNumber}} + +zoom_out.title=ਜ਼ੂਮ ਆਉਟ +zoom_out_label=ਜ਼ੂਮ ਆਉਟ +zoom_in.title=ਜ਼ੂਮ ਇਨ +zoom_in_label=ਜ਼ੂਮ ਇਨ +zoom.title=ਜ਼ੂਨ +presentation_mode.title=ਪਰਿਜੈਂਟੇਸ਼ਨ ਮੋਡ ਵਿੱਚ ਜਾਓ +presentation_mode_label=ਪਰਿਜੈਂਟੇਸ਼ਨ ਮੋਡ +open_file.title=ਫਾਈਲ ਨੂੰ ਖੋਲ੍ਹੋ +open_file_label=ਖੋਲ੍ਹੋ +print.title=ਪਰਿੰਟ +print_label=ਪਰਿੰਟ +download.title=ਡਾਊਨਲੋਡ +download_label=ਡਾਊਨਲੋਡ +save.title=ਸੰਭਾਲੋ +save_label=ਸੰਭਾਲੋ +bookmark.title=ਮੌਜੂਦਾ ਝਲਕ (ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਕਾਪੀ ਕਰੋ ਜਾਂ ਖੋਲ੍ਹੋ) +bookmark_label=ਮੌਜੂਦਾ ਝਲਕ + +bookmark1.title=ਮੌਜੂਦਾ ਸਫ਼਼ਾ (ਮੌਜੂਦਾ ਸਫ਼ੇ ਤੋਂ URL ਵੇਖੋ) +bookmark1_label=ਮੌਜੂਦਾ ਸਫ਼਼ਾ + +# Secondary toolbar and context menu +tools.title=ਟੂਲ +tools_label=ਟੂਲ +first_page.title=ਪਹਿਲੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ +first_page_label=ਪਹਿਲੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ +last_page.title=ਆਖਰੀ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ +last_page_label=ਆਖਰੀ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ +page_rotate_cw.title=ਸੱਜੇ ਦਾਅ ਘੁੰਮਾਓ +page_rotate_cw_label=ਸੱਜੇ ਦਾਅ ਘੁੰਮਾਓ +page_rotate_ccw.title=ਖੱਬੇ ਦਾਅ ਘੁੰਮਾਓ +page_rotate_ccw_label=ਖੱਬੇ ਦਾਅ ਘੁੰਮਾਓ + +cursor_text_select_tool.title=ਲਿਖਤ ਚੋਣ ਟੂਲ ਸਮਰੱਥ ਕਰੋ +cursor_text_select_tool_label=ਲਿਖਤ ਚੋਣ ਟੂਲ +cursor_hand_tool.title=ਹੱਥ ਟੂਲ ਸਮਰੱਥ ਕਰੋ +cursor_hand_tool_label=ਹੱਥ ਟੂਲ + +scroll_page.title=ਸਫ਼ਾ ਖਿਸਕਾਉਣ ਨੂੰ ਵਰਤੋਂ +scroll_page_label=ਸਫ਼ਾ ਖਿਸਕਾਉਣਾ +scroll_vertical.title=ਖੜ੍ਹਵੇਂ ਸਕਰਾਉਣ ਨੂੰ ਵਰਤੋਂ +scroll_vertical_label=ਖੜ੍ਹਵਾਂ ਸਰਕਾਉਣਾ +scroll_horizontal.title=ਲੇਟਵੇਂ ਸਰਕਾਉਣ ਨੂੰ ਵਰਤੋਂ +scroll_horizontal_label=ਲੇਟਵਾਂ ਸਰਕਾਉਣਾ +scroll_wrapped.title=ਸਮੇਟੇ ਸਰਕਾਉਣ ਨੂੰ ਵਰਤੋਂ +scroll_wrapped_label=ਸਮੇਟਿਆ ਸਰਕਾਉਣਾ + +spread_none.title=ਸਫ਼ਾ ਫੈਲਾਅ ਵਿੱਚ ਸ਼ਾਮਲ ਨਾ ਹੋਵੋ +spread_none_label=ਕੋਈ ਫੈਲਾਅ ਨਹੀਂ +spread_odd.title=ਟਾਂਕ ਅੰਕ ਵਾਲੇ ਸਫ਼ਿਆਂ ਨਾਲ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲੇ ਸਫਿਆਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ +spread_odd_label=ਟਾਂਕ ਫੈਲਾਅ +spread_even.title=ਜਿਸਤ ਅੰਕ ਵਾਲੇ ਸਫ਼ਿਆਂ ਨਾਲ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲੇ ਸਫਿਆਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ +spread_even_label=ਜਿਸਤ ਫੈਲਾਅ + +# Document properties dialog box +document_properties.title=…ਦਸਤਾਵੇਜ਼ ਦੀ ਵਿਸ਼ੇਸ਼ਤਾ +document_properties_label=…ਦਸਤਾਵੇਜ਼ ਦੀ ਵਿਸ਼ੇਸ਼ਤਾ +document_properties_file_name=ਫਾਈਲ ਦਾ ਨਾਂ: +document_properties_file_size=ਫਾਈਲ ਦਾ ਆਕਾਰ: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} ਬਾਈਟ) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} ਬਾਈਟ) +document_properties_title=ਟਾਈਟਲ: +document_properties_author=ਲੇਖਕ: +document_properties_subject=ਵਿਸ਼ਾ: +document_properties_keywords=ਸ਼ਬਦ: +document_properties_creation_date=ਬਣਾਉਣ ਦੀ ਮਿਤੀ: +document_properties_modification_date=ਸੋਧ ਦੀ ਮਿਤੀ: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=ਨਿਰਮਾਤਾ: +document_properties_producer=PDF ਪ੍ਰੋਡਿਊਸਰ: +document_properties_version=PDF ਵਰਜਨ: +document_properties_page_count=ਸਫ਼ੇ ਦੀ ਗਿਣਤੀ: +document_properties_page_size=ਸਫ਼ਾ ਆਕਾਰ: +document_properties_page_size_unit_inches=ਇੰਚ +document_properties_page_size_unit_millimeters=ਮਿਮੀ +document_properties_page_size_orientation_portrait=ਪੋਰਟਰੇਟ +document_properties_page_size_orientation_landscape=ਲੈਂਡਸਕੇਪ +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=ਲੈਟਰ +document_properties_page_size_name_legal=ਕਨੂੰਨੀ +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=ਤੇਜ਼ ਵੈੱਬ ਝਲਕ: +document_properties_linearized_yes=ਹਾਂ +document_properties_linearized_no=ਨਹੀਂ +document_properties_close=ਬੰਦ ਕਰੋ + +print_progress_message=…ਪਰਿੰਟ ਕਰਨ ਲਈ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਤਿਆਰ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=ਰੱਦ ਕਰੋ + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=ਬਾਹੀ ਬਦਲੋ +toggle_sidebar_notification2.title=ਬਾਹੀ ਨੂੰ ਬਦਲੋ (ਦਸਤਾਵੇਜ਼ ਖਾਕਾ/ਅਟੈਚਮੈਂਟ/ਪਰਤਾਂ ਰੱਖਦਾ ਹੈ) +toggle_sidebar_label=ਬਾਹੀ ਬਦਲੋ +document_outline.title=ਦਸਤਾਵੇਜ਼ ਖਾਕਾ ਦਿਖਾਓ (ਸਾਰੀਆਂ ਆਈਟਮਾਂ ਨੂੰ ਫੈਲਾਉਣ/ਸਮੇਟਣ ਲਈ ਦੋ ਵਾਰ ਕਲਿੱਕ ਕਰੋ) +document_outline_label=ਦਸਤਾਵੇਜ਼ ਖਾਕਾ +attachments.title=ਅਟੈਚਮੈਂਟ ਵੇਖਾਓ +attachments_label=ਅਟੈਚਮੈਂਟਾਂ +layers.title=ਪਰਤਾਂ ਵੇਖਾਓ (ਸਾਰੀਆਂ ਪਰਤਾਂ ਨੂੰ ਮੂਲ ਹਾਲਤ ਉੱਤੇ ਮੁੜ-ਸੈੱਟ ਕਰਨ ਲਈ ਦੋ ਵਾਰ ਕਲਿੱਕ ਕਰੋ) +layers_label=ਪਰਤਾਂ +thumbs.title=ਥੰਮਨੇਲ ਨੂੰ ਵੇਖਾਓ +thumbs_label=ਥੰਮਨੇਲ +current_outline_item.title=ਮੌੌਜੂਦਾ ਖਾਕਾ ਚੀਜ਼ ਲੱਭੋ +current_outline_item_label=ਮੌਜੂਦਾ ਖਾਕਾ ਚੀਜ਼ +findbar.title=ਦਸਤਾਵੇਜ਼ ਵਿੱਚ ਲੱਭੋ +findbar_label=ਲੱਭੋ + +additional_layers=ਵਾਧੂ ਪਰਤਾਂ +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=ਸਫ਼ਾ {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=ਸਫ਼ਾ {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas={{page}} ਸਫ਼ੇ ਦਾ ਥੰਮਨੇਲ + +# Find panel button title and messages +find_input.title=ਲੱਭੋ +find_input.placeholder=…ਦਸਤਾਵੇਜ਼ 'ਚ ਲੱਭੋ +find_previous.title=ਵਾਕ ਦੀ ਪਿਛਲੀ ਮੌਜੂਦਗੀ ਲੱਭੋ +find_previous_label=ਪਿੱਛੇ +find_next.title=ਵਾਕ ਦੀ ਅਗਲੀ ਮੌਜੂਦਗੀ ਲੱਭੋ +find_next_label=ਅੱਗੇ +find_highlight=ਸਭ ਉਭਾਰੋ +find_match_case_label=ਅੱਖਰ ਆਕਾਰ ਨੂੰ ਮਿਲਾਉ +find_match_diacritics_label=ਭੇਦਸੂਚਕ ਮੇਲ +find_entire_word_label=ਪੂਰੇ ਸ਼ਬਦ +find_reached_top=ਦਸਤਾਵੇਜ਼ ਦੇ ਉੱਤੇ ਆ ਗਏ ਹਾਂ, ਥੱਲੇ ਤੋਂ ਜਾਰੀ ਰੱਖਿਆ ਹੈ +find_reached_bottom=ਦਸਤਾਵੇਜ਼ ਦੇ ਅੰਤ ਉੱਤੇ ਆ ਗਏ ਹਾਂ, ਉੱਤੇ ਤੋਂ ਜਾਰੀ ਰੱਖਿਆ ਹੈ +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{total}} ਵਿੱਚੋਂ {{current}} ਮੇਲ +find_match_count[two]={{total}} ਵਿੱਚੋਂ {{current}} ਮੇਲ +find_match_count[few]={{total}} ਵਿੱਚੋਂ {{current}} ਮੇਲ +find_match_count[many]={{total}} ਵਿੱਚੋਂ {{current}} ਮੇਲ +find_match_count[other]={{total}} ਵਿੱਚੋਂ {{current}} ਮੇਲ +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]={{limit}} ਮੇਲਾਂ ਤੋਂ ਵੱਧ +find_match_count_limit[one]={{limit}} ਮੇਲ ਤੋਂ ਵੱਧ +find_match_count_limit[two]={{limit}} ਮੇਲਾਂ ਤੋਂ ਵੱਧ +find_match_count_limit[few]={{limit}} ਮੇਲਾਂ ਤੋਂ ਵੱਧ +find_match_count_limit[many]={{limit}} ਮੇਲਾਂ ਤੋਂ ਵੱਧ +find_match_count_limit[other]={{limit}} ਮੇਲਾਂ ਤੋਂ ਵੱਧ +find_not_found=ਵਾਕ ਨਹੀਂ ਲੱਭਿਆ + +# Error panel labels +error_more_info=ਹੋਰ ਜਾਣਕਾਰੀ +error_less_info=ਘੱਟ ਜਾਣਕਾਰੀ +error_close=ਬੰਦ ਕਰੋ +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (ਬਿਲਡ: {{build}} +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=ਸੁਨੇਹਾ: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=ਸਟੈਕ: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=ਫਾਈਲ: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=ਲਾਈਨ: {{line}} + +# Predefined zoom values +page_scale_width=ਸਫ਼ੇ ਦੀ ਚੌੜਾਈ +page_scale_fit=ਸਫ਼ਾ ਫਿੱਟ +page_scale_auto=ਆਟੋਮੈਟਿਕ ਜ਼ੂਮ ਕਰੋ +page_scale_actual=ਆਟੋਮੈਟਿਕ ਆਕਾਰ +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=…ਲੋਡ ਹੋ ਰਿਹਾ ਹੈ +loading_error=PDF ਲੋਡ ਕਰਨ ਦੇ ਦੌਰਾਨ ਗਲਤੀ ਆਈ ਹੈ। +invalid_file_error=ਗਲਤ ਜਾਂ ਨਿਕਾਰਾ PDF ਫਾਈਲ ਹੈ। +missing_file_error=ਨਾ-ਮੌਜੂਦ PDF ਫਾਈਲ। +unexpected_response_error=ਅਣਜਾਣ ਸਰਵਰ ਜਵਾਬ। + +rendering_error=ਸਫ਼ਾ ਰੈਡਰ ਕਰਨ ਦੇ ਦੌਰਾਨ ਗਲਤੀ ਆਈ ਹੈ। + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} ਵਿਆਖਿਆ] +password_label=ਇਹ PDF ਫਾਈਲ ਨੂੰ ਖੋਲ੍ਹਣ ਲਈ ਪਾਸਵਰਡ ਦਿਉ। +password_invalid=ਗਲਤ ਪਾਸਵਰਡ। ਫੇਰ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੀ। +password_ok=ਠੀਕ ਹੈ +password_cancel=ਰੱਦ ਕਰੋ + +printing_not_supported=ਸਾਵਧਾਨ: ਇਹ ਬਰਾਊਜ਼ਰ ਪਰਿੰਟ ਕਰਨ ਲਈ ਪੂਰੀ ਤਰ੍ਹਾਂ ਸਹਾਇਕ ਨਹੀਂ ਹੈ। +printing_not_ready=ਸਾਵਧਾਨ: PDF ਨੂੰ ਪਰਿੰਟ ਕਰਨ ਲਈ ਪੂਰੀ ਤਰ੍ਹਾਂ ਲੋਡ ਨਹੀਂ ਹੈ। +web_fonts_disabled=ਵੈਬ ਫੋਂਟ ਬੰਦ ਹਨ: ਇੰਬੈਡ PDF ਫੋਂਟ ਨੂੰ ਵਰਤਣ ਲਈ ਅਸਮਰੱਥ ਹੈ। + +# Editor +editor_free_text2.title=ਲਿਖਤ +editor_free_text2_label=ਲਿਖਤ +editor_ink2.title=ਵਾਹੋ +editor_ink2_label=ਵਾਹੋ + +free_text2_default_content=…ਲਿਖਣਾ ਸ਼ੁਰੂ ਕਰੋ + +# Editor Parameters +editor_free_text_color=ਰੰਗ +editor_free_text_size=ਆਕਾਰ +editor_ink_color=ਰੰਗ +editor_ink_thickness=ਮੋਟਾਈ +editor_ink_opacity=ਧੁੰਦਲਾਪਨ + +# Editor aria +editor_free_text2_aria_label=ਲਿਖਤ ਐਡੀਟਰ +editor_ink2_aria_label=ਵਹਾਉਣ ਐਡੀਟਰ +editor_ink_canvas_aria_label=ਵਰਤੋਂਕਾਰ ਵਲੋਂ ਬਣਾਇਆ ਚਿੱਤਰ diff --git a/www/include/vendor/pdfjs/web/locale/pl/viewer.properties b/www/include/vendor/pdfjs/web/locale/pl/viewer.properties new file mode 100644 index 0000000..dc1531d --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/pl/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Poprzednia strona +previous_label=Poprzednia +next.title=Następna strona +next_label=Następna + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Strona +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=z {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} z {{pagesCount}}) + +zoom_out.title=Pomniejsz +zoom_out_label=Pomniejsz +zoom_in.title=Powiększ +zoom_in_label=Powiększ +zoom.title=Skala +presentation_mode.title=Przełącz na tryb prezentacji +presentation_mode_label=Tryb prezentacji +open_file.title=Otwórz plik +open_file_label=Otwórz +print.title=Drukuj +print_label=Drukuj +download.title=Pobierz +download_label=Pobierz +save.title=Zapisz +save_label=Zapisz +bookmark.title=Bieżąca pozycja (skopiuj lub otwórz jako odnośnik w nowym oknie) +bookmark_label=Bieżąca pozycja + +bookmark1.title=Bieżąca strona (adres do otwarcia na bieżącej stronie) +bookmark1_label=Bieżąca strona + +# Secondary toolbar and context menu +tools.title=Narzędzia +tools_label=Narzędzia +first_page.title=Przejdź do pierwszej strony +first_page_label=Przejdź do pierwszej strony +last_page.title=Przejdź do ostatniej strony +last_page_label=Przejdź do ostatniej strony +page_rotate_cw.title=Obróć zgodnie z ruchem wskazówek zegara +page_rotate_cw_label=Obróć zgodnie z ruchem wskazówek zegara +page_rotate_ccw.title=Obróć przeciwnie do ruchu wskazówek zegara +page_rotate_ccw_label=Obróć przeciwnie do ruchu wskazówek zegara + +cursor_text_select_tool.title=Włącz narzędzie zaznaczania tekstu +cursor_text_select_tool_label=Narzędzie zaznaczania tekstu +cursor_hand_tool.title=Włącz narzędzie rączka +cursor_hand_tool_label=Narzędzie rączka + +scroll_page.title=Przewijaj strony +scroll_page_label=Przewijanie stron +scroll_vertical.title=Przewijaj dokument w pionie +scroll_vertical_label=Przewijanie pionowe +scroll_horizontal.title=Przewijaj dokument w poziomie +scroll_horizontal_label=Przewijanie poziome +scroll_wrapped.title=Strony dokumentu wyświetlaj i przewijaj w kolumnach +scroll_wrapped_label=Widok dwóch stron + +spread_none.title=Nie ustawiaj stron obok siebie +spread_none_label=Brak kolumn +spread_odd.title=Strony nieparzyste ustawiaj na lewo od parzystych +spread_odd_label=Nieparzyste po lewej +spread_even.title=Strony parzyste ustawiaj na lewo od nieparzystych +spread_even_label=Parzyste po lewej + +# Document properties dialog box +document_properties.title=Właściwości dokumentu… +document_properties_label=Właściwości dokumentu… +document_properties_file_name=Nazwa pliku: +document_properties_file_size=Rozmiar pliku: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} B) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} B) +document_properties_title=Tytuł: +document_properties_author=Autor: +document_properties_subject=Temat: +document_properties_keywords=Słowa kluczowe: +document_properties_creation_date=Data utworzenia: +document_properties_modification_date=Data modyfikacji: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Utworzony przez: +document_properties_producer=PDF wyprodukowany przez: +document_properties_version=Wersja PDF: +document_properties_page_count=Liczba stron: +document_properties_page_size=Wymiary strony: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=pionowa +document_properties_page_size_orientation_landscape=pozioma +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=US Letter +document_properties_page_size_name_legal=US Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}}×{{height}} {{unit}} (orientacja {{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}}×{{height}} {{unit}} ({{name}}, orientacja {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Szybki podgląd w Internecie: +document_properties_linearized_yes=tak +document_properties_linearized_no=nie +document_properties_close=Zamknij + +print_progress_message=Przygotowywanie dokumentu do druku… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Anuluj + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Przełącz panel boczny +toggle_sidebar_notification2.title=Przełącz panel boczny (dokument zawiera konspekt/załączniki/warstwy) +toggle_sidebar_label=Przełącz panel boczny +document_outline.title=Konspekt dokumentu (podwójne kliknięcie rozwija lub zwija wszystkie pozycje) +document_outline_label=Konspekt dokumentu +attachments.title=Załączniki +attachments_label=Załączniki +layers.title=Warstwy (podwójne kliknięcie przywraca wszystkie warstwy do stanu domyślnego) +layers_label=Warstwy +thumbs.title=Miniatury +thumbs_label=Miniatury +current_outline_item.title=Znajdź bieżący element konspektu +current_outline_item_label=Bieżący element konspektu +findbar.title=Znajdź w dokumencie +findbar_label=Znajdź + +additional_layers=Dodatkowe warstwy +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark={{page}}. strona +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title={{page}}. strona +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura {{page}}. strony + +# Find panel button title and messages +find_input.title=Znajdź +find_input.placeholder=Znajdź w dokumencie… +find_previous.title=Znajdź poprzednie wystąpienie tekstu +find_previous_label=Poprzednie +find_next.title=Znajdź następne wystąpienie tekstu +find_next_label=Następne +find_highlight=Wyróżnianie wszystkich +find_match_case_label=Rozróżnianie wielkości liter +find_match_diacritics_label=Rozróżnianie liter diakrytyzowanych +find_entire_word_label=Całe słowa +find_reached_top=Początek dokumentu. Wyszukiwanie od końca. +find_reached_bottom=Koniec dokumentu. Wyszukiwanie od początku. +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]=Pierwsze z {{total}} trafień +find_match_count[two]=Drugie z {{total}} trafień +find_match_count[few]={{current}}. z {{total}} trafień +find_match_count[many]={{current}}. z {{total}} trafień +find_match_count[other]={{current}}. z {{total}} trafień +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Brak trafień. +find_match_count_limit[one]=Więcej niż jedno trafienie. +find_match_count_limit[two]=Więcej niż dwa trafienia. +find_match_count_limit[few]=Więcej niż {{limit}} trafienia. +find_match_count_limit[many]=Więcej niż {{limit}} trafień. +find_match_count_limit[other]=Więcej niż {{limit}} trafień. +find_not_found=Nie znaleziono tekstu + +# Error panel labels +error_more_info=Więcej informacji +error_less_info=Mniej informacji +error_close=Zamknij +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (kompilacja: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Komunikat: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stos: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Plik: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Wiersz: {{line}} + +# Predefined zoom values +page_scale_width=Szerokość strony +page_scale_fit=Dopasowanie strony +page_scale_auto=Skala automatyczna +page_scale_actual=Rozmiar oryginalny +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Wczytywanie… +loading_error=Podczas wczytywania dokumentu PDF wystąpił błąd. +invalid_file_error=Nieprawidłowy lub uszkodzony plik PDF. +missing_file_error=Brak pliku PDF. +unexpected_response_error=Nieoczekiwana odpowiedź serwera. + +rendering_error=Podczas renderowania strony wystąpił błąd. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Przypis: {{type}}] +password_label=Wprowadź hasło, aby otworzyć ten dokument PDF. +password_invalid=Nieprawidłowe hasło. Proszę spróbować ponownie. +password_ok=OK +password_cancel=Anuluj + +printing_not_supported=Ostrzeżenie: drukowanie nie jest w pełni obsługiwane przez tę przeglądarkę. +printing_not_ready=Ostrzeżenie: dokument PDF nie jest całkowicie wczytany, więc nie można go wydrukować. +web_fonts_disabled=Czcionki sieciowe są wyłączone: nie można użyć osadzonych czcionek PDF. + +# Editor +editor_free_text2.title=Tekst +editor_free_text2_label=Tekst +editor_ink2.title=Rysunek +editor_ink2_label=Rysunek + +free_text2_default_content=Zacznij pisać… + +# Editor Parameters +editor_free_text_color=Kolor +editor_free_text_size=Rozmiar +editor_ink_color=Kolor +editor_ink_thickness=Grubość +editor_ink_opacity=Nieprzezroczystość + +# Editor aria +editor_free_text2_aria_label=Edytor tekstu +editor_ink2_aria_label=Edytor rysunku +editor_ink_canvas_aria_label=Obraz utworzony przez użytkownika diff --git a/www/include/vendor/pdfjs/web/locale/pt-BR/viewer.properties b/www/include/vendor/pdfjs/web/locale/pt-BR/viewer.properties new file mode 100644 index 0000000..35eec5d --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/pt-BR/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Página anterior +previous_label=Anterior +next.title=Próxima página +next_label=Próxima + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Página +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=de {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} de {{pagesCount}}) + +zoom_out.title=Reduzir +zoom_out_label=Reduzir +zoom_in.title=Ampliar +zoom_in_label=Ampliar +zoom.title=Zoom +presentation_mode.title=Mudar para o modo de apresentação +presentation_mode_label=Modo de apresentação +open_file.title=Abrir arquivo +open_file_label=Abrir +print.title=Imprimir +print_label=Imprimir +download.title=Baixar +download_label=Baixar +save.title=Salvar +save_label=Salvar +bookmark.title=Visão atual (copiar ou abrir em nova janela) +bookmark_label=Exibição atual + +bookmark1.title=Página atual (ver URL da página atual) +bookmark1_label=Pagina atual + +# Secondary toolbar and context menu +tools.title=Ferramentas +tools_label=Ferramentas +first_page.title=Ir para a primeira página +first_page_label=Ir para a primeira página +last_page.title=Ir para a última página +last_page_label=Ir para a última página +page_rotate_cw.title=Girar no sentido horário +page_rotate_cw_label=Girar no sentido horário +page_rotate_ccw.title=Girar no sentido anti-horário +page_rotate_ccw_label=Girar no sentido anti-horário + +cursor_text_select_tool.title=Ativar a ferramenta de seleção de texto +cursor_text_select_tool_label=Ferramenta de seleção de texto +cursor_hand_tool.title=Ativar ferramenta de deslocamento +cursor_hand_tool_label=Ferramenta de deslocamento + +scroll_page.title=Usar rolagem de página +scroll_page_label=Rolagem de página +scroll_vertical.title=Usar deslocamento vertical +scroll_vertical_label=Deslocamento vertical +scroll_horizontal.title=Usar deslocamento horizontal +scroll_horizontal_label=Deslocamento horizontal +scroll_wrapped.title=Usar deslocamento contido +scroll_wrapped_label=Deslocamento contido + +spread_none.title=Não reagrupar páginas +spread_none_label=Não estender +spread_odd.title=Agrupar páginas começando em páginas com números ímpares +spread_odd_label=Estender ímpares +spread_even.title=Agrupar páginas começando em páginas com números pares +spread_even_label=Estender pares + +# Document properties dialog box +document_properties.title=Propriedades do documento… +document_properties_label=Propriedades do documento… +document_properties_file_name=Nome do arquivo: +document_properties_file_size=Tamanho do arquivo: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Título: +document_properties_author=Autor: +document_properties_subject=Assunto: +document_properties_keywords=Palavras-chave: +document_properties_creation_date=Data da criação: +document_properties_modification_date=Data da modificação: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Criação: +document_properties_producer=Criador do PDF: +document_properties_version=Versão do PDF: +document_properties_page_count=Número de páginas: +document_properties_page_size=Tamanho da página: +document_properties_page_size_unit_inches=pol. +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=retrato +document_properties_page_size_orientation_landscape=paisagem +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Carta +document_properties_page_size_name_legal=Jurídico +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Exibição web rápida: +document_properties_linearized_yes=Sim +document_properties_linearized_no=Não +document_properties_close=Fechar + +print_progress_message=Preparando documento para impressão… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}} % +print_progress_close=Cancelar + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Exibir/ocultar painel lateral +toggle_sidebar_notification2.title=Exibir/ocultar painel (documento contém estrutura/anexos/camadas) +toggle_sidebar_label=Exibir/ocultar painel +document_outline.title=Mostrar estrutura do documento (duplo-clique expande/recolhe todos os itens) +document_outline_label=Estrutura do documento +attachments.title=Mostrar anexos +attachments_label=Anexos +layers.title=Mostrar camadas (duplo-clique redefine todas as camadas ao estado predefinido) +layers_label=Camadas +thumbs.title=Mostrar miniaturas +thumbs_label=Miniaturas +current_outline_item.title=Encontrar item atual da estrutura +current_outline_item_label=Item atual da estrutura +findbar.title=Procurar no documento +findbar_label=Procurar + +additional_layers=Camadas adicionais +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Página {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Página {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura da página {{page}} + +# Find panel button title and messages +find_input.title=Procurar +find_input.placeholder=Procurar no documento… +find_previous.title=Procurar a ocorrência anterior da frase +find_previous_label=Anterior +find_next.title=Procurar a próxima ocorrência da frase +find_next_label=Próxima +find_highlight=Destacar tudo +find_match_case_label=Diferenciar maiúsculas/minúsculas +find_match_diacritics_label=Considerar acentuação +find_entire_word_label=Palavras completas +find_reached_top=Início do documento alcançado, continuando do fim +find_reached_bottom=Fim do documento alcançado, continuando do início +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} de {{total}} ocorrência +find_match_count[two]={{current}} de {{total}} ocorrências +find_match_count[few]={{current}} de {{total}} ocorrências +find_match_count[many]={{current}} de {{total}} ocorrências +find_match_count[other]={{current}} de {{total}} ocorrências +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Mais de {{limit}} ocorrências +find_match_count_limit[one]=Mais de {{limit}} ocorrência +find_match_count_limit[two]=Mais de {{limit}} ocorrências +find_match_count_limit[few]=Mais de {{limit}} ocorrências +find_match_count_limit[many]=Mais de {{limit}} ocorrências +find_match_count_limit[other]=Mais de {{limit}} ocorrências +find_not_found=Frase não encontrada + +# Error panel labels +error_more_info=Mais informações +error_less_info=Menos informações +error_close=Fechar +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (compilação: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Mensagem: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Pilha: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Arquivo: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Linha: {{line}} + +# Predefined zoom values +page_scale_width=Largura da página +page_scale_fit=Ajustar à janela +page_scale_auto=Zoom automático +page_scale_actual=Tamanho real +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Carregando… +loading_error=Ocorreu um erro ao carregar o PDF. +invalid_file_error=Arquivo PDF corrompido ou inválido. +missing_file_error=Arquivo PDF ausente. +unexpected_response_error=Resposta inesperada do servidor. + +rendering_error=Ocorreu um erro ao renderizar a página. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anotação {{type}}] +password_label=Forneça a senha para abrir este arquivo PDF. +password_invalid=Senha inválida. Tente novamente. +password_ok=OK +password_cancel=Cancelar + +printing_not_supported=Aviso: a impressão não é totalmente suportada neste navegador. +printing_not_ready=Aviso: o PDF não está totalmente carregado para impressão. +web_fonts_disabled=As fontes web estão desativadas: não foi possível usar fontes incorporadas do PDF. + +# Editor +editor_free_text2.title=Texto +editor_free_text2_label=Texto +editor_ink2.title=Desenho +editor_ink2_label=Desenho + +free_text2_default_content=Comece digitando… + +# Editor Parameters +editor_free_text_color=Cor +editor_free_text_size=Tamanho +editor_ink_color=Cor +editor_ink_thickness=Espessura +editor_ink_opacity=Opacidade + +# Editor aria +editor_free_text2_aria_label=Editor de texto +editor_ink2_aria_label=Editor de desenho +editor_ink_canvas_aria_label=Imagem criada pelo usuário diff --git a/www/include/vendor/pdfjs/web/locale/pt-PT/viewer.properties b/www/include/vendor/pdfjs/web/locale/pt-PT/viewer.properties new file mode 100644 index 0000000..bc68d9b --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/pt-PT/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Página anterior +previous_label=Anterior +next.title=Página seguinte +next_label=Seguinte + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Página +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=de {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} de {{pagesCount}}) + +zoom_out.title=Reduzir +zoom_out_label=Reduzir +zoom_in.title=Ampliar +zoom_in_label=Ampliar +zoom.title=Zoom +presentation_mode.title=Trocar para o modo de apresentação +presentation_mode_label=Modo de apresentação +open_file.title=Abrir ficheiro +open_file_label=Abrir +print.title=Imprimir +print_label=Imprimir +download.title=Transferir +download_label=Transferir +save.title=Guardar +save_label=Guardar +bookmark.title=Vista atual (copiar ou abrir numa nova janela) +bookmark_label=Visão atual + +bookmark1.title=Página atual (ver URL da página atual) +bookmark1_label=Pagina atual + +# Secondary toolbar and context menu +tools.title=Ferramentas +tools_label=Ferramentas +first_page.title=Ir para a primeira página +first_page_label=Ir para a primeira página +last_page.title=Ir para a última página +last_page_label=Ir para a última página +page_rotate_cw.title=Rodar à direita +page_rotate_cw_label=Rodar à direita +page_rotate_ccw.title=Rodar à esquerda +page_rotate_ccw_label=Rodar à esquerda + +cursor_text_select_tool.title=Ativar ferramenta de seleção de texto +cursor_text_select_tool_label=Ferramenta de seleção de texto +cursor_hand_tool.title=Ativar ferramenta de mão +cursor_hand_tool_label=Ferramenta de mão + +scroll_page.title=Utilizar deslocamento da página +scroll_page_label=Deslocamento da página +scroll_vertical.title=Utilizar deslocação vertical +scroll_vertical_label=Deslocação vertical +scroll_horizontal.title=Utilizar deslocação horizontal +scroll_horizontal_label=Deslocação horizontal +scroll_wrapped.title=Utilizar deslocação encapsulada +scroll_wrapped_label=Deslocação encapsulada + +spread_none.title=Não juntar páginas dispersas +spread_none_label=Sem spreads +spread_odd.title=Juntar páginas dispersas a partir de páginas com números ímpares +spread_odd_label=Spreads ímpares +spread_even.title=Juntar páginas dispersas a partir de páginas com números pares +spread_even_label=Spreads pares + +# Document properties dialog box +document_properties.title=Propriedades do documento… +document_properties_label=Propriedades do documento… +document_properties_file_name=Nome do ficheiro: +document_properties_file_size=Tamanho do ficheiro: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Título: +document_properties_author=Autor: +document_properties_subject=Assunto: +document_properties_keywords=Palavras-chave: +document_properties_creation_date=Data de criação: +document_properties_modification_date=Data de modificação: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Criador: +document_properties_producer=Produtor de PDF: +document_properties_version=Versão do PDF: +document_properties_page_count=N.º de páginas: +document_properties_page_size=Tamanho da página: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=retrato +document_properties_page_size_orientation_landscape=paisagem +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Carta +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Vista rápida web: +document_properties_linearized_yes=Sim +document_properties_linearized_no=Não +document_properties_close=Fechar + +print_progress_message=A preparar o documento para impressão… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cancelar + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Alternar barra lateral +toggle_sidebar_notification2.title=Alternar barra lateral (o documento contém contornos/anexos/camadas) +toggle_sidebar_label=Alternar barra lateral +document_outline.title=Mostrar esquema do documento (duplo clique para expandir/colapsar todos os itens) +document_outline_label=Esquema do documento +attachments.title=Mostrar anexos +attachments_label=Anexos +layers.title=Mostrar camadas (clique duas vezes para repor todas as camadas para o estado predefinido) +layers_label=Camadas +thumbs.title=Mostrar miniaturas +thumbs_label=Miniaturas +current_outline_item.title=Encontrar o item atualmente destacado +current_outline_item_label=Item atualmente destacado +findbar.title=Localizar em documento +findbar_label=Localizar + +additional_layers=Camadas adicionais +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Página {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Página {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura da página {{page}} + +# Find panel button title and messages +find_input.title=Localizar +find_input.placeholder=Localizar em documento… +find_previous.title=Localizar ocorrência anterior da frase +find_previous_label=Anterior +find_next.title=Localizar ocorrência seguinte da frase +find_next_label=Seguinte +find_highlight=Destacar tudo +find_match_case_label=Correspondência +find_match_diacritics_label=Corresponder diacríticos +find_entire_word_label=Palavras completas +find_reached_top=Topo do documento atingido, a continuar a partir do fundo +find_reached_bottom=Fim do documento atingido, a continuar a partir do topo +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} de {{total}} correspondência +find_match_count[two]={{current}} de {{total}} correspondências +find_match_count[few]={{current}} de {{total}} correspondências +find_match_count[many]={{current}} de {{total}} correspondências +find_match_count[other]={{current}} de {{total}} correspondências +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Mais de {{limit}} correspondências +find_match_count_limit[one]=Mais de {{limit}} correspondência +find_match_count_limit[two]=Mais de {{limit}} correspondências +find_match_count_limit[few]=Mais de {{limit}} correspondências +find_match_count_limit[many]=Mais de {{limit}} correspondências +find_match_count_limit[other]=Mais de {{limit}} correspondências +find_not_found=Frase não encontrada + +# Error panel labels +error_more_info=Mais informação +error_less_info=Menos informação +error_close=Fechar +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (compilação: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Mensagem: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Ficheiro: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Linha: {{line}} + +# Predefined zoom values +page_scale_width=Ajustar à largura +page_scale_fit=Ajustar à página +page_scale_auto=Zoom automático +page_scale_actual=Tamanho real +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=A carregar… +loading_error=Ocorreu um erro ao carregar o PDF. +invalid_file_error=Ficheiro PDF inválido ou danificado. +missing_file_error=Ficheiro PDF inexistente. +unexpected_response_error=Resposta inesperada do servidor. + +rendering_error=Ocorreu um erro ao processar a página. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anotação {{type}}] +password_label=Introduza a palavra-passe para abrir este ficheiro PDF. +password_invalid=Palavra-passe inválida. Por favor, tente novamente. +password_ok=OK +password_cancel=Cancelar + +printing_not_supported=Aviso: a impressão não é totalmente suportada por este navegador. +printing_not_ready=Aviso: o PDF ainda não está totalmente carregado. +web_fonts_disabled=Os tipos de letra web estão desativados: não é possível utilizar os tipos de letra PDF embutidos. + +# Editor +editor_free_text2.title=Texto +editor_free_text2_label=Texto +editor_ink2.title=Desenhar +editor_ink2_label=Desenhar + +free_text2_default_content=Começar a digitar… + +# Editor Parameters +editor_free_text_color=Cor +editor_free_text_size=Tamanho +editor_ink_color=Cor +editor_ink_thickness=Espessura +editor_ink_opacity=Opacidade + +# Editor aria +editor_free_text2_aria_label=Editor de texto +editor_ink2_aria_label=Editor de desenho +editor_ink_canvas_aria_label=Imagem criada pelo utilizador diff --git a/www/include/vendor/pdfjs/web/locale/rm/viewer.properties b/www/include/vendor/pdfjs/web/locale/rm/viewer.properties new file mode 100644 index 0000000..03afd28 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/rm/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Pagina precedenta +previous_label=Enavos +next.title=Proxima pagina +next_label=Enavant + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Pagina +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=da {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} da {{pagesCount}}) + +zoom_out.title=Empitschnir +zoom_out_label=Empitschnir +zoom_in.title=Engrondir +zoom_in_label=Engrondir +zoom.title=Zoom +presentation_mode.title=Midar en il modus da preschentaziun +presentation_mode_label=Modus da preschentaziun +open_file.title=Avrir datoteca +open_file_label=Avrir +print.title=Stampar +print_label=Stampar +download.title=Telechargiar +download_label=Telechargiar +save.title=Memorisar +save_label=Memorisar +bookmark.title=Vista actuala (copiar u avrir en ina nova fanestra) +bookmark_label=Vista actuala + +bookmark1.title=Pagina actuala (mussar l'URL da la pagina actuala) +bookmark1_label=Pagina actuala + +# Secondary toolbar and context menu +tools.title=Utensils +tools_label=Utensils +first_page.title=Siglir a l'emprima pagina +first_page_label=Siglir a l'emprima pagina +last_page.title=Siglir a la davosa pagina +last_page_label=Siglir a la davosa pagina +page_rotate_cw.title=Rotar en direcziun da l'ura +page_rotate_cw_label=Rotar en direcziun da l'ura +page_rotate_ccw.title=Rotar en direcziun cuntraria a l'ura +page_rotate_ccw_label=Rotar en direcziun cuntraria a l'ura + +cursor_text_select_tool.title=Activar l'utensil per selecziunar text +cursor_text_select_tool_label=Utensil per selecziunar text +cursor_hand_tool.title=Activar l'utensil da maun +cursor_hand_tool_label=Utensil da maun + +scroll_page.title=Utilisar la defilada per pagina +scroll_page_label=Defilada per pagina +scroll_vertical.title=Utilisar il defilar vertical +scroll_vertical_label=Defilar vertical +scroll_horizontal.title=Utilisar il defilar orizontal +scroll_horizontal_label=Defilar orizontal +scroll_wrapped.title=Utilisar il defilar en colonnas +scroll_wrapped_label=Defilar en colonnas + +spread_none.title=Betg parallelisar las paginas +spread_none_label=Betg parallel +spread_odd.title=Parallelisar las paginas cun cumenzar cun paginas spèras +spread_odd_label=Parallel spèr +spread_even.title=Parallelisar las paginas cun cumenzar cun paginas pèras +spread_even_label=Parallel pèr + +# Document properties dialog box +document_properties.title=Caracteristicas dal document… +document_properties_label=Caracteristicas dal document… +document_properties_file_name=Num da la datoteca: +document_properties_file_size=Grondezza da la datoteca: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Titel: +document_properties_author=Autur: +document_properties_subject=Tema: +document_properties_keywords=Chavazzins: +document_properties_creation_date=Data da creaziun: +document_properties_modification_date=Data da modificaziun: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}} {{time}} +document_properties_creator=Creà da: +document_properties_producer=Creà il PDF cun: +document_properties_version=Versiun da PDF: +document_properties_page_count=Dumber da paginas: +document_properties_page_size=Grondezza da la pagina: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=vertical +document_properties_page_size_orientation_landscape=orizontal +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Fast Web View: +document_properties_linearized_yes=Gea +document_properties_linearized_no=Na +document_properties_close=Serrar + +print_progress_message=Preparar il document per stampar… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Interrumper + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Activar/deactivar la trav laterala +toggle_sidebar_notification2.title=Activar/deactivar la trav laterala (il document cuntegna structura dal document/agiuntas/nivels) +toggle_sidebar_label=Activar/deactivar la trav laterala +document_outline.title=Mussar la structura dal document (cliccar duas giadas per extender/cumprimer tut ils elements) +document_outline_label=Structura dal document +attachments.title=Mussar agiuntas +attachments_label=Agiuntas +layers.title=Mussar ils nivels (cliccar dubel per restaurar il stadi da standard da tut ils nivels) +layers_label=Nivels +thumbs.title=Mussar las miniaturas +thumbs_label=Miniaturas +current_outline_item.title=Tschertgar l'element da structura actual +current_outline_item_label=Element da structura actual +findbar.title=Tschertgar en il document +findbar_label=Tschertgar + +additional_layers=Nivels supplementars +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Pagina {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Pagina {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura da la pagina {{page}} + +# Find panel button title and messages +find_input.title=Tschertgar +find_input.placeholder=Tschertgar en il document… +find_previous.title=Tschertgar la posiziun precedenta da l'expressiun +find_previous_label=Enavos +find_next.title=Tschertgar la proxima posiziun da l'expressiun +find_next_label=Enavant +find_highlight=Relevar tuts +find_match_case_label=Resguardar maiusclas/minusclas +find_match_diacritics_label=Resguardar ils segns diacritics +find_entire_word_label=Pleds entirs +find_reached_top=Il cumenzament dal document è cuntanschì, la tschertga cuntinuescha a la fin dal document +find_reached_bottom=La fin dal document è cuntanschì, la tschertga cuntinuescha al cumenzament dal document +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} dad {{total}} correspundenza +find_match_count[two]={{current}} da {{total}} correspundenzas +find_match_count[few]={{current}} da {{total}} correspundenzas +find_match_count[many]={{current}} da {{total}} correspundenzas +find_match_count[other]={{current}} da {{total}} correspundenzas +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Dapli che {{limit}} correspundenzas +find_match_count_limit[one]=Dapli che {{limit}} correspundenza +find_match_count_limit[two]=Dapli che {{limit}} correspundenzas +find_match_count_limit[few]=Dapli che {{limit}} correspundenzas +find_match_count_limit[many]=Dapli che {{limit}} correspundenzas +find_match_count_limit[other]=Dapli che {{limit}} correspundenzas +find_not_found=Impussibel da chattar l'expressiun + +# Error panel labels +error_more_info=Dapli infurmaziuns +error_less_info=Damain infurmaziuns +error_close=Serrar +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Messadi: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Datoteca: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Lingia: {{line}} + +# Predefined zoom values +page_scale_width=Ladezza da la pagina +page_scale_fit=Entira pagina +page_scale_auto=Zoom automatic +page_scale_actual=Grondezza actuala +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Chargiar… +loading_error=Ina errur è cumparida cun chargiar il PDF. +invalid_file_error=Datoteca PDF nunvalida u donnegiada. +missing_file_error=Datoteca PDF manconta. +unexpected_response_error=Resposta nunspetgada dal server. + +rendering_error=Ina errur è cumparida cun visualisar questa pagina. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Annotaziun da {{type}}] +password_label=Endatescha il pled-clav per avrir questa datoteca da PDF. +password_invalid=Pled-clav nunvalid. Emprova anc ina giada. +password_ok=OK +password_cancel=Interrumper + +printing_not_supported=Attenziun: Il stampar na funcziunescha anc betg dal tut en quest navigatur. +printing_not_ready=Attenziun: Il PDF n'è betg chargià cumplettamain per stampar. +web_fonts_disabled=Scrittiras dal web èn deactivadas: impussibel dad utilisar las scrittiras integradas en il PDF. + +# Editor +editor_free_text2.title=Text +editor_free_text2_label=Text +editor_ink2.title=Dissegnar +editor_ink2_label=Dissegnar + +free_text2_default_content=Cumenzar a tippar… + +# Editor Parameters +editor_free_text_color=Colur +editor_free_text_size=Grondezza +editor_ink_color=Colur +editor_ink_thickness=Grossezza +editor_ink_opacity=Opacitad + +# Editor aria +editor_free_text2_aria_label=Editur da text +editor_ink2_aria_label=Editur dissegn +editor_ink_canvas_aria_label=Maletg creà da l'utilisader diff --git a/www/include/vendor/pdfjs/web/locale/ro/viewer.properties b/www/include/vendor/pdfjs/web/locale/ro/viewer.properties new file mode 100644 index 0000000..7560849 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/ro/viewer.properties @@ -0,0 +1,241 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Pagina precedentă +previous_label=Înapoi +next.title=Pagina următoare +next_label=Înainte + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Pagina +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=din {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} din {{pagesCount}}) + +zoom_out.title=Micșorează +zoom_out_label=Micșorează +zoom_in.title=Mărește +zoom_in_label=Mărește +zoom.title=Zoom +presentation_mode.title=Comută la modul de prezentare +presentation_mode_label=Mod de prezentare +open_file.title=Deschide un fișier +open_file_label=Deschide +print.title=Tipărește +print_label=Tipărește +download.title=Descarcă +download_label=Descarcă +bookmark.title=Vizualizare actuală (copiază sau deschide într-o fereastră nouă) +bookmark_label=Vizualizare actuală + +# Secondary toolbar and context menu +tools.title=Instrumente +tools_label=Instrumente +first_page.title=Mergi la prima pagină +first_page_label=Mergi la prima pagină +last_page.title=Mergi la ultima pagină +last_page_label=Mergi la ultima pagină +page_rotate_cw.title=Rotește în sensul acelor de ceas +page_rotate_cw_label=Rotește în sensul acelor de ceas +page_rotate_ccw.title=Rotește în sens invers al acelor de ceas +page_rotate_ccw_label=Rotește în sens invers al acelor de ceas + +cursor_text_select_tool.title=Activează instrumentul de selecție a textului +cursor_text_select_tool_label=Instrumentul de selecție a textului +cursor_hand_tool.title=Activează instrumentul mână +cursor_hand_tool_label=Unealta mână + +scroll_vertical.title=Folosește derularea verticală +scroll_vertical_label=Derulare verticală +scroll_horizontal.title=Folosește derularea orizontală +scroll_horizontal_label=Derulare orizontală +scroll_wrapped.title=Folosește derularea încadrată +scroll_wrapped_label=Derulare încadrată + +spread_none.title=Nu uni paginile broșate +spread_none_label=Fără pagini broșate +spread_odd.title=Unește paginile broșate începând cu cele impare +spread_odd_label=Broșare pagini impare +spread_even.title=Unește paginile broșate începând cu cele pare +spread_even_label=Broșare pagini pare + +# Document properties dialog box +document_properties.title=Proprietățile documentului… +document_properties_label=Proprietățile documentului… +document_properties_file_name=Numele fișierului: +document_properties_file_size=Mărimea fișierului: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} byți) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} byți) +document_properties_title=Titlu: +document_properties_author=Autor: +document_properties_subject=Subiect: +document_properties_keywords=Cuvinte cheie: +document_properties_creation_date=Data creării: +document_properties_modification_date=Data modificării: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Autor: +document_properties_producer=Producător PDF: +document_properties_version=Versiune PDF: +document_properties_page_count=Număr de pagini: +document_properties_page_size=Mărimea paginii: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=verticală +document_properties_page_size_orientation_landscape=orizontală +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Literă +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Vizualizare web rapidă: +document_properties_linearized_yes=Da +document_properties_linearized_no=Nu +document_properties_close=Închide + +print_progress_message=Se pregătește documentul pentru tipărire… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Renunță + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Comută bara laterală +toggle_sidebar_label=Comută bara laterală +document_outline.title=Afișează schița documentului (dublu-clic pentru a extinde/restrânge toate elementele) +document_outline_label=Schița documentului +attachments.title=Afișează atașamentele +attachments_label=Atașamente +thumbs.title=Afișează miniaturi +thumbs_label=Miniaturi +findbar.title=Caută în document +findbar_label=Caută + +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Pagina {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura paginii {{page}} + +# Find panel button title and messages +find_input.title=Caută +find_input.placeholder=Caută în document… +find_previous.title=Mergi la apariția anterioară a textului +find_previous_label=Înapoi +find_next.title=Mergi la apariția următoare a textului +find_next_label=Înainte +find_highlight=Evidențiază toate aparițiile +find_match_case_label=Ține cont de majuscule și minuscule +find_entire_word_label=Cuvinte întregi +find_reached_top=Am ajuns la începutul documentului, continuă de la sfârșit +find_reached_bottom=Am ajuns la sfârșitul documentului, continuă de la început +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} din {{total}} rezultat +find_match_count[two]={{current}} din {{total}} rezultate +find_match_count[few]={{current}} din {{total}} rezultate +find_match_count[many]={{current}} din {{total}} de rezultate +find_match_count[other]={{current}} din {{total}} de rezultate +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Peste {{limit}} rezultate +find_match_count_limit[one]=Peste {{limit}} rezultat +find_match_count_limit[two]=Peste {{limit}} rezultate +find_match_count_limit[few]=Peste {{limit}} rezultate +find_match_count_limit[many]=Peste {{limit}} de rezultate +find_match_count_limit[other]=Peste {{limit}} de rezultate +find_not_found=Nu s-a găsit textul + +# Error panel labels +error_more_info=Mai multe informații +error_less_info=Mai puține informații +error_close=Închide +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (versiunea compilată: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Mesaj: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stivă: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fișier: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Rând: {{line}} +rendering_error=A intervenit o eroare la randarea paginii. + +# Predefined zoom values +page_scale_width=Lățime pagină +page_scale_fit=Potrivire la pagină +page_scale_auto=Zoom automat +page_scale_actual=Mărime reală +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading_error=A intervenit o eroare la încărcarea PDF-ului. +invalid_file_error=Fișier PDF nevalid sau corupt. +missing_file_error=Fișier PDF lipsă. +unexpected_response_error=Răspuns neașteptat de la server. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Adnotare {{type}}] +password_label=Introdu parola pentru a deschide acest fișier PDF. +password_invalid=Parolă nevalidă. Te rugăm să încerci din nou. +password_ok=OK +password_cancel=Renunță + +printing_not_supported=Avertisment: Tipărirea nu este suportată în totalitate de acest browser. +printing_not_ready=Avertisment: PDF-ul nu este încărcat complet pentru tipărire. +web_fonts_disabled=Fonturile web sunt dezactivate: nu se pot folosi fonturile PDF încorporate. + diff --git a/www/include/vendor/pdfjs/web/locale/ru/viewer.properties b/www/include/vendor/pdfjs/web/locale/ru/viewer.properties new file mode 100644 index 0000000..2b3160d --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/ru/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Предыдущая страница +previous_label=Предыдущая +next.title=Следующая страница +next_label=Следующая + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Страница +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=из {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} из {{pagesCount}}) + +zoom_out.title=Уменьшить +zoom_out_label=Уменьшить +zoom_in.title=Увеличить +zoom_in_label=Увеличить +zoom.title=Масштаб +presentation_mode.title=Перейти в режим презентации +presentation_mode_label=Режим презентации +open_file.title=Открыть файл +open_file_label=Открыть +print.title=Печать +print_label=Печать +download.title=Загрузить +download_label=Загрузить +save.title=Сохранить +save_label=Сохранить +bookmark.title=Ссылка на текущий вид (скопировать или открыть в новом окне) +bookmark_label=Текущий вид + +bookmark1.title=Текущая страница (просмотр URL-адреса с текущей страницы) +bookmark1_label=Текущая страница + +# Secondary toolbar and context menu +tools.title=Инструменты +tools_label=Инструменты +first_page.title=Перейти на первую страницу +first_page_label=Перейти на первую страницу +last_page.title=Перейти на последнюю страницу +last_page_label=Перейти на последнюю страницу +page_rotate_cw.title=Повернуть по часовой стрелке +page_rotate_cw_label=Повернуть по часовой стрелке +page_rotate_ccw.title=Повернуть против часовой стрелки +page_rotate_ccw_label=Повернуть против часовой стрелки + +cursor_text_select_tool.title=Включить Инструмент «Выделение текста» +cursor_text_select_tool_label=Инструмент «Выделение текста» +cursor_hand_tool.title=Включить Инструмент «Рука» +cursor_hand_tool_label=Инструмент «Рука» + +scroll_page.title=Использовать прокрутку страниц +scroll_page_label=Прокрутка страниц +scroll_vertical.title=Использовать вертикальную прокрутку +scroll_vertical_label=Вертикальная прокрутка +scroll_horizontal.title=Использовать горизонтальную прокрутку +scroll_horizontal_label=Горизонтальная прокрутка +scroll_wrapped.title=Использовать масштабируемую прокрутку +scroll_wrapped_label=Масштабируемая прокрутка + +spread_none.title=Не использовать режим разворотов страниц +spread_none_label=Без разворотов страниц +spread_odd.title=Развороты начинаются с нечётных номеров страниц +spread_odd_label=Нечётные страницы слева +spread_even.title=Развороты начинаются с чётных номеров страниц +spread_even_label=Чётные страницы слева + +# Document properties dialog box +document_properties.title=Свойства документа… +document_properties_label=Свойства документа… +document_properties_file_name=Имя файла: +document_properties_file_size=Размер файла: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} КБ ({{size_b}} байт) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} МБ ({{size_b}} байт) +document_properties_title=Заголовок: +document_properties_author=Автор: +document_properties_subject=Тема: +document_properties_keywords=Ключевые слова: +document_properties_creation_date=Дата создания: +document_properties_modification_date=Дата изменения: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Приложение: +document_properties_producer=Производитель PDF: +document_properties_version=Версия PDF: +document_properties_page_count=Число страниц: +document_properties_page_size=Размер страницы: +document_properties_page_size_unit_inches=дюймов +document_properties_page_size_unit_millimeters=мм +document_properties_page_size_orientation_portrait=книжная +document_properties_page_size_orientation_landscape=альбомная +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Быстрый просмотр в Web: +document_properties_linearized_yes=Да +document_properties_linearized_no=Нет +document_properties_close=Закрыть + +print_progress_message=Подготовка документа к печати… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Отмена + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Показать/скрыть боковую панель +toggle_sidebar_notification2.title=Показать/скрыть боковую панель (документ имеет содержание/вложения/слои) +toggle_sidebar_label=Показать/скрыть боковую панель +document_outline.title=Показать содержание документа (двойной щелчок, чтобы развернуть/свернуть все элементы) +document_outline_label=Содержание документа +attachments.title=Показать вложения +attachments_label=Вложения +layers.title=Показать слои (дважды щёлкните, чтобы сбросить все слои к состоянию по умолчанию) +layers_label=Слои +thumbs.title=Показать миниатюры +thumbs_label=Миниатюры +current_outline_item.title=Найти текущий элемент структуры +current_outline_item_label=Текущий элемент структуры +findbar.title=Найти в документе +findbar_label=Найти + +additional_layers=Дополнительные слои +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Страница {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Страница {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Миниатюра страницы {{page}} + +# Find panel button title and messages +find_input.title=Найти +find_input.placeholder=Найти в документе… +find_previous.title=Найти предыдущее вхождение фразы в текст +find_previous_label=Назад +find_next.title=Найти следующее вхождение фразы в текст +find_next_label=Далее +find_highlight=Подсветить все +find_match_case_label=С учётом регистра +find_match_diacritics_label=С учётом диакритических знаков +find_entire_word_label=Слова целиком +find_reached_top=Достигнут верх документа, продолжено снизу +find_reached_bottom=Достигнут конец документа, продолжено сверху +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} из {{total}} совпадения +find_match_count[two]={{current}} из {{total}} совпадений +find_match_count[few]={{current}} из {{total}} совпадений +find_match_count[many]={{current}} из {{total}} совпадений +find_match_count[other]={{current}} из {{total}} совпадений +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Более {{limit}} совпадений +find_match_count_limit[one]=Более {{limit}} совпадения +find_match_count_limit[two]=Более {{limit}} совпадений +find_match_count_limit[few]=Более {{limit}} совпадений +find_match_count_limit[many]=Более {{limit}} совпадений +find_match_count_limit[other]=Более {{limit}} совпадений +find_not_found=Фраза не найдена + +# Error panel labels +error_more_info=Детали +error_less_info=Скрыть детали +error_close=Закрыть +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (сборка: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Сообщение: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Стeк: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Файл: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Строка: {{line}} + +# Predefined zoom values +page_scale_width=По ширине страницы +page_scale_fit=По размеру страницы +page_scale_auto=Автоматически +page_scale_actual=Реальный размер +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Загрузка… +loading_error=При загрузке PDF произошла ошибка. +invalid_file_error=Некорректный или повреждённый PDF-файл. +missing_file_error=PDF-файл отсутствует. +unexpected_response_error=Неожиданный ответ сервера. + +rendering_error=При создании страницы произошла ошибка. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Аннотация {{type}}] +password_label=Введите пароль, чтобы открыть этот PDF-файл. +password_invalid=Неверный пароль. Пожалуйста, попробуйте снова. +password_ok=OK +password_cancel=Отмена + +printing_not_supported=Предупреждение: В этом браузере не полностью поддерживается печать. +printing_not_ready=Предупреждение: PDF не полностью загружен для печати. +web_fonts_disabled=Веб-шрифты отключены: не удалось задействовать встроенные PDF-шрифты. + +# Editor +editor_free_text2.title=Текст +editor_free_text2_label=Текст +editor_ink2.title=Рисовать +editor_ink2_label=Рисовать + +free_text2_default_content=Начните вводить… + +# Editor Parameters +editor_free_text_color=Цвет +editor_free_text_size=Размер +editor_ink_color=Цвет +editor_ink_thickness=Толщина +editor_ink_opacity=Прозрачность + +# Editor aria +editor_free_text2_aria_label=Текстовый редактор +editor_ink2_aria_label=Редактор рисования +editor_ink_canvas_aria_label=Созданное пользователем изображение diff --git a/www/include/vendor/pdfjs/web/locale/sat/viewer.properties b/www/include/vendor/pdfjs/web/locale/sat/viewer.properties new file mode 100644 index 0000000..d0d138d --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/sat/viewer.properties @@ -0,0 +1,198 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=ᱢᱟᱲᱟᱝ ᱥᱟᱦᱴᱟ +previous_label=ᱢᱟᱲᱟᱝᱟᱜ +next.title=ᱤᱱᱟᱹ ᱛᱟᱭᱚᱢ ᱥᱟᱦᱴᱟ +next_label=ᱤᱱᱟᱹ ᱛᱟᱭᱚᱢ + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=ᱥᱟᱦᱴᱟ +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=ᱨᱮᱭᱟᱜ {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} ᱠᱷᱚᱱ {{pagesCount}}) + +zoom_out.title=ᱦᱤᱲᱤᱧ ᱛᱮᱭᱟᱨ +zoom_out_label=ᱦᱤᱲᱤᱧ ᱛᱮᱭᱟᱨ +zoom_in.title=ᱢᱟᱨᱟᱝ ᱛᱮᱭᱟᱨ +zoom_in_label=ᱢᱟᱨᱟᱝ ᱛᱮᱭᱟᱨ +zoom.title=ᱡᱩᱢ +presentation_mode.title=ᱩᱫᱩᱜ ᱥᱚᱫᱚᱨ ᱚᱵᱚᱥᱛᱟ ᱨᱮ ᱚᱛᱟᱭ ᱢᱮ +presentation_mode_label=ᱩᱫᱩᱜ ᱥᱚᱫᱚᱨ ᱚᱵᱚᱥᱛᱟ ᱨᱮ +open_file.title=ᱨᱮᱫ ᱡᱷᱤᱡᱽ ᱢᱮ +open_file_label=ᱡᱷᱤᱡᱽ ᱢᱮ +print.title=ᱪᱷᱟᱯᱟ +print_label=ᱪᱷᱟᱯᱟ +download.title=ᱰᱟᱩᱱᱞᱚᱰ +download_label=ᱰᱟᱩᱱᱞᱚᱰ +bookmark.title=ᱱᱤᱛᱚᱜᱟᱜ ᱧᱮᱞ (ᱱᱚᱶᱟ ᱡᱷᱚᱨᱠᱟ ᱨᱮ ᱱᱚᱠᱚᱞ ᱟᱨ ᱵᱟᱝ ᱡᱷᱤᱡᱽ ᱢᱮ ) +bookmark_label=ᱱᱤᱛᱚᱜᱟᱜ ᱧᱮᱞ + +# Secondary toolbar and context menu +tools.title=ᱦᱟᱹᱛᱤᱭᱟᱹᱨ ᱠᱚ +tools_label=ᱦᱟᱹᱛᱤᱭᱟᱹᱨ ᱠᱚ +first_page.title=ᱯᱩᱭᱞᱩ ᱥᱟᱦᱴᱟ ᱥᱮᱫ ᱪᱟᱞᱟᱜ ᱢᱮ +first_page_label=ᱯᱩᱭᱞᱩ ᱥᱟᱦᱴᱟ ᱥᱮᱫ ᱪᱟᱞᱟᱜ ᱢᱮ +last_page.title=ᱢᱩᱪᱟᱹᱫ ᱥᱟᱦᱴᱟ ᱥᱮᱫ ᱪᱟᱞᱟᱜ ᱢᱮ +last_page_label=ᱢᱩᱪᱟᱹᱫ ᱥᱟᱦᱴᱟ ᱥᱮᱫ ᱪᱟᱞᱟᱜ ᱢᱮ +page_rotate_cw.title=ᱜᱷᱚᱰᱤ ᱦᱤᱥᱟᱹᱵ ᱛᱮ ᱟᱹᱪᱩᱨ +page_rotate_cw_label=ᱜᱷᱚᱰᱤ ᱦᱤᱥᱟᱹᱵ ᱛᱮ ᱟᱹᱪᱩᱨ +page_rotate_ccw.title=ᱜᱷᱚᱰᱤ ᱦᱤᱥᱟᱹᱵ ᱛᱮ ᱩᱞᱴᱟᱹ ᱟᱹᱪᱩᱨ +page_rotate_ccw_label=ᱜᱷᱚᱰᱤ ᱦᱤᱥᱟᱹᱵ ᱛᱮ ᱩᱞᱴᱟᱹ ᱟᱹᱪᱩᱨ + +cursor_text_select_tool.title=ᱚᱞ ᱵᱟᱪᱷᱟᱣ ᱦᱟᱹᱛᱤᱭᱟᱨ ᱮᱢ ᱪᱷᱚᱭ ᱢᱮ +cursor_text_select_tool_label=ᱚᱞ ᱵᱟᱪᱷᱟᱣ ᱦᱟᱹᱛᱤᱭᱟᱨ +cursor_hand_tool.title=ᱛᱤ ᱦᱟᱹᱛᱤᱭᱟᱨ ᱮᱢ ᱪᱷᱚᱭ ᱢᱮ +cursor_hand_tool_label=ᱛᱤ ᱦᱟᱹᱛᱤᱭᱟᱨ + +scroll_page.title=ᱥᱟᱦᱴᱟ ᱜᱩᱲᱟᱹᱣ ᱵᱮᱵᱷᱟᱨ ᱢᱮ +scroll_page_label=ᱥᱟᱦᱴᱟ ᱜᱩᱲᱟᱹᱣ +scroll_vertical.title=ᱥᱤᱫᱽ ᱜᱩᱲᱟᱹᱣ ᱵᱮᱵᱷᱟᱨ ᱢᱮ +scroll_vertical_label=ᱥᱤᱫᱽ ᱜᱩᱲᱟᱹᱣ +scroll_horizontal.title=ᱜᱤᱛᱤᱡ ᱛᱮ ᱜᱩᱲᱟᱹᱣ ᱵᱮᱵᱷᱟᱨ ᱢᱮ + + +# Document properties dialog box +document_properties_file_name=ᱨᱮᱫᱽ ᱧᱩᱛᱩᱢ : +document_properties_file_size=ᱨᱮᱫᱽ ᱢᱟᱯ : +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} ᱵᱟᱭᱤᱴ ᱠᱚ) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} ᱵᱟᱭᱤᱴ ᱠᱚ) +document_properties_title=ᱧᱩᱛᱩᱢ : +document_properties_author=ᱚᱱᱚᱞᱤᱭᱟᱹ : +document_properties_subject=ᱵᱤᱥᱚᱭ : +document_properties_keywords=ᱠᱟᱹᱴᱷᱤ ᱥᱟᱵᱟᱫᱽ : +document_properties_creation_date=ᱛᱮᱭᱟᱨ ᱢᱟᱸᱦᱤᱛ : +document_properties_modification_date=ᱵᱚᱫᱚᱞ ᱦᱚᱪᱚ ᱢᱟᱹᱦᱤᱛ : +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=ᱵᱮᱱᱟᱣᱤᱡ : +document_properties_producer=PDF ᱛᱮᱭᱟᱨ ᱚᱰᱚᱠᱤᱡ : +document_properties_version=PDF ᱵᱷᱟᱹᱨᱥᱚᱱ : +document_properties_page_count=ᱥᱟᱦᱴᱟ ᱞᱮᱠᱷᱟ : +document_properties_page_size=ᱥᱟᱦᱴᱟ ᱢᱟᱯ : +document_properties_page_size_unit_inches=ᱤᱧᱪ +document_properties_page_size_unit_millimeters=ᱢᱤᱢᱤ +document_properties_page_size_orientation_portrait=ᱯᱚᱴᱨᱮᱴ +document_properties_page_size_orientation_landscape=ᱞᱮᱱᱰᱥᱠᱮᱯ +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=ᱪᱤᱴᱷᱤ +document_properties_page_size_name_legal=ᱠᱟᱹᱱᱩᱱᱤ +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. + +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +document_outline_label=ᱫᱚᱞᱤᱞ ᱛᱮᱭᱟᱨ ᱛᱮᱫ +attachments.title=ᱞᱟᱴᱷᱟ ᱥᱮᱞᱮᱫ ᱠᱚ ᱩᱫᱩᱜᱽ ᱢᱮ +attachments_label=ᱞᱟᱴᱷᱟ ᱥᱮᱞᱮᱫ ᱠᱚ +thumbs.title=ᱪᱤᱛᱟᱹᱨ ᱟᱦᱞᱟ ᱠᱚ ᱩᱫᱩᱜᱽ ᱢᱮ +thumbs_label=ᱪᱤᱛᱟᱹᱨ ᱟᱦᱞᱟ ᱠᱚ +findbar.title=ᱫᱚᱞᱤᱞ ᱨᱮ ᱯᱟᱱᱛᱮ +findbar_label=ᱥᱮᱸᱫᱽᱨᱟᱭ ᱢᱮ + +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title={{page}} ᱥᱟᱦᱴᱟ +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas={{page}} ᱥᱟᱦᱴᱟ ᱨᱮᱭᱟᱜ ᱪᱤᱛᱟᱹᱨ ᱟᱦᱞᱟ + +# Find panel button title and messages +find_previous.title=ᱟᱭᱟᱛ ᱦᱤᱸᱥ ᱨᱮᱭᱟᱜ ᱯᱟᱹᱦᱤᱞ ᱥᱮᱫᱟᱜ ᱚᱰᱚᱠ ᱧᱟᱢ ᱢᱮ +find_next.title=ᱟᱭᱟᱛ ᱦᱤᱸᱥ ᱨᱮᱭᱟᱜ ᱤᱱᱟᱹ ᱛᱟᱭᱚᱢ ᱚᱰᱚᱠ ᱧᱟᱢ ᱢᱮ +find_highlight=ᱡᱷᱚᱛᱚ ᱩᱫᱩᱜ ᱨᱟᱠᱟᱵ +find_match_case_label=ᱡᱚᱲ ᱠᱟᱛᱷᱟ +find_reached_top=ᱫᱚᱞᱤᱞ ᱨᱮᱭᱟᱜ ᱪᱤᱴ ᱨᱮ ᱥᱮᱴᱮᱨ, ᱞᱟᱛᱟᱨ ᱠᱷᱚᱱ ᱞᱮᱛᱟᱲ +find_reached_bottom=ᱫᱚᱞᱤᱞ ᱨᱮᱭᱟᱜ ᱢᱩᱪᱟᱹᱫ ᱨᱮ ᱥᱮᱴᱮᱨ, ᱪᱚᱴ ᱠᱷᱚᱱ ᱞᱮᱛᱟᱲ +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_not_found=ᱛᱚᱯᱚᱞ ᱫᱚᱱᱚᱲ ᱵᱟᱝ ᱧᱟᱢ ᱞᱮᱱᱟ + +# Error panel labels +error_more_info=ᱵᱟᱹᱲᱛᱤ ᱞᱟᱹᱭ ᱥᱚᱫᱚᱨ +error_less_info=ᱠᱚᱢ ᱞᱟᱹᱭ ᱥᱚᱫᱚᱨ +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=ᱠᱷᱚᱵᱚᱨ : {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=ᱵᱟᱝ : {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=ᱨᱮᱫᱽ : {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=ᱜᱟᱨ : {{line}} +rendering_error=ᱥᱟᱦᱴᱟ ᱮᱢ ᱡᱚᱦᱚᱠ ᱢᱤᱫ ᱵᱷᱩᱞ ᱦᱩᱭ ᱮᱱᱟ ᱾ + +# Predefined zoom values +page_scale_width=ᱥᱟᱦᱴᱟ ᱚᱥᱟᱨ +page_scale_fit=ᱥᱟᱦᱴᱟ ᱠᱷᱟᱯ +page_scale_auto=ᱟᱡᱼᱟᱡ ᱛᱮ ᱦᱩᱰᱤᱧ ᱞᱟᱹᱴᱩ ᱛᱮᱭᱟᱨ +page_scale_actual=ᱴᱷᱤᱠ ᱢᱟᱨᱟᱝ ᱛᱮᱫ +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. + +# Loading indicator messages +loading_error=PDF ᱞᱟᱫᱮ ᱡᱚᱦᱚᱜ ᱢᱤᱫ ᱵᱷᱩᱞ ᱦᱩᱭ ᱮᱱᱟ ᱾ +invalid_file_error=ᱵᱟᱝ ᱵᱟᱛᱟᱣ ᱟᱨᱵᱟᱝᱠᱷᱟᱱ ᱰᱤᱜᱟᱹᱣ PDF ᱨᱮᱫᱽ ᱾ +missing_file_error=ᱟᱫᱟᱜ PDF ᱨᱮᱫᱽ ᱾ + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} ᱢᱚᱱᱛᱚ ᱮᱢ] +password_label=ᱱᱚᱶᱟ PDF ᱨᱮᱫᱽ ᱡᱷᱤᱡᱽ ᱞᱟᱹᱜᱤᱫ ᱫᱟᱱᱟᱝ ᱥᱟᱵᱟᱫᱽ ᱟᱫᱮᱨ ᱢᱮ ᱾ +password_invalid=ᱵᱷᱩᱞ ᱫᱟᱱᱟᱝ ᱥᱟᱵᱟᱫᱽ ᱾ ᱫᱟᱭᱟᱠᱟᱛᱮ ᱫᱩᱦᱲᱟᱹ ᱪᱮᱥᱴᱟᱭ ᱢᱮ ᱾ +password_ok=ᱴᱷᱤᱠ + +printing_not_supported=ᱦᱚᱥᱤᱭᱟᱨ : ᱪᱷᱟᱯᱟ ᱱᱚᱣᱟ ᱯᱟᱱᱛᱮᱭᱟᱜ ᱫᱟᱨᱟᱭ ᱛᱮ ᱯᱩᱨᱟᱹᱣ ᱵᱟᱭ ᱜᱚᱲᱚᱣᱟᱠᱟᱱᱟ ᱾ +printing_not_ready=ᱦᱩᱥᱤᱭᱟᱹᱨ : ᱪᱷᱟᱯᱟ ᱞᱟᱹᱜᱤᱫ PDF ᱯᱩᱨᱟᱹ ᱵᱟᱭ ᱞᱟᱫᱮ ᱟᱠᱟᱱᱟ ᱾ +web_fonts_disabled=ᱣᱮᱵᱽ ᱪᱤᱠᱤ ᱵᱟᱝ ᱦᱩᱭ ᱦᱚᱪᱚ ᱠᱟᱱᱟ : ᱵᱷᱤᱛᱤᱨ ᱛᱷᱟᱯᱚᱱ PDF ᱪᱤᱠᱤ ᱵᱮᱵᱷᱟᱨ ᱵᱟᱝ ᱦᱩᱭ ᱠᱮᱭᱟ ᱾ + diff --git a/www/include/vendor/pdfjs/web/locale/sc/viewer.properties b/www/include/vendor/pdfjs/web/locale/sc/viewer.properties new file mode 100644 index 0000000..6592110 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/sc/viewer.properties @@ -0,0 +1,265 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Pàgina anteriore +previous_label=S'ischeda chi b'est primu +next.title=Pàgina imbeniente +next_label=Imbeniente + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Pàgina +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=de {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} de {{pagesCount}}) + +zoom_out.title=Impitica +zoom_out_label=Impitica +zoom_in.title=Ismànnia +zoom_in_label=Ismànnia +zoom.title=Ismànnia +presentation_mode.title=Cola a sa modalidade de presentatzione +presentation_mode_label=Modalidade de presentatzione +open_file.title=Aberi s'archìviu +open_file_label=Abertu +print.title=Imprenta +print_label=Imprenta +download.title=Iscàrriga +download_label=Iscàrriga +bookmark.title=Visualizatzione atuale (còpia o aberi in una ventana noa) +bookmark_label=Visualizatzione atuale + +save.title=Sarva +save_label=Sarva + +# Secondary toolbar and context menu +tools.title=Istrumentos +tools_label=Istrumentos +first_page.title=Bae a sa prima pàgina +first_page_label=Bae a sa prima pàgina +last_page.title=Bae a s'ùrtima pàgina +last_page_label=Bae a s'ùrtima pàgina +page_rotate_cw.title=Gira in sensu oràriu +page_rotate_cw_label=Gira in sensu oràriu +page_rotate_ccw.title=Gira in sensu anti-oràriu +page_rotate_ccw_label=Gira in sensu anti-oràriu + +cursor_text_select_tool.title=Ativa s'aina de seletzione de testu +cursor_text_select_tool_label=Aina de seletzione de testu +cursor_hand_tool.title=Ativa s'aina de manu +cursor_hand_tool_label=Aina de manu + +scroll_page.title=Imprea s'iscurrimentu de pàgina +scroll_page_label=Iscurrimentu de pàgina +scroll_vertical.title=Imprea s'iscurrimentu verticale +scroll_vertical_label=Iscurrimentu verticale +scroll_horizontal.title=Imprea s'iscurrimentu orizontale +scroll_horizontal_label=Iscurrimentu orizontale +scroll_wrapped.title=Imprea s'iscurrimentu continu +scroll_wrapped_label=Iscurrimentu continu + + +# Document properties dialog box +document_properties.title=Propiedades de su documentu… +document_properties_label=Propiedades de su documentu… +document_properties_file_name=Nòmine de s'archìviu: +document_properties_file_size=Mannària de s'archìviu: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Tìtulu: +document_properties_author=Autoria: +document_properties_subject=Ogetu: +document_properties_keywords=Faeddos crae: +document_properties_creation_date=Data de creatzione: +document_properties_modification_date=Data de modìfica: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Creatzione: +document_properties_producer=Produtore de PDF: +document_properties_version=Versione de PDF: +document_properties_page_count=Contu de pàginas: +document_properties_page_size=Mannària de sa pàgina: +document_properties_page_size_unit_inches=pòddighes +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=verticale +document_properties_page_size_orientation_landscape=orizontale +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Lìtera +document_properties_page_size_name_legal=Legale +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Visualizatzione web lestra: +document_properties_linearized_yes=Eja +document_properties_linearized_no=Nono +document_properties_close=Serra + +print_progress_message=Aparitzende s'imprenta de su documentu… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cantzella + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Ativa/disativa sa barra laterale +toggle_sidebar_notification2.title=Ativa/disativa sa barra laterale (su documentu cuntenet un'ischema, alligongiados o livellos) +toggle_sidebar_label=Ativa/disativa sa barra laterale +document_outline_label=Ischema de su documentu +attachments.title=Ammustra alligongiados +attachments_label=Alliongiados +layers.title=Ammustra livellos (clic dòpiu pro ripristinare totu is livellos a s'istadu predefinidu) +layers_label=Livellos +thumbs.title=Ammustra miniaturas +thumbs_label=Miniaturas +current_outline_item.title=Agata s'elementu atuale de s'ischema +current_outline_item_label=Elementu atuale de s'ischema +findbar.title=Agata in su documentu +findbar_label=Agata + +additional_layers=Livellos additzionales +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Pàgina {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Pàgina {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura de sa pàgina {{page}} + +# Find panel button title and messages +find_input.title=Agata +find_input.placeholder=Agata in su documentu… +find_previous.title=Agata s'ocurrèntzia pretzedente de sa fràsia +find_previous_label=S'ischeda chi b'est primu +find_next.title=Agata s'ocurrèntzia imbeniente de sa fràsia +find_next_label=Imbeniente +find_highlight=Evidèntzia totu +find_match_case_label=Distinghe intre majùsculas e minùsculas +find_match_diacritics_label=Respeta is diacrìticos +find_entire_word_label=Faeddos intreos +find_reached_top=S'est lòmpidu a su cumintzu de su documentu, si sighit dae su bàsciu +find_reached_bottom=Acabbu de su documentu, si sighit dae s'artu +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} dae {{total}} currispondèntzia +find_match_count[two]={{current}} dae {{total}} currispondèntzias +find_match_count[few]={{current}} dae {{total}} currispondèntzias +find_match_count[many]={{current}} dae {{total}} currispondèntzias +find_match_count[other]={{current}} dae {{total}} currispondèntzias +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Prus de {{limit}} currispondèntzias +find_match_count_limit[one]=Prus de {{limit}} currispondèntzia +find_match_count_limit[two]=Prus de {{limit}} currispondèntzias +find_match_count_limit[few]=Prus de {{limit}} currispondèntzias +find_match_count_limit[many]=Prus de {{limit}} currispondèntzias +find_match_count_limit[other]=Prus de {{limit}} currispondèntzias +find_not_found=Testu no agatadu + +# Error panel labels +error_more_info=Àteras informatziones +error_less_info=Prus pagu informatziones +error_close=Serra +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Messàgiu: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Archìviu: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Lìnia: {{line}} + +# Predefined zoom values +page_scale_auto=Ingrandimentu automàticu +page_scale_actual=Mannària reale +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Carrighende… + +# Loading indicator messages +loading_error=Faddina in sa càrriga de su PDF. +invalid_file_error=Archìviu PDF non vàlidu o corrùmpidu. +missing_file_error=Ammancat s'archìviu PDF. +unexpected_response_error=Risposta imprevista de su serbidore. + +rendering_error=Faddina in sa visualizatzione de sa pàgina. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +password_label=Inserta sa crae pro abèrrere custu archìviu PDF. +password_invalid=Sa crae no est curreta. Torra·bi a proare. +password_ok=Andat bene +password_cancel=Cantzella + +printing_not_supported=Atentzione: s'imprenta no est funtzionende de su totu in custu navigadore. +printing_not_ready=Atentzione: su PDF no est istadu carrigadu de su totu pro s'imprenta. +web_fonts_disabled=Is tipografias web sunt disativadas: is tipografias incrustadas a su PDF non podent èssere impreadas. + +# Editor +editor_free_text2.title=Testu +editor_free_text2_label=Testu +editor_ink2.title=Disinnu +editor_ink2_label=Disinnu + +free_text2_default_content=Cumintza a iscrìere… + +# Editor Parameters +editor_free_text_color=Colore +editor_free_text_size=Mannària +editor_ink_color=Colore +editor_ink_thickness=Grussària + +# Editor aria +editor_free_text2_aria_label=Editore de testu +editor_ink2_aria_label=Editore de disinnos +editor_ink_canvas_aria_label=Immàgine creada dae s’utente diff --git a/www/include/vendor/pdfjs/web/locale/scn/viewer.properties b/www/include/vendor/pdfjs/web/locale/scn/viewer.properties new file mode 100644 index 0000000..e9a650a --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/scn/viewer.properties @@ -0,0 +1,101 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. + +zoom_out.title=Cchiù nicu +zoom_out_label=Cchiù nicu +zoom_in.title=Cchiù granni +zoom_in_label=Cchiù granni + +# Secondary toolbar and context menu + + + + +# Document properties dialog box +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Vista web lesta: +document_properties_linearized_yes=Se + +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_close=Sfai + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. + +# Find panel button title and messages +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. + +# Error panel labels +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number + +# Predefined zoom values +page_scale_width=Larghizza dâ pàggina +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. + +# Loading indicator messages + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +password_cancel=Sfai + diff --git a/www/include/vendor/pdfjs/web/locale/sco/viewer.properties b/www/include/vendor/pdfjs/web/locale/sco/viewer.properties new file mode 100644 index 0000000..3cc9935 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/sco/viewer.properties @@ -0,0 +1,249 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Page Afore +previous_label=Previous +next.title=Page Efter +next_label=Neist + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Page +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=o {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} o {{pagesCount}}) + +zoom_out.title=Zoom Oot +zoom_out_label=Zoom Oot +zoom_in.title=Zoom In +zoom_in_label=Zoom In +zoom.title=Zoom +presentation_mode.title=Flit tae Presentation Mode +presentation_mode_label=Presentation Mode +open_file.title=Open File +open_file_label=Open +print.title=Prent +print_label=Prent +download.title=Doonload +download_label=Doonload +bookmark.title=View the noo (copy or open in new windae) +bookmark_label=View The Noo + +# Secondary toolbar and context menu +tools.title=Tools +tools_label=Tools +first_page.title=Gang tae First Page +first_page_label=Gang tae First Page +last_page.title=Gang tae Lest Page +last_page_label=Gang tae Lest Page +page_rotate_cw.title=Rotate Clockwise +page_rotate_cw_label=Rotate Clockwise +page_rotate_ccw.title=Rotate Coonterclockwise +page_rotate_ccw_label=Rotate Coonterclockwise + +cursor_text_select_tool.title=Enable Text Walin Tool +cursor_text_select_tool_label=Text Walin Tool +cursor_hand_tool.title=Enable Haun Tool +cursor_hand_tool_label=Haun Tool + +scroll_vertical.title=Yaise Vertical Scrollin +scroll_vertical_label=Vertical Scrollin +scroll_horizontal.title=Yaise Horizontal Scrollin +scroll_horizontal_label=Horizontal Scrollin +scroll_wrapped.title=Yaise Wrapped Scrollin +scroll_wrapped_label=Wrapped Scrollin + +spread_none.title=Dinnae jyn page spreids +spread_none_label=Nae Spreids +spread_odd.title=Jyn page spreids stertin wi odd-numbered pages +spread_odd_label=Odd Spreids +spread_even.title=Jyn page spreids stertin wi even-numbered pages +spread_even_label=Even Spreids + +# Document properties dialog box +document_properties.title=Document Properties… +document_properties_label=Document Properties… +document_properties_file_name=File nemme: +document_properties_file_size=File size: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Title: +document_properties_author=Author: +document_properties_subject=Subjeck: +document_properties_keywords=Keywirds: +document_properties_creation_date=Date o Makkin: +document_properties_modification_date=Date o Chynges: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Makker: +document_properties_producer=PDF Producer: +document_properties_version=PDF Version: +document_properties_page_count=Page Coont: +document_properties_page_size=Page Size: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=portrait +document_properties_page_size_orientation_landscape=landscape +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Fast Wab View: +document_properties_linearized_yes=Aye +document_properties_linearized_no=Naw +document_properties_close=Sneck + +print_progress_message=Reddin document fur prentin… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Stap + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Toggle Sidebaur +toggle_sidebar_notification2.title=Toggle Sidebaur (document conteens ootline/attachments/layers) +toggle_sidebar_label=Toggle Sidebaur +document_outline.title=Kythe Document Ootline (double-click fur tae oot-fauld/in-fauld aw items) +document_outline_label=Document Ootline +attachments.title=Kythe Attachments +attachments_label=Attachments +layers.title=Kythe Layers (double-click fur tae reset aw layers tae the staunart state) +layers_label=Layers +thumbs.title=Kythe Thumbnails +thumbs_label=Thumbnails +current_outline_item.title=Find Current Ootline Item +current_outline_item_label=Current Ootline Item +findbar.title=Find in Document +findbar_label=Find + +additional_layers=Mair Layers +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Page {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Page {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Thumbnail o Page {{page}} + +# Find panel button title and messages +find_input.title=Find +find_input.placeholder=Find in document… +find_previous.title=Airt oot the last time this phrase occurred +find_previous_label=Previous +find_next.title=Airt oot the neist time this phrase occurs +find_next_label=Neist +find_highlight=Highlicht aw +find_match_case_label=Match case +find_entire_word_label=Hale Wirds +find_reached_top=Raxed tap o document, went on fae the dowp end +find_reached_bottom=Raxed end o document, went on fae the tap +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} o {{total}} match +find_match_count[two]={{current}} o {{total}} matches +find_match_count[few]={{current}} o {{total}} matches +find_match_count[many]={{current}} o {{total}} matches +find_match_count[other]={{current}} o {{total}} matches +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Mair nor {{limit}} matches +find_match_count_limit[one]=Mair nor {{limit}} match +find_match_count_limit[two]=Mair nor {{limit}} matches +find_match_count_limit[few]=Mair nor {{limit}} matches +find_match_count_limit[many]=Mair nor {{limit}} matches +find_match_count_limit[other]=Mair nor {{limit}} matches +find_not_found=Phrase no fund + +# Error panel labels +error_more_info=Mair Information +error_less_info=Less Information +error_close=Sneck +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Message: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=File: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Line: {{line}} +rendering_error=A mishanter tuik place while renderin the page. + +# Predefined zoom values +page_scale_width=Page Width +page_scale_fit=Page Fit +page_scale_auto=Automatic Zoom +page_scale_actual=Actual Size +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Loadin… +loading_error=An mishanter tuik place while loadin the PDF. +invalid_file_error=No suithfest or camshauchlet PDF file. +missing_file_error=PDF file tint. +unexpected_response_error=Unexpectit server repone. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Annotation] +password_label=Inpit the passwird fur tae open this PDF file. +password_invalid=Passwird no suithfest. Gonnae gie it anither shot. +password_ok=OK +password_cancel=Stap + +printing_not_supported=Tak tent: Prentin isnae richt supportit by this stravaiger. +printing_not_ready=Tak tent: The PDF isnae richt loadit fur prentin. +web_fonts_disabled=Wab fonts are disabled: cannae yaise embeddit PDF fonts. + diff --git a/www/include/vendor/pdfjs/web/locale/si/viewer.properties b/www/include/vendor/pdfjs/web/locale/si/viewer.properties new file mode 100644 index 0000000..04dfaf4 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/si/viewer.properties @@ -0,0 +1,237 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=කලින් පිටුව +previous_label=කලින් +next.title=ඊළඟ පිටුව +next_label=ඊළඟ + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=පිටුව +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. + +zoom_out.title=කුඩාලනය +zoom_out_label=කුඩාලනය +zoom_in.title=විශාලනය +zoom_in_label=විශාලනය +zoom.title=විශාල කරන්න +presentation_mode.title=සමර්පණ ප්‍රකාරය වෙත මාරුවන්න +presentation_mode_label=සමර්පණ ප්‍රකාරය +open_file.title=ගොනුව අරින්න +open_file_label=අරින්න +print.title=මුද්‍රණය +print_label=මුද්‍රණය +download.title=බාගන්න +download_label=බාගන්න +bookmark.title=වත්මන් දැක්ම (පිටපත් කරන්න හෝ නව කවුළුවක අරින්න) +bookmark_label=වත්මන් දැක්ම + +# Secondary toolbar and context menu +tools.title=මෙවලම් +tools_label=මෙවලම් +first_page.title=මුල් පිටුවට යන්න +first_page_label=මුල් පිටුවට යන්න +last_page.title=අවසන් පිටුවට යන්න +last_page_label=අවසන් පිටුවට යන්න + +cursor_text_select_tool.title=පෙළ තේරීමේ මෙවලම සබල කරන්න +cursor_text_select_tool_label=පෙළ තේරීමේ මෙවලම +cursor_hand_tool.title=අත් මෙවලම සබල කරන්න +cursor_hand_tool_label=අත් මෙවලම + +scroll_page.title=පිටුව අනුචලනය භාවිතය +scroll_page_label=පිටුව අනුචලනය +scroll_vertical.title=සිරස් අනුචලනය භාවිතය +scroll_vertical_label=සිරස් අනුචලනය +scroll_horizontal.title=තිරස් අනුචලනය භාවිතය +scroll_horizontal_label=තිරස් අනුචලනය + + +# Document properties dialog box +document_properties.title=ලේඛනයේ ගුණාංග… +document_properties_label=ලේඛනයේ ගුණාංග… +document_properties_file_name=ගොනුවේ නම: +document_properties_file_size=ගොනුවේ ප්‍රමාණය: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb=කි.බ. {{size_kb}} (බයිට {{size_b}}) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb=මෙ.බ. {{size_mb}} (බයිට {{size_b}}) +document_properties_title=සිරැසිය: +document_properties_author=කතෘ: +document_properties_subject=මාතෘකාව: +document_properties_keywords=මූල පද: +document_properties_creation_date=සෑදූ දිනය: +document_properties_modification_date=සංශෝධිත දිනය: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=නිර්මාතෘ: +document_properties_producer=පීඩීඑෆ් සම්පාදක: +document_properties_version=පීඩීඑෆ් අනුවාදය: +document_properties_page_count=පිටු ගණන: +document_properties_page_size=පිටුවේ තරම: +document_properties_page_size_unit_inches=අඟල් +document_properties_page_size_unit_millimeters=මි.මී. +document_properties_page_size_orientation_portrait=සිරස් +document_properties_page_size_orientation_landscape=තිරස් +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}}×{{height}}{{unit}}{{name}}{{orientation}} +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=වේගවත් වියමන දැක්ම: +document_properties_linearized_yes=ඔව් +document_properties_linearized_no=නැහැ +document_properties_close=වසන්න + +print_progress_message=මුද්‍රණය සඳහා ලේඛනය සූදානම් වෙමින්… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=අවලංගු කරන්න + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +document_outline_label=ලේඛනයේ වටසන +attachments.title=ඇමුණුම් පෙන්වන්න +attachments_label=ඇමුණුම් +layers.title=ස්තර පෙන්වන්න (සියළු ස්තර පෙරනිමි තත්‍වයට යළි සැකසීමට දෙවරක් ඔබන්න) +layers_label=ස්තර +thumbs.title=සිඟිති රූ පෙන්වන්න +thumbs_label=සිඟිති රූ +findbar.title=ලේඛනයෙහි සොයන්න +findbar_label=සොයන්න + +additional_layers=අතිරේක ස්තර +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=පිටුව {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=පිටුව {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=පිටුවේ සිඟිත රූව {{page}} + +# Find panel button title and messages +find_input.title=සොයන්න +find_input.placeholder=ලේඛනයේ සොයන්න… +find_previous.title=මෙම වැකිකඩ කලින් යෙදුණු ස්ථානය සොයන්න +find_previous_label=කලින් +find_next.title=මෙම වැකිකඩ ඊළඟට යෙදෙන ස්ථානය සොයන්න +find_next_label=ඊළඟ +find_highlight=සියල්ල උද්දීපනය +find_entire_word_label=සමස්ත වචන +find_reached_top=ලේඛනයේ මුදුනට ළඟා විය, පහළ සිට ඉහළට +find_reached_bottom=ලේඛනයේ අවසානයට ළඟා විය, ඉහළ සිට පහළට +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit[zero]=ගැළපීම් {{limit}} කට වඩා +find_match_count_limit[two]=ගැළපුම් {{limit}} කට වඩා +find_match_count_limit[few]=ගැළපුම් {{limit}} කට වඩා +find_match_count_limit[many]=ගැළපුම් {{limit}} කට වඩා +find_match_count_limit[other]=ගැළපුම් {{limit}} කට වඩා +find_not_found=වැකිකඩ හමු නොවිණි + +# Error panel labels +error_more_info=තව තොරතුරු +error_less_info=අවම තොරතුරු +error_close=වසන්න +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=පීඩීඑෆ්.js v{{version}} (තැනීම: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=පණිවිඩය: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=ගොනුව: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=පේළිය: {{line}} + +# Predefined zoom values +page_scale_width=පිටුවේ පළල +page_scale_auto=ස්වයංක්‍රීය විශාලනය +page_scale_actual=සැබෑ ප්‍රමාණය +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=පූරණය වෙමින්… +loading_error=පීඩීඑෆ් පූරණය කිරීමේදී දෝෂයක් සිදු විය. +invalid_file_error=වලංගු නොවන හෝ හානිවූ පීඩීඑෆ් ගොනුවකි. +missing_file_error=මඟහැරුණු පීඩීඑෆ් ගොනුවකි. +unexpected_response_error=අනපේක්‍ෂිත සේවාදායක ප්‍රතිචාරයකි. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +password_label=මෙම පීඩීඑෆ් ගොනුව විවෘත කිරීමට මුරපදය යොදන්න. +password_invalid=වැරදි මුරපදයකි. නැවත උත්සාහ කරන්න. +password_ok=හරි +password_cancel=අවලංගු + +printing_not_supported=අවවාදයයි: මෙම අතිරික්සුව මුද්‍රණය සඳහා හොඳින් සහාය නොදක්වයි. +printing_not_ready=අවවාදයයි: මුද්‍රණයට පීඩීඑෆ් ගොනුව සම්පූර්ණයෙන් පූරණය වී නැත. +web_fonts_disabled=වියමන අකුරු අබලයි: පීඩීඑෆ් වෙත කාවැද්දූ අකුරු භාවිතා කළ නොහැකිය. + +# Editor +editor_none_label=සංස්කරණය අබල කරන්න + +free_text_default_content=පෙළ යොදන්න… + +# Editor +editor_free_text2.title=පෙළ +editor_free_text2_label=පෙළ + + +# Editor Parameters +editor_free_text_color=වර්ණය +editor_free_text_size=තරම +editor_ink_color=වර්ණය +editor_ink_thickness=ඝණකම + +# Editor aria +editor_free_text_aria_label=FreeText සංස්කරකය + +# Editor aria +editor_free_text2_aria_label=වදන් සකසනය diff --git a/www/include/vendor/pdfjs/web/locale/sk/viewer.properties b/www/include/vendor/pdfjs/web/locale/sk/viewer.properties new file mode 100644 index 0000000..696dc1c --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/sk/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Predchádzajúca strana +previous_label=Predchádzajúca +next.title=Nasledujúca strana +next_label=Nasledujúca + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Strana +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=z {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} z {{pagesCount}}) + +zoom_out.title=Zmenšiť veľkosť +zoom_out_label=Zmenšiť veľkosť +zoom_in.title=Zväčšiť veľkosť +zoom_in_label=Zväčšiť veľkosť +zoom.title=Nastavenie veľkosti +presentation_mode.title=Prepnúť na režim prezentácie +presentation_mode_label=Režim prezentácie +open_file.title=Otvoriť súbor +open_file_label=Otvoriť +print.title=Tlačiť +print_label=Tlačiť +download.title=Stiahnuť +download_label=Stiahnuť +save.title=Uložiť +save_label=Uložiť +bookmark.title=Aktuálne zobrazenie (kopírovať alebo otvoriť v novom okne) +bookmark_label=Aktuálne zobrazenie + +bookmark1.title=Aktuálna stránka (zobraziť adresu URL z aktuálnej stránky) +bookmark1_label=Aktuálna stránka + +# Secondary toolbar and context menu +tools.title=Nástroje +tools_label=Nástroje +first_page.title=Prejsť na prvú stranu +first_page_label=Prejsť na prvú stranu +last_page.title=Prejsť na poslednú stranu +last_page_label=Prejsť na poslednú stranu +page_rotate_cw.title=Otočiť v smere hodinových ručičiek +page_rotate_cw_label=Otočiť v smere hodinových ručičiek +page_rotate_ccw.title=Otočiť proti smeru hodinových ručičiek +page_rotate_ccw_label=Otočiť proti smeru hodinových ručičiek + +cursor_text_select_tool.title=Povoliť výber textu +cursor_text_select_tool_label=Výber textu +cursor_hand_tool.title=Povoliť nástroj ruka +cursor_hand_tool_label=Nástroj ruka + +scroll_page.title=Použiť rolovanie po stránkach +scroll_page_label=Rolovanie po stránkach +scroll_vertical.title=Používať zvislé posúvanie +scroll_vertical_label=Zvislé posúvanie +scroll_horizontal.title=Používať vodorovné posúvanie +scroll_horizontal_label=Vodorovné posúvanie +scroll_wrapped.title=Použiť postupné posúvanie +scroll_wrapped_label=Postupné posúvanie + +spread_none.title=Nezdružovať stránky +spread_none_label=Žiadne združovanie +spread_odd.title=Združí stránky a umiestni nepárne stránky vľavo +spread_odd_label=Združiť stránky (nepárne vľavo) +spread_even.title=Združí stránky a umiestni párne stránky vľavo +spread_even_label=Združiť stránky (párne vľavo) + +# Document properties dialog box +document_properties.title=Vlastnosti dokumentu… +document_properties_label=Vlastnosti dokumentu… +document_properties_file_name=Názov súboru: +document_properties_file_size=Veľkosť súboru: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} kB ({{size_b}} bajtov) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bajtov) +document_properties_title=Názov: +document_properties_author=Autor: +document_properties_subject=Predmet: +document_properties_keywords=Kľúčové slová: +document_properties_creation_date=Dátum vytvorenia: +document_properties_modification_date=Dátum úpravy: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Vytvoril: +document_properties_producer=Tvorca PDF: +document_properties_version=Verzia PDF: +document_properties_page_count=Počet strán: +document_properties_page_size=Veľkosť stránky: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=na výšku +document_properties_page_size_orientation_landscape=na šírku +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=List +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Rýchle Web View: +document_properties_linearized_yes=Áno +document_properties_linearized_no=Nie +document_properties_close=Zavrieť + +print_progress_message=Príprava dokumentu na tlač… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}} % +print_progress_close=Zrušiť + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Prepnúť bočný panel +toggle_sidebar_notification2.title=Prepnúť bočný panel (dokument obsahuje osnovu/prílohy/vrstvy) +toggle_sidebar_label=Prepnúť bočný panel +document_outline.title=Zobraziť osnovu dokumentu (dvojitým kliknutím rozbalíte/zbalíte všetky položky) +document_outline_label=Osnova dokumentu +attachments.title=Zobraziť prílohy +attachments_label=Prílohy +layers.title=Zobraziť vrstvy (dvojitým kliknutím uvediete všetky vrstvy do pôvodného stavu) +layers_label=Vrstvy +thumbs.title=Zobraziť miniatúry +thumbs_label=Miniatúry +current_outline_item.title=Nájsť aktuálnu položku v osnove +current_outline_item_label=Aktuálna položka v osnove +findbar.title=Hľadať v dokumente +findbar_label=Hľadať + +additional_layers=Ďalšie vrstvy +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Strana {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Strana {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatúra strany {{page}} + +# Find panel button title and messages +find_input.title=Hľadať +find_input.placeholder=Hľadať v dokumente… +find_previous.title=Vyhľadať predchádzajúci výskyt reťazca +find_previous_label=Predchádzajúce +find_next.title=Vyhľadať ďalší výskyt reťazca +find_next_label=Ďalšie +find_highlight=Zvýrazniť všetky +find_match_case_label=Rozlišovať veľkosť písmen +find_match_diacritics_label=Rozlišovať diakritiku +find_entire_word_label=Celé slová +find_reached_top=Bol dosiahnutý začiatok stránky, pokračuje sa od konca +find_reached_bottom=Bol dosiahnutý koniec stránky, pokračuje sa od začiatku +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}}. z {{total}} výsledku +find_match_count[two]={{current}}. z {{total}} výsledkov +find_match_count[few]={{current}}. z {{total}} výsledkov +find_match_count[many]={{current}}. z {{total}} výsledkov +find_match_count[other]={{current}}. z {{total}} výsledkov +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Viac než {{limit}} výsledkov +find_match_count_limit[one]=Viac než {{limit}} výsledok +find_match_count_limit[two]=Viac než {{limit}} výsledky +find_match_count_limit[few]=Viac než {{limit}} výsledky +find_match_count_limit[many]=Viac než {{limit}} výsledkov +find_match_count_limit[other]=Viac než {{limit}} výsledkov +find_not_found=Výraz nebol nájdený + +# Error panel labels +error_more_info=Ďalšie informácie +error_less_info=Menej informácií +error_close=Zavrieť +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (zostavenie: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Správa: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Zásobník: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Súbor: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Riadok: {{line}} + +# Predefined zoom values +page_scale_width=Na šírku strany +page_scale_fit=Na veľkosť strany +page_scale_auto=Automatická veľkosť +page_scale_actual=Skutočná veľkosť +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}} % + +# Loading indicator messages +loading=Načítava sa… +loading_error=Počas načítavania dokumentu PDF sa vyskytla chyba. +invalid_file_error=Neplatný alebo poškodený súbor PDF. +missing_file_error=Chýbajúci súbor PDF. +unexpected_response_error=Neočakávaná odpoveď zo servera. + +rendering_error=Pri vykresľovaní stránky sa vyskytla chyba. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anotácia typu {{type}}] +password_label=Ak chcete otvoriť tento súbor PDF, zadajte jeho heslo. +password_invalid=Heslo nie je platné. Skúste to znova. +password_ok=OK +password_cancel=Zrušiť + +printing_not_supported=Upozornenie: tlač nie je v tomto prehliadači plne podporovaná. +printing_not_ready=Upozornenie: súbor PDF nie je plne načítaný pre tlač. +web_fonts_disabled=Webové písma sú vypnuté: nie je možné použiť písma vložené do súboru PDF. + +# Editor +editor_free_text2.title=Text +editor_free_text2_label=Text +editor_ink2.title=Kreslenie +editor_ink2_label=Kresliť + +free_text2_default_content=Začnite písať… + +# Editor Parameters +editor_free_text_color=Farba +editor_free_text_size=Veľkosť +editor_ink_color=Farba +editor_ink_thickness=Hrúbka +editor_ink_opacity=Priehľadnosť + +# Editor aria +editor_free_text2_aria_label=Textový editor +editor_ink2_aria_label=Editor kreslenia +editor_ink_canvas_aria_label=Obrázok vytvorený používateľom diff --git a/www/include/vendor/pdfjs/web/locale/skr/viewer.properties b/www/include/vendor/pdfjs/web/locale/skr/viewer.properties new file mode 100644 index 0000000..2d1e1e3 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/skr/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=پچھلا ورقہ +previous_label=پچھلا +next.title=اڳلا ورقہ +next_label=اڳلا + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=ورقہ +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}} دا +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} دا {{pagesCount}}) + +zoom_out.title=زوم آؤٹ +zoom_out_label=زوم آؤٹ +zoom_in.title=زوم اِن +zoom_in_label=زوم اِن +zoom.title=زوم +presentation_mode.title=پریزنٹیشن موڈ تے سوئچ کرو +presentation_mode_label=پریزنٹیشن موڈ +open_file.title=فائل کھولو +open_file_label=کھولو +print.title=چھاپو +print_label=چھاپو +download.title=ڈاؤن لوڈ +download_label=ڈاؤن لوڈ +save.title=ہتھیکڑا کرو +save_label=ہتھیکڑا کرو +bookmark.title=حالیہ نظارہ (نویں ونڈو وِچ نقل کرو یا کھولو) +bookmark_label=حالیہ نظارہ + +bookmark1.title=موجودہ ورقہ (موجودہ ورقے کنوں یوآرایل ݙیکھو) +bookmark1_label=موجودہ ورقہ + +# Secondary toolbar and context menu +tools.title=اوزار +tools_label=اوزار +first_page.title=پہلے ورقے تے ونڄو +first_page_label=پہلے ورقے تے ونڄو +last_page.title=چھیکڑی ورقے تے ونڄو +last_page_label=چھیکڑی ورقے تے ونڄو +page_rotate_cw.title=گھڑی وانگوں گھماؤ +page_rotate_cw_label=گھڑی وانگوں گھماؤ +page_rotate_ccw.title=گھڑی تے اُپٹھ گھماؤ +page_rotate_ccw_label=گھڑی تے اُپٹھ گھماؤ + +cursor_text_select_tool.title=متن منتخب کݨ والا آلہ فعال بݨاؤ +cursor_text_select_tool_label=متن منتخب کرݨ والا آلہ +cursor_hand_tool.title=ہینڈ ٹول فعال بݨاؤ +cursor_hand_tool_label=ہینڈ ٹول + +scroll_page.title=پیج سکرولنگ استعمال کرو +scroll_page_label=پیج سکرولنگ +scroll_vertical.title=عمودی سکرولنگ استعمال کرو +scroll_vertical_label=عمودی سکرولنگ +scroll_horizontal.title=افقی سکرولنگ استعمال کرو +scroll_horizontal_label=افقی سکرولنگ +scroll_wrapped.title=ویڑھی ہوئی سکرولنگ استعمال کرو +scroll_wrapped_label=وہڑھی ہوئی سکرولنگ + +spread_none.title=پیج سپریڈز وِچ شامل نہ تھیوو۔ +spread_none_label=کوئی پولھ کائنی +spread_odd.title=طاق نمبر والے ورقیاں دے نال شروع تھیوݨ والے پیج سپریڈز وِچ شامل تھیوو۔ +spread_odd_label=تاک پھیلاؤ +spread_even.title=جفت نمر والے ورقیاں نال شروع تھیوݨ والے پیج سپریڈز وِ شامل تھیوو۔ +spread_even_label=جفت پھیلاؤ + +# Document properties dialog box +document_properties.title=دستاویز خواص… +document_properties_label=دستاویز خواص … +document_properties_file_name=فائل دا ناں: +document_properties_file_size=فائل دا سائز: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} کے بی ({{size_b}} بائٹس) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} ایم بی ({{size_b}} بائٹس) +document_properties_title=عنوان: +document_properties_author=تخلیق کار: +document_properties_subject=موضوع: +document_properties_keywords=کلیدی الفاظ: +document_properties_creation_date=تخلیق دی تاریخ: +document_properties_modification_date=ترمیم دی تاریخ: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=تخلیق کار: +document_properties_producer=PDF پیدا کار: +document_properties_version=PDF ورژن: +document_properties_page_count=ورقہ شماری: +document_properties_page_size=ورقہ دی سائز: +document_properties_page_size_unit_inches=وِچ +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=عمودی انداز +document_properties_page_size_orientation_landscape=افقى انداز +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=لیٹر +document_properties_page_size_name_legal=قنونی +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=تکھا ویب نظارہ: +document_properties_linearized_yes=جیا +document_properties_linearized_no=کو +document_properties_close=بند کرو + +print_progress_message=چھاپݨ کیتے دستاویز تیار تھیندے پئے ہن … +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=منسوخ کرو + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=سائیڈ بار ٹوگل کرو +toggle_sidebar_notification2.title=سائیڈ بار ٹوگل کرو (دستاویز وِچ آؤٹ لائن/ منسلکات/ پرتاں شامل ہن) +toggle_sidebar_label=سائیڈ بار ٹوگل کرو +document_outline.title=دستاویز دا خاکہ ݙکھاؤ (تمام آئٹمز کوں پھیلاوݨ/سنگوڑݨ کیتے ڈبل کلک کرو) +document_outline_label=دستاویز آؤٹ لائن +attachments.title=نتھیاں ݙکھاؤ +attachments_label=منسلکات +layers.title=پرتاں ݙکھاؤ (تمام پرتاں کوں ڈیفالٹ حالت وِچ دوبارہ ترتیب ݙیوݨ کیتے ڈبل کلک کرو) +layers_label=پرتاں +thumbs.title=تھمبنیل ݙکھاؤ +thumbs_label=تھمبنیلز +current_outline_item.title=موجودہ آؤٹ لائن آئٹم لبھو +current_outline_item_label=موجودہ آؤٹ لائن آئٹم +findbar.title=دستاویز وِچ لبھو +findbar_label=لبھو + +additional_layers=اضافی پرتاں +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=ورقہ {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=ورقہ {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=ورقے دا تھمبنیل {{page}} + +# Find panel button title and messages +find_input.title=لبھو +find_input.placeholder=دستاویز وِچ لبھو … +find_previous.title=فقرے دا پچھلا واقعہ لبھو +find_previous_label=پچھلا +find_next.title=فقرے دا اڳلا واقعہ لبھو +find_next_label=اڳلا +find_highlight=تمام نشابر کرو +find_match_case_label=حروف مشابہ کرو +find_match_diacritics_label=ڈائیکرٹکس مشابہ کرو +find_entire_word_label=تمام الفاظ +find_reached_top=ورقے دے شروع تے پُج ڳیا، تلوں جاری کیتا ڳیا +find_reached_bottom=ورقے دے پاند تے پُڄ ڳیا، اُتوں شروع کیتا ڳیا +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ جمع (کل) ]} +find_match_count[one]={{current}} دا {{total}} موازنہ کرو +find_match_count[two]={{current}} دا {{total}} موازنہ +find_match_count[few]={{current}} دا {{total}} موازنہ +find_match_count[many]={{current}} دا {{total}} موازنہ +find_match_count[other]={{current}} دا {{total}} موازنہ +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ جمع (حد) ]} +find_match_count_limit[zero]={{limit}} کنوں زیادہ مماثلتاں۔ +find_match_count_limit[one]={{limit}} مماثل کنوں ودھ +find_match_count_limit[two]={{limit}} کنوں زیادہ مماثلتاں۔ +find_match_count_limit[few]={{limit}} مماثلاں کنوں ودھ +find_match_count_limit[many]={{limit}} مماثلاں کنوں ودھ +find_match_count_limit[other]={{limit}} مماثلاں کنوں ودھ +find_not_found=فقرہ نئیں ملیا + +# Error panel labels +error_more_info=ودھیک معلومات +error_less_info=گھٹ معلومات +error_close=بند کرو +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (بݨاؤ: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=سنیہا: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=سٹیک: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=فائل: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=لائن: {{line}} + +# Predefined zoom values +page_scale_width=ورقے دی چوڑائی +page_scale_fit=ورقہ فٹنگ +page_scale_auto=آپوں آپ زوم +page_scale_actual=اصل میچا +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=لوڈ تھیندا پئے۔۔۔ +loading_error=PDF لوڈ کریندے ویلھے نقص آ ڳیا۔ +invalid_file_error=غلط یا خراب شدہ PDF فائل۔ +missing_file_error=PDF فائل غائب ہے۔ +unexpected_response_error=سرور دا غیر متوقع جواب۔ + +rendering_error=ورقہ رینڈر کریندے ویلھے ہک خرابی پیش آڳئی۔ + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} تشریح] +password_label=ایہ PDF فائل کھولݨ کیتے پاس ورڈ درج کرو۔ +password_invalid=غلط پاس ورڈ: براہ مہربانی ولدا کوشش کرو۔ +password_ok=ٹھیک ہے +password_cancel=منسوخ کرو + +printing_not_supported=چتاوݨی: چھپائی ایں براؤزر تے پوری طراں معاونت شدہ کائنی۔ +printing_not_ready=چتاوݨی: PDF چھپائی کیتے پوری طراں لوڈ نئیں تھئی۔ +web_fonts_disabled=ویب فونٹس غیر فعال ہن: ایمبیڈڈ PDF فونٹس استعمال کرݨ کنوں قاصر ہن + +# Editor +editor_free_text2.title=متن +editor_free_text2_label=متن +editor_ink2.title=چھکو +editor_ink2_label=چھکو + +free_text2_default_content=ٹائپنگ شروع کرو … + +# Editor Parameters +editor_free_text_color=رنگ +editor_free_text_size=سائز +editor_ink_color=رنگ +editor_ink_thickness=ٹھولھ +editor_ink_opacity=دھندلاپن + +# Editor aria +editor_free_text2_aria_label=ٹیکسٹ ایڈیٹر +editor_ink2_aria_label=ڈرا ایڈیٹر +editor_ink_canvas_aria_label=صارف دی بݨائی ہوئی تصویر diff --git a/www/include/vendor/pdfjs/web/locale/sl/viewer.properties b/www/include/vendor/pdfjs/web/locale/sl/viewer.properties new file mode 100644 index 0000000..347d764 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/sl/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Prejšnja stran +previous_label=Nazaj +next.title=Naslednja stran +next_label=Naprej + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Stran +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=od {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} od {{pagesCount}}) + +zoom_out.title=Pomanjšaj +zoom_out_label=Pomanjšaj +zoom_in.title=Povečaj +zoom_in_label=Povečaj +zoom.title=Povečava +presentation_mode.title=Preklopi v način predstavitve +presentation_mode_label=Način predstavitve +open_file.title=Odpri datoteko +open_file_label=Odpri +print.title=Natisni +print_label=Natisni +download.title=Prenesi +download_label=Prenesi +save.title=Shrani +save_label=Shrani +bookmark.title=Trenutni pogled (kopiraj ali odpri v novem oknu) +bookmark_label=Trenutni pogled + +bookmark1.title=Trenutna stran (prikaži URL, ki vodi do trenutne strani) +bookmark1_label=Na trenutno stran + +# Secondary toolbar and context menu +tools.title=Orodja +tools_label=Orodja +first_page.title=Pojdi na prvo stran +first_page_label=Pojdi na prvo stran +last_page.title=Pojdi na zadnjo stran +last_page_label=Pojdi na zadnjo stran +page_rotate_cw.title=Zavrti v smeri urnega kazalca +page_rotate_cw_label=Zavrti v smeri urnega kazalca +page_rotate_ccw.title=Zavrti v nasprotni smeri urnega kazalca +page_rotate_ccw_label=Zavrti v nasprotni smeri urnega kazalca + +cursor_text_select_tool.title=Omogoči orodje za izbor besedila +cursor_text_select_tool_label=Orodje za izbor besedila +cursor_hand_tool.title=Omogoči roko +cursor_hand_tool_label=Roka + +scroll_page.title=Uporabi drsenje po strani +scroll_page_label=Drsenje po strani +scroll_vertical.title=Uporabi navpično drsenje +scroll_vertical_label=Navpično drsenje +scroll_horizontal.title=Uporabi vodoravno drsenje +scroll_horizontal_label=Vodoravno drsenje +scroll_wrapped.title=Uporabi ovito drsenje +scroll_wrapped_label=Ovito drsenje + +spread_none.title=Ne združuj razponov strani +spread_none_label=Brez razponov +spread_odd.title=Združuj razpone strani z začetkom pri lihih straneh +spread_odd_label=Lihi razponi +spread_even.title=Združuj razpone strani z začetkom pri sodih straneh +spread_even_label=Sodi razponi + +# Document properties dialog box +document_properties.title=Lastnosti dokumenta … +document_properties_label=Lastnosti dokumenta … +document_properties_file_name=Ime datoteke: +document_properties_file_size=Velikost datoteke: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bajtov) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bajtov) +document_properties_title=Ime: +document_properties_author=Avtor: +document_properties_subject=Tema: +document_properties_keywords=Ključne besede: +document_properties_creation_date=Datum nastanka: +document_properties_modification_date=Datum spremembe: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Ustvaril: +document_properties_producer=Izdelovalec PDF: +document_properties_version=Različica PDF: +document_properties_page_count=Število strani: +document_properties_page_size=Velikost strani: +document_properties_page_size_unit_inches=palcev +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=pokončno +document_properties_page_size_orientation_landscape=ležeče +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Pismo +document_properties_page_size_name_legal=Pravno +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Hitri spletni ogled: +document_properties_linearized_yes=Da +document_properties_linearized_no=Ne +document_properties_close=Zapri + +print_progress_message=Priprava dokumenta na tiskanje … +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}} % +print_progress_close=Prekliči + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Preklopi stransko vrstico +toggle_sidebar_notification2.title=Preklopi stransko vrstico (dokument vsebuje oris/priponke/plasti) +toggle_sidebar_label=Preklopi stransko vrstico +document_outline.title=Prikaži oris dokumenta (dvokliknite za razširitev/strnitev vseh predmetov) +document_outline_label=Oris dokumenta +attachments.title=Prikaži priponke +attachments_label=Priponke +layers.title=Prikaži plasti (dvokliknite za ponastavitev vseh plasti na privzeto stanje) +layers_label=Plasti +thumbs.title=Prikaži sličice +thumbs_label=Sličice +current_outline_item.title=Najdi trenutni predmet orisa +current_outline_item_label=Trenutni predmet orisa +findbar.title=Iskanje po dokumentu +findbar_label=Najdi + +additional_layers=Dodatne plasti +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Stran {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Stran {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Sličica strani {{page}} + +# Find panel button title and messages +find_input.title=Najdi +find_input.placeholder=Najdi v dokumentu … +find_previous.title=Najdi prejšnjo ponovitev iskanega +find_previous_label=Najdi nazaj +find_next.title=Najdi naslednjo ponovitev iskanega +find_next_label=Najdi naprej +find_highlight=Označi vse +find_match_case_label=Razlikuj velike/male črke +find_match_diacritics_label=Razlikuj diakritične znake +find_entire_word_label=Cele besede +find_reached_top=Dosežen začetek dokumenta iz smeri konca +find_reached_bottom=Doseženo konec dokumenta iz smeri začetka +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]=Zadetek {{current}} od {{total}} +find_match_count[two]=Zadetek {{current}} od {{total}} +find_match_count[few]=Zadetek {{current}} od {{total}} +find_match_count[many]=Zadetek {{current}} od {{total}} +find_match_count[other]=Zadetek {{current}} od {{total}} +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Več kot {{limit}} zadetkov +find_match_count_limit[one]=Več kot {{limit}} zadetek +find_match_count_limit[two]=Več kot {{limit}} zadetka +find_match_count_limit[few]=Več kot {{limit}} zadetki +find_match_count_limit[many]=Več kot {{limit}} zadetkov +find_match_count_limit[other]=Več kot {{limit}} zadetkov +find_not_found=Iskanega ni mogoče najti + +# Error panel labels +error_more_info=Več informacij +error_less_info=Manj informacij +error_close=Zapri +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js r{{version}} (graditev: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Sporočilo: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Sklad: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Datoteka: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Vrstica: {{line}} + +# Predefined zoom values +page_scale_width=Širina strani +page_scale_fit=Prilagodi stran +page_scale_auto=Samodejno +page_scale_actual=Dejanska velikost +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}} % + +# Loading indicator messages +loading=Nalaganje … +loading_error=Med nalaganjem datoteke PDF je prišlo do napake. +invalid_file_error=Neveljavna ali pokvarjena datoteka PDF. +missing_file_error=Ni datoteke PDF. +unexpected_response_error=Nepričakovan odgovor strežnika. + +rendering_error=Med pripravljanjem strani je prišlo do napake! + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Opomba vrste {{type}}] +password_label=Vnesite geslo za odpiranje te datoteke PDF. +password_invalid=Neveljavno geslo. Poskusite znova. +password_ok=V redu +password_cancel=Prekliči + +printing_not_supported=Opozorilo: ta brskalnik ne podpira vseh možnosti tiskanja. +printing_not_ready=Opozorilo: PDF ni v celoti naložen za tiskanje. +web_fonts_disabled=Spletne pisave so onemogočene: vgradnih pisav za PDF ni mogoče uporabiti. + +# Editor +editor_free_text2.title=Besedilo +editor_free_text2_label=Besedilo +editor_ink2.title=Riši +editor_ink2_label=Riši + +free_text2_default_content=Začnite tipkati … + +# Editor Parameters +editor_free_text_color=Barva +editor_free_text_size=Velikost +editor_ink_color=Barva +editor_ink_thickness=Debelina +editor_ink_opacity=Neprosojnost + +# Editor aria +editor_free_text2_aria_label=Urejevalnik besedila +editor_ink2_aria_label=Urejevalnik risanja +editor_ink_canvas_aria_label=Uporabnikova slika diff --git a/www/include/vendor/pdfjs/web/locale/son/viewer.properties b/www/include/vendor/pdfjs/web/locale/son/viewer.properties new file mode 100644 index 0000000..d4b0d24 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/son/viewer.properties @@ -0,0 +1,173 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Moo bisante +previous_label=Bisante +next.title=Jinehere moo +next_label=Jine + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Moo +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}} ra +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} ka hun {{pagesCount}}) ra + +zoom_out.title=Nakasandi +zoom_out_label=Nakasandi +zoom_in.title=Bebbeerandi +zoom_in_label=Bebbeerandi +zoom.title=Bebbeerandi +presentation_mode.title=Bere cebeyan alhaali +presentation_mode_label=Cebeyan alhaali +open_file.title=Tuku feeri +open_file_label=Feeri +print.title=Kar +print_label=Kar +download.title=Zumandi +download_label=Zumandi +bookmark.title=Sohõ gunarro (bere wala feeri zanfun taaga ra) +bookmark_label=Sohõ gunaroo + +# Secondary toolbar and context menu +tools.title=Goyjinawey +tools_label=Goyjinawey +first_page.title=Koy moo jinaa ga +first_page_label=Koy moo jinaa ga +last_page.title=Koy moo koraa ga +last_page_label=Koy moo koraa ga +page_rotate_cw.title=Kuubi kanbe guma here +page_rotate_cw_label=Kuubi kanbe guma here +page_rotate_ccw.title=Kuubi kanbe wowa here +page_rotate_ccw_label=Kuubi kanbe wowa here + + +# Document properties dialog box +document_properties.title=Takadda mayrawey… +document_properties_label=Takadda mayrawey… +document_properties_file_name=Tuku maa: +document_properties_file_size=Tuku adadu: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb=KB {{size_kb}} (cebsu-ize {{size_b}}) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb=MB {{size_mb}} (cebsu-ize {{size_b}}) +document_properties_title=Tiiramaa: +document_properties_author=Hantumkaw: +document_properties_subject=Dalil: +document_properties_keywords=Kufalkalimawey: +document_properties_creation_date=Teeyan han: +document_properties_modification_date=Barmayan han: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Teekaw: +document_properties_producer=PDF berandikaw: +document_properties_version=PDF dumi: +document_properties_page_count=Moo hinna: +document_properties_close=Daabu + +print_progress_message=Goo ma takaddaa soolu k'a kar se… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Naŋ + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Kanjari ceraw zuu +toggle_sidebar_label=Kanjari ceraw zuu +document_outline.title=Takaddaa korfur alhaaloo cebe (naagu cee hinka ka haya-izey kul hayandi/kankamandi) +document_outline_label=Takadda filla-boŋ +attachments.title=Hangarey cebe +attachments_label=Hangarey +thumbs.title=Kabeboy biyey cebe +thumbs_label=Kabeboy biyey +findbar.title=Ceeci takaddaa ra +findbar_label=Ceeci + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title={{page}} moo +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Kabeboy bii {{page}} moo še + +# Find panel button title and messages +find_input.title=Ceeci +find_input.placeholder=Ceeci takaddaa ra… +find_previous.title=Kalimaɲaŋoo bangayri bisantaa ceeci +find_previous_label=Bisante +find_next.title=Kalimaɲaŋoo hiino bangayroo ceeci +find_next_label=Jine +find_highlight=Ikul šilbay +find_match_case_label=Harfu-beeriyan hawgay +find_reached_top=A too moŋoo boŋoo, koy jine ka šinitin nda cewoo +find_reached_bottom=A too moɲoo cewoo, koy jine šintioo ga +find_not_found=Kalimaɲaa mana duwandi + +# Error panel labels +error_more_info=Alhabar tontoni +error_less_info=Alhabar tontoni +error_close=Daabu +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Alhabar: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Dekeri: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Tuku: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Žeeri: {{line}} +rendering_error=Firka bangay kaŋ moɲoo goo ma willandi. + +# Predefined zoom values +page_scale_width=Mooo hayyan +page_scale_fit=Moo sawayan +page_scale_auto=Boŋše azzaati barmayyan +page_scale_actual=Adadu cimi +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=Firka bangay kaŋ PDF goo ma zumandi. +invalid_file_error=PDF tuku laala wala laybante. +missing_file_error=PDF tuku kumante. +unexpected_response_error=Manti feršikaw tuuruyan maatante. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt={{type}} maasa-caw] +password_label=Šennikufal dam ka PDF tukoo woo feeri. +password_invalid=Šennikufal laalo. Ceeci koyne taare. +password_ok=Ayyo +password_cancel=Naŋ + +printing_not_supported=Yaamar: Karyan ši tee ka timme nda ceecikaa woo. +printing_not_ready=Yaamar: PDF ši zunbu ka timme karyan še. +web_fonts_disabled=Interneti šigirawey kay: ši hin ka goy nda PDF šigira hurantey. + diff --git a/www/include/vendor/pdfjs/web/locale/sq/viewer.properties b/www/include/vendor/pdfjs/web/locale/sq/viewer.properties new file mode 100644 index 0000000..45bfb39 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/sq/viewer.properties @@ -0,0 +1,271 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Faqja e Mëparshme +previous_label=E mëparshmja +next.title=Faqja Pasuese +next_label=Pasuesja + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Faqe +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=nga {{pagesCount}} gjithsej +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} nga {{pagesCount}}) + +zoom_out.title=Zvogëlojeni +zoom_out_label=Zvogëlojeni +zoom_in.title=Zmadhojeni +zoom_in_label=Zmadhojini +zoom.title=Zmadhim/Zvogëlim +presentation_mode.title=Kalo te Mënyra Paraqitje +presentation_mode_label=Mënyra Paraqitje +open_file.title=Hapni Kartelë +open_file_label=Hape +print.title=Shtypje +print_label=Shtype +download.title=Shkarkim +download_label=Shkarkoje +save.title=Ruaje +save_label=Ruaje +bookmark.title=Pamja e tanishme (kopjojeni ose hapeni në dritare të re) +bookmark_label=Pamja e Tanishme + +bookmark1.title=Faqja e Tanishme (Shihni URL nga Faqja e Tanishme) +bookmark1_label=Faqja e Tanishme + +# Secondary toolbar and context menu +tools.title=Mjete +tools_label=Mjete +first_page.title=Kaloni te Faqja e Parë +first_page_label=Kaloni te Faqja e Parë +last_page.title=Kaloni te Faqja e Fundit +last_page_label=Kaloni te Faqja e Fundit +page_rotate_cw.title=Rrotullojeni Në Kahun Orar +page_rotate_cw_label=Rrotulloje Në Kahun Orar +page_rotate_ccw.title=Rrotullojeni Në Kahun Kundërorar +page_rotate_ccw_label=Rrotulloje Në Kahun Kundërorar + +cursor_text_select_tool.title=Aktivizo Mjet Përzgjedhjeje Teksti +cursor_text_select_tool_label=Mjet Përzgjedhjeje Teksti +cursor_hand_tool.title=Aktivizo Mjetin Dorë +cursor_hand_tool_label=Mjeti Dorë + +scroll_page.title=Përdor Rrëshqitje Në Faqe +scroll_page_label=Rrëshqitje Në Faqe +scroll_vertical.title=Përdor Rrëshqitje Vertikale +scroll_vertical_label=Rrëshqitje Vertikale +scroll_horizontal.title=Përdor Rrëshqitje Horizontale +scroll_horizontal_label=Rrëshqitje Horizontale +scroll_wrapped.title=Përdor Rrëshqitje Me Mbështjellje +scroll_wrapped_label=Rrëshqitje Me Mbështjellje + + +# Document properties dialog box +document_properties.title=Veti Dokumenti… +document_properties_label=Veti Dokumenti… +document_properties_file_name=Emër kartele: +document_properties_file_size=Madhësi kartele: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bajte) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bajte) +document_properties_title=Titull: +document_properties_author=Autor: +document_properties_subject=Subjekt: +document_properties_keywords=Fjalëkyçe: +document_properties_creation_date=Datë Krijimi: +document_properties_modification_date=Datë Ndryshimi: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Krijues: +document_properties_producer=Prodhues PDF-je: +document_properties_version=Version PDF-je: +document_properties_page_count=Numër Faqesh: +document_properties_page_size=Madhësi Faqeje: +document_properties_page_size_unit_inches=inç +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=portret +document_properties_page_size_orientation_landscape=së gjeri +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Parje e Shpjetë në Web: +document_properties_linearized_yes=Po +document_properties_linearized_no=Jo +document_properties_close=Mbylleni + +print_progress_message=Po përgatitet dokumenti për shtypje… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Anuloje + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Shfaqni/Fshihni Anështyllën +toggle_sidebar_notification2.title=Hap/Mbyll Anështylë (dokumenti përmban përvijim/nashkëngjitje/shtresa) +toggle_sidebar_label=Shfaq/Fshih Anështyllën +document_outline.title=Shfaqni Përvijim Dokumenti (dyklikoni që të shfaqen/fshihen krejt elementët) +document_outline_label=Përvijim Dokumenti +attachments.title=Shfaqni Bashkëngjitje +attachments_label=Bashkëngjitje +layers.title=Shfaq Shtresa (dyklikoni që të rikthehen krejt shtresat në gjendjen e tyre parazgjedhje) +layers_label=Shtresa +thumbs.title=Shfaqni Miniatura +thumbs_label=Miniatura +current_outline_item.title=Gjej Objektin e Tanishëm të Përvijuar +current_outline_item_label=Objekt i Tanishëm i Përvijuar +findbar.title=Gjeni në Dokument +findbar_label=Gjej + +additional_layers=Shtresa Shtesë +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Faqja {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Faqja {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniaturë e Faqes {{page}} + +# Find panel button title and messages +find_input.title=Gjej +find_input.placeholder=Gjeni në dokument… +find_previous.title=Gjeni hasjen e mëparshme të togfjalëshit +find_previous_label=E mëparshmja +find_next.title=Gjeni hasjen pasuese të togfjalëshit +find_next_label=Pasuesja +find_highlight=Theksoji të tëra +find_match_case_label=Siç Është Shkruar +find_match_diacritics_label=Me Përputhje Me Shenjat Diakritike +find_entire_word_label=Fjalë të Plota +find_reached_top=U mbërrit në krye të dokumentit, vazhduar prej fundit +find_reached_bottom=U mbërrit në fund të dokumentit, vazhduar prej kreut +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} nga {{total}} përputhje gjithsej +find_match_count[two]={{current}} nga {{total}} përputhje gjithsej +find_match_count[few]={{current}} nga {{total}} përputhje gjithsej +find_match_count[many]={{current}} nga {{total}} përputhje gjithsej +find_match_count[other]={{current}} nga {{total}} përputhje gjithsej +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Më shumë se {{limit}} përputhje +find_match_count_limit[one]=Më shumë se {{limit}} përputhje +find_match_count_limit[two]=Më shumë se {{limit}} përputhje +find_match_count_limit[few]=Më shumë se {{limit}} përputhje +find_match_count_limit[many]=Më shumë se {{limit}} përputhje +find_match_count_limit[other]=Më shumë se {{limit}} përputhje +find_not_found=Togfjalësh që s’gjendet + +# Error panel labels +error_more_info=Më Tepër Hollësi +error_less_info=Më Pak të Dhëna +error_close=Mbylleni +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Mesazh: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Kartelë: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Rresht: {{line}} + +# Predefined zoom values +page_scale_width=Gjerësi Faqeje +page_scale_fit=Sa Nxë Faqja +page_scale_auto=Zoom i Vetvetishëm +page_scale_actual=Madhësia Faktike +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Po ngarkohet… +loading_error=Ndodhi një gabim gjatë ngarkimit të PDF-së. +invalid_file_error=Kartelë PDF e pavlefshme ose e dëmtuar. +missing_file_error=Kartelë PDF që mungon. +unexpected_response_error=Përgjigje shërbyesi e papritur. + +rendering_error=Ndodhi një gabim gjatë riprodhimit të faqes. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Nënvizim {{type}}] +password_label=Jepni fjalëkalimin që të hapet kjo kartelë PDF. +password_invalid=Fjalëkalim i pavlefshëm. Ju lutemi, riprovoni. +password_ok=OK +password_cancel=Anuloje + +printing_not_supported=Kujdes: Shtypja s’mbulohet plotësisht nga ky shfletues. +printing_not_ready=Kujdes: PDF-ja s’është ngarkuar plotësisht që ta shtypni. +web_fonts_disabled=Shkronjat Web janë të çaktivizuara: s’arrihet të përdoren shkronja të trupëzuara në PDF. + +# Editor +editor_free_text2.title=Tekst +editor_free_text2_label=Tekst +editor_ink2.title=Vizatoni +editor_ink2_label=Vizatoni + +free_text2_default_content=Filloni të shtypni… + +# Editor Parameters +editor_free_text_color=Ngjyrë +editor_free_text_size=Madhësi +editor_ink_color=Ngjyrë +editor_ink_thickness=Trashësi +editor_ink_opacity=Patejdukshmëri + +# Editor aria +editor_free_text2_aria_label=Përpunues Tekstesh +editor_ink2_aria_label=Përpunues Vizatimesh +editor_ink_canvas_aria_label=Figurë e krijuar nga përdoruesi diff --git a/www/include/vendor/pdfjs/web/locale/sr/viewer.properties b/www/include/vendor/pdfjs/web/locale/sr/viewer.properties new file mode 100644 index 0000000..207b417 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/sr/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Претходна страница +previous_label=Претходна +next.title=Следећа страница +next_label=Следећа + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Страница +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=од {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} од {{pagesCount}}) + +zoom_out.title=Умањи +zoom_out_label=Умањи +zoom_in.title=Увеличај +zoom_in_label=Увеличај +zoom.title=Увеличавање +presentation_mode.title=Промени на приказ у режиму презентације +presentation_mode_label=Режим презентације +open_file.title=Отвори датотеку +open_file_label=Отвори +print.title=Штампај +print_label=Штампај +download.title=Преузми +download_label=Преузми +save.title=Сачувај +save_label=Сачувај +bookmark.title=Тренутни приказ (копирај или отвори у новом прозору) +bookmark_label=Тренутни приказ + +bookmark1.title=Тренутна страница (погледајте URL са тренутне странице) +bookmark1_label=Тренутна страница + +# Secondary toolbar and context menu +tools.title=Алатке +tools_label=Алатке +first_page.title=Иди на прву страницу +first_page_label=Иди на прву страницу +last_page.title=Иди на последњу страницу +last_page_label=Иди на последњу страницу +page_rotate_cw.title=Ротирај у смеру казаљке на сату +page_rotate_cw_label=Ротирај у смеру казаљке на сату +page_rotate_ccw.title=Ротирај у смеру супротном од казаљке на сату +page_rotate_ccw_label=Ротирај у смеру супротном од казаљке на сату + +cursor_text_select_tool.title=Омогући алат за селектовање текста +cursor_text_select_tool_label=Алат за селектовање текста +cursor_hand_tool.title=Омогући алат за померање +cursor_hand_tool_label=Алат за померање + +scroll_page.title=Користи скроловање по омоту +scroll_page_label=Скроловање странице +scroll_vertical.title=Користи вертикално скроловање +scroll_vertical_label=Вертикално скроловање +scroll_horizontal.title=Користи хоризонтално скроловање +scroll_horizontal_label=Хоризонтално скроловање +scroll_wrapped.title=Користи скроловање по омоту +scroll_wrapped_label=Скроловање по омоту + +spread_none.title=Немој спајати ширења страница +spread_none_label=Без распростирања +spread_odd.title=Споји ширења страница које почињу непарним бројем +spread_odd_label=Непарна распростирања +spread_even.title=Споји ширења страница које почињу парним бројем +spread_even_label=Парна распростирања + +# Document properties dialog box +document_properties.title=Параметри документа… +document_properties_label=Параметри документа… +document_properties_file_name=Име датотеке: +document_properties_file_size=Величина датотеке: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} B) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} B) +document_properties_title=Наслов: +document_properties_author=Аутор: +document_properties_subject=Тема: +document_properties_keywords=Кључне речи: +document_properties_creation_date=Датум креирања: +document_properties_modification_date=Датум модификације: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Стваралац: +document_properties_producer=PDF произвођач: +document_properties_version=PDF верзија: +document_properties_page_count=Број страница: +document_properties_page_size=Величина странице: +document_properties_page_size_unit_inches=ин +document_properties_page_size_unit_millimeters=мм +document_properties_page_size_orientation_portrait=усправно +document_properties_page_size_orientation_landscape=водоравно +document_properties_page_size_name_a3=А3 +document_properties_page_size_name_a4=А4 +document_properties_page_size_name_letter=Слово +document_properties_page_size_name_legal=Права +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Брз веб приказ: +document_properties_linearized_yes=Да +document_properties_linearized_no=Не +document_properties_close=Затвори + +print_progress_message=Припремам документ за штампање… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Откажи + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Прикажи додатну палету +toggle_sidebar_notification2.title=Прикажи/сакриј бочну траку (документ садржи контуру/прилоге/слојеве) +toggle_sidebar_label=Прикажи додатну палету +document_outline.title=Прикажи структуру документа (двоструким кликом проширујете/скупљате све ставке) +document_outline_label=Контура документа +attachments.title=Прикажи прилоге +attachments_label=Прилози +layers.title=Прикажи слојеве (дупли клик за враћање свих слојева у подразумевано стање) +layers_label=Слојеви +thumbs.title=Прикажи сличице +thumbs_label=Сличице +current_outline_item.title=Пронађите тренутни елемент структуре +current_outline_item_label=Тренутна контура +findbar.title=Пронађи у документу +findbar_label=Пронађи + +additional_layers=Додатни слојеви +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Страница {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Страница {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Сличица од странице {{page}} + +# Find panel button title and messages +find_input.title=Пронађи +find_input.placeholder=Пронађи у документу… +find_previous.title=Пронађи претходно појављивање фразе +find_previous_label=Претходна +find_next.title=Пронађи следеће појављивање фразе +find_next_label=Следећа +find_highlight=Истакнути све +find_match_case_label=Подударања +find_match_diacritics_label=Дијакритика +find_entire_word_label=Целе речи +find_reached_top=Достигнут врх документа, наставио са дна +find_reached_bottom=Достигнуто дно документа, наставио са врха +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} од {{total}} одговара +find_match_count[two]={{current}} од {{total}} одговара +find_match_count[few]={{current}} од {{total}} одговара +find_match_count[many]={{current}} од {{total}} одговара +find_match_count[other]={{current}} од {{total}} одговара +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Више од {{limit}} одговара +find_match_count_limit[one]=Више од {{limit}} одговара +find_match_count_limit[two]=Више од {{limit}} одговара +find_match_count_limit[few]=Више од {{limit}} одговара +find_match_count_limit[many]=Више од {{limit}} одговара +find_match_count_limit[other]=Више од {{limit}} одговара +find_not_found=Фраза није пронађена + +# Error panel labels +error_more_info=Више информација +error_less_info=Мање информација +error_close=Затвори +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Порука: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Стек: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Датотека: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Линија: {{line}} + +# Predefined zoom values +page_scale_width=Ширина странице +page_scale_fit=Прилагоди страницу +page_scale_auto=Аутоматско увеличавање +page_scale_actual=Стварна величина +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Учитавање… +loading_error=Дошло је до грешке приликом учитавања PDF-а. +invalid_file_error=PDF датотека је неважећа или је оштећена. +missing_file_error=Недостаје PDF датотека. +unexpected_response_error=Неочекиван одговор од сервера. + +rendering_error=Дошло је до грешке приликом рендеровања ове странице. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} коментар] +password_label=Унесите лозинку да бисте отворили овај PDF докуменат. +password_invalid=Неисправна лозинка. Покушајте поново. +password_ok=У реду +password_cancel=Откажи + +printing_not_supported=Упозорење: Штампање није у потпуности подржано у овом прегледачу. +printing_not_ready=Упозорење: PDF није у потпуности учитан за штампу. +web_fonts_disabled=Веб фонтови су онемогућени: не могу користити уграђене PDF фонтове. + +# Editor +editor_free_text2.title=Текст +editor_free_text2_label=Текст +editor_ink2.title=Цртај +editor_ink2_label=Цртај + +free_text2_default_content=Почни куцање… + +# Editor Parameters +editor_free_text_color=Боја +editor_free_text_size=Величина +editor_ink_color=Боја +editor_ink_thickness=Дебљина +editor_ink_opacity=Опацитет + +# Editor aria +editor_free_text2_aria_label=Уређивач текста +editor_ink2_aria_label=Уређивач цртежа +editor_ink_canvas_aria_label=Кориснички направљена слика diff --git a/www/include/vendor/pdfjs/web/locale/sv-SE/viewer.properties b/www/include/vendor/pdfjs/web/locale/sv-SE/viewer.properties new file mode 100644 index 0000000..55c31aa --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/sv-SE/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Föregående sida +previous_label=Föregående +next.title=Nästa sida +next_label=Nästa + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Sida +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=av {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} av {{pagesCount}}) + +zoom_out.title=Zooma ut +zoom_out_label=Zooma ut +zoom_in.title=Zooma in +zoom_in_label=Zooma in +zoom.title=Zoom +presentation_mode.title=Byt till presentationsläge +presentation_mode_label=Presentationsläge +open_file.title=Öppna fil +open_file_label=Öppna +print.title=Skriv ut +print_label=Skriv ut +download.title=Hämta +download_label=Hämta +save.title=Spara +save_label=Spara +bookmark.title=Aktuell vy (kopiera eller öppna i nytt fönster) +bookmark_label=Aktuell vy + +bookmark1.title=Aktuell sida (Visa URL från aktuell sida) +bookmark1_label=Aktuell sida + +# Secondary toolbar and context menu +tools.title=Verktyg +tools_label=Verktyg +first_page.title=Gå till första sidan +first_page_label=Gå till första sidan +last_page.title=Gå till sista sidan +last_page_label=Gå till sista sidan +page_rotate_cw.title=Rotera medurs +page_rotate_cw_label=Rotera medurs +page_rotate_ccw.title=Rotera moturs +page_rotate_ccw_label=Rotera moturs + +cursor_text_select_tool.title=Aktivera textmarkeringsverktyg +cursor_text_select_tool_label=Textmarkeringsverktyg +cursor_hand_tool.title=Aktivera handverktyg +cursor_hand_tool_label=Handverktyg + +scroll_page.title=Använd sidrullning +scroll_page_label=Sidrullning +scroll_vertical.title=Använd vertikal rullning +scroll_vertical_label=Vertikal rullning +scroll_horizontal.title=Använd horisontell rullning +scroll_horizontal_label=Horisontell rullning +scroll_wrapped.title=Använd överlappande rullning +scroll_wrapped_label=Överlappande rullning + +spread_none.title=Visa enkelsidor +spread_none_label=Enkelsidor +spread_odd.title=Visa uppslag med olika sidnummer till vänster +spread_odd_label=Uppslag med framsida +spread_even.title=Visa uppslag med lika sidnummer till vänster +spread_even_label=Uppslag utan framsida + +# Document properties dialog box +document_properties.title=Dokumentegenskaper… +document_properties_label=Dokumentegenskaper… +document_properties_file_name=Filnamn: +document_properties_file_size=Filstorlek: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} kB ({{size_b}} byte) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} byte) +document_properties_title=Titel: +document_properties_author=Författare: +document_properties_subject=Ämne: +document_properties_keywords=Nyckelord: +document_properties_creation_date=Skapades: +document_properties_modification_date=Ändrades: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Skapare: +document_properties_producer=PDF-producent: +document_properties_version=PDF-version: +document_properties_page_count=Sidantal: +document_properties_page_size=Pappersstorlek: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=porträtt +document_properties_page_size_orientation_landscape=landskap +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Snabb webbvisning: +document_properties_linearized_yes=Ja +document_properties_linearized_no=Nej +document_properties_close=Stäng + +print_progress_message=Förbereder sidor för utskrift… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Avbryt + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Visa/dölj sidofält +toggle_sidebar_notification2.title=Växla sidofält (dokumentet innehåller dokumentstruktur/bilagor/lager) +toggle_sidebar_label=Visa/dölj sidofält +document_outline.title=Visa dokumentdisposition (dubbelklicka för att expandera/komprimera alla objekt) +document_outline_label=Dokumentöversikt +attachments.title=Visa Bilagor +attachments_label=Bilagor +layers.title=Visa lager (dubbelklicka för att återställa alla lager till standardläge) +layers_label=Lager +thumbs.title=Visa miniatyrer +thumbs_label=Miniatyrer +current_outline_item.title=Hitta aktuellt dispositionsobjekt +current_outline_item_label=Aktuellt dispositionsobjekt +findbar.title=Sök i dokument +findbar_label=Sök + +additional_layers=Ytterligare lager +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Sida {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Sida {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatyr av sida {{page}} + +# Find panel button title and messages +find_input.title=Sök +find_input.placeholder=Sök i dokument… +find_previous.title=Hitta föregående förekomst av frasen +find_previous_label=Föregående +find_next.title=Hitta nästa förekomst av frasen +find_next_label=Nästa +find_highlight=Markera alla +find_match_case_label=Matcha versal/gemen +find_match_diacritics_label=Matcha diakritiska tecken +find_entire_word_label=Hela ord +find_reached_top=Nådde början av dokumentet, började från slutet +find_reached_bottom=Nådde slutet på dokumentet, började från början +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} av {{total}} träff +find_match_count[two]={{current}} av {{total}} träffar +find_match_count[few]={{current}} av {{total}} träffar +find_match_count[many]={{current}} av {{total}} träffar +find_match_count[other]={{current}} av {{total}} träffar +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Mer än {{limit}} träffar +find_match_count_limit[one]=Mer än {{limit}} träff +find_match_count_limit[two]=Mer än {{limit}} träffar +find_match_count_limit[few]=Mer än {{limit}} träffar +find_match_count_limit[many]=Mer än {{limit}} träffar +find_match_count_limit[other]=Mer än {{limit}} träffar +find_not_found=Frasen hittades inte + +# Error panel labels +error_more_info=Mer information +error_less_info=Mindre information +error_close=Stäng +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Meddelande: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fil: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Rad: {{line}} + +# Predefined zoom values +page_scale_width=Sidbredd +page_scale_fit=Anpassa sida +page_scale_auto=Automatisk zoom +page_scale_actual=Verklig storlek +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Laddar… +loading_error=Ett fel uppstod vid laddning av PDF-filen. +invalid_file_error=Ogiltig eller korrupt PDF-fil. +missing_file_error=Saknad PDF-fil. +unexpected_response_error=Oväntat svar från servern. + +rendering_error=Ett fel uppstod vid visning av sidan. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}} {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}}-annotering] +password_label=Skriv in lösenordet för att öppna PDF-filen. +password_invalid=Ogiltigt lösenord. Försök igen. +password_ok=OK +password_cancel=Avbryt + +printing_not_supported=Varning: Utskrifter stöds inte helt av den här webbläsaren. +printing_not_ready=Varning: PDF:en är inte klar för utskrift. +web_fonts_disabled=Webbtypsnitt är inaktiverade: kan inte använda inbäddade PDF-typsnitt. + +# Editor +editor_free_text2.title=Text +editor_free_text2_label=Text +editor_ink2.title=Rita +editor_ink2_label=Rita + +free_text2_default_content=Börja skriva… + +# Editor Parameters +editor_free_text_color=Färg +editor_free_text_size=Storlek +editor_ink_color=Färg +editor_ink_thickness=Tjocklek +editor_ink_opacity=Opacitet + +# Editor aria +editor_free_text2_aria_label=Textredigerare +editor_ink2_aria_label=Ritredigerare +editor_ink_canvas_aria_label=Användarskapad bild diff --git a/www/include/vendor/pdfjs/web/locale/szl/viewer.properties b/www/include/vendor/pdfjs/web/locale/szl/viewer.properties new file mode 100644 index 0000000..88bc57a --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/szl/viewer.properties @@ -0,0 +1,245 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Piyrwyjszo strōna +previous_label=Piyrwyjszo +next.title=Nastympno strōna +next_label=Dalij + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Strōna +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=ze {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} ze {{pagesCount}}) + +zoom_out.title=Zmyńsz +zoom_out_label=Zmyńsz +zoom_in.title=Zwiynksz +zoom_in_label=Zwiynksz +zoom.title=Srogość +presentation_mode.title=Przełōncz na tryb prezyntacyje +presentation_mode_label=Tryb prezyntacyje +open_file.title=Ôdewrzij zbiōr +open_file_label=Ôdewrzij +print.title=Durkuj +print_label=Durkuj +download.title=Pobier +download_label=Pobier +bookmark.title=Aktualny widok (kopiuj abo ôdewrzij w nowym ôknie) +bookmark_label=Aktualny widok + +# Secondary toolbar and context menu +tools.title=Noczynia +tools_label=Noczynia +first_page.title=Idź ku piyrszyj strōnie +first_page_label=Idź ku piyrszyj strōnie +last_page.title=Idź ku ôstatnij strōnie +last_page_label=Idź ku ôstatnij strōnie +page_rotate_cw.title=Zwyrtnij w prawo +page_rotate_cw_label=Zwyrtnij w prawo +page_rotate_ccw.title=Zwyrtnij w lewo +page_rotate_ccw_label=Zwyrtnij w lewo + +cursor_text_select_tool.title=Załōncz noczynie ôbiyranio tekstu +cursor_text_select_tool_label=Noczynie ôbiyranio tekstu +cursor_hand_tool.title=Załōncz noczynie rōnczka +cursor_hand_tool_label=Noczynie rōnczka + +scroll_vertical.title=Używej piōnowego przewijanio +scroll_vertical_label=Piōnowe przewijanie +scroll_horizontal.title=Używej poziōmego przewijanio +scroll_horizontal_label=Poziōme przewijanie +scroll_wrapped.title=Używej szichtowego przewijanio +scroll_wrapped_label=Szichtowe przewijanie + +spread_none.title=Niy dowej strōn w widoku po dwie +spread_none_label=Po jednyj strōnie +spread_odd.title=Pokoż strōny po dwie; niyporziste po lewyj +spread_odd_label=Niyporziste po lewyj +spread_even.title=Pokoż strōny po dwie; porziste po lewyj +spread_even_label=Porziste po lewyj + +# Document properties dialog box +document_properties.title=Włosności dokumyntu… +document_properties_label=Włosności dokumyntu… +document_properties_file_name=Miano zbioru: +document_properties_file_size=Srogość zbioru: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} B) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} B) +document_properties_title=Tytuł: +document_properties_author=Autōr: +document_properties_subject=Tymat: +document_properties_keywords=Kluczowe słowa: +document_properties_creation_date=Data zrychtowanio: +document_properties_modification_date=Data zmiany: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Zrychtowane ôd: +document_properties_producer=PDF ôd: +document_properties_version=Wersyjo PDF: +document_properties_page_count=Wielość strōn: +document_properties_page_size=Srogość strōny: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=piōnowo +document_properties_page_size_orientation_landscape=poziōmo +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Gibki necowy podglōnd: +document_properties_linearized_yes=Ja +document_properties_linearized_no=Niy +document_properties_close=Zawrzij + +print_progress_message=Rychtowanie dokumyntu do durku… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Pociep + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Przełōncz posek na rancie +toggle_sidebar_notification2.title=Przełōncz posek na rancie (dokumynt mo struktura/przidowki/warstwy) +toggle_sidebar_label=Przełōncz posek na rancie +document_outline.title=Pokoż struktura dokumyntu (tuplowane klikniyncie rozszyrzo/swijo wszyskie elymynta) +document_outline_label=Struktura dokumyntu +attachments.title=Pokoż przidowki +attachments_label=Przidowki +layers.title=Pokoż warstwy (tuplowane klikniyncie resetuje wszyskie warstwy do bazowego stanu) +layers_label=Warstwy +thumbs.title=Pokoż miniatury +thumbs_label=Miniatury +findbar.title=Znojdź w dokumyncie +findbar_label=Znojdź + +additional_layers=Nadbytnie warstwy +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Strōna {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura strōny {{page}} + +# Find panel button title and messages +find_input.title=Znojdź +find_input.placeholder=Znojdź w dokumyncie… +find_previous.title=Znojdź piyrwyjsze pokozanie sie tyj frazy +find_previous_label=Piyrwyjszo +find_next.title=Znojdź nastympne pokozanie sie tyj frazy +find_next_label=Dalij +find_highlight=Zaznacz wszysko +find_match_case_label=Poznowej srogość liter +find_entire_word_label=Cołke słowa +find_reached_top=Doszło do samego wiyrchu strōny, dalij ôd spodku +find_reached_bottom=Doszło do samego spodku strōny, dalij ôd wiyrchu +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} ze {{total}}, co pasujōm +find_match_count[two]={{current}} ze {{total}}, co pasujōm +find_match_count[few]={{current}} ze {{total}}, co pasujōm +find_match_count[many]={{current}} ze {{total}}, co pasujōm +find_match_count[other]={{current}} ze {{total}}, co pasujōm +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(total) ]} +find_match_count_limit[zero]=Wiyncyj jak {{limit}}, co pasujōm +find_match_count_limit[one]=Wiyncyj jak {{limit}}, co pasuje +find_match_count_limit[two]=Wiyncyj jak {{limit}}, co pasujōm +find_match_count_limit[few]=Wiyncyj jak {{limit}}, co pasujōm +find_match_count_limit[many]=Wiyncyj jak {{limit}}, co pasujōm +find_match_count_limit[other]=Wiyncyj jak {{limit}}, co pasujōm +find_not_found=Fraza niy znaleziōno + +# Error panel labels +error_more_info=Wiyncyj informacyji +error_less_info=Mynij informacyji +error_close=Zawrzij +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Wiadōmość: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Sztapel: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Zbiōr: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Linijo: {{line}} +rendering_error=Przi renderowaniu strōny pokozoł sie feler. + +# Predefined zoom values +page_scale_width=Szyrzka strōny +page_scale_fit=Napasowanie strōny +page_scale_auto=Autōmatyczno srogość +page_scale_actual=Aktualno srogość +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading_error=Przi ladowaniu PDFa pokozoł sie feler. +invalid_file_error=Zły abo felerny zbiōr PDF. +missing_file_error=Chybio zbioru PDF. +unexpected_response_error=Niyôczekowano ôdpowiydź serwera. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anotacyjo typu {{type}}] +password_label=Wkludź hasło, coby ôdewrzić tyn zbiōr PDF. +password_invalid=Hasło je złe. Sprōbuj jeszcze roz. +password_ok=OK +password_cancel=Pociep + +printing_not_supported=Pozōr: Ta przeglōndarka niy cołkiym ôbsuguje durk. +printing_not_ready=Pozōr: Tyn PDF niy ma za tela zaladowany do durku. +web_fonts_disabled=Necowe fōnty sōm zastawiōne: niy idzie użyć wkludzōnych fōntōw PDF. + diff --git a/www/include/vendor/pdfjs/web/locale/ta/viewer.properties b/www/include/vendor/pdfjs/web/locale/ta/viewer.properties new file mode 100644 index 0000000..72f75e2 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/ta/viewer.properties @@ -0,0 +1,194 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=முந்தைய பக்கம் +previous_label=முந்தையது +next.title=அடுத்த பக்கம் +next_label=அடுத்து + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=பக்கம் +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}} இல் +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages={{pagesCount}}) இல் ({{pageNumber}} + +zoom_out.title=சிறிதாக்கு +zoom_out_label=சிறிதாக்கு +zoom_in.title=பெரிதாக்கு +zoom_in_label=பெரிதாக்கு +zoom.title=பெரிதாக்கு +presentation_mode.title=விளக்ககாட்சி பயன்முறைக்கு மாறு +presentation_mode_label=விளக்ககாட்சி பயன்முறை +open_file.title=கோப்பினை திற +open_file_label=திற +print.title=அச்சிடு +print_label=அச்சிடு +download.title=பதிவிறக்கு +download_label=பதிவிறக்கு +bookmark.title=தற்போதைய காட்சி (புதிய சாளரத்திற்கு நகலெடு அல்லது புதிய சாளரத்தில் திற) +bookmark_label=தற்போதைய காட்சி + +# Secondary toolbar and context menu +tools.title=கருவிகள் +tools_label=கருவிகள் +first_page.title=முதல் பக்கத்திற்கு செல்லவும் +first_page_label=முதல் பக்கத்திற்கு செல்லவும் +last_page.title=கடைசி பக்கத்திற்கு செல்லவும் +last_page_label=கடைசி பக்கத்திற்கு செல்லவும் +page_rotate_cw.title=வலஞ்சுழியாக சுழற்று +page_rotate_cw_label=வலஞ்சுழியாக சுழற்று +page_rotate_ccw.title=இடஞ்சுழியாக சுழற்று +page_rotate_ccw_label=இடஞ்சுழியாக சுழற்று + +cursor_text_select_tool.title=உரைத் தெரிவு கருவியைச் செயல்படுத்து +cursor_text_select_tool_label=உரைத் தெரிவு கருவி +cursor_hand_tool.title=கைக் கருவிக்ச் செயற்படுத்து +cursor_hand_tool_label=கைக்குருவி + +# Document properties dialog box +document_properties.title=ஆவண பண்புகள்... +document_properties_label=ஆவண பண்புகள்... +document_properties_file_name=கோப்பு பெயர்: +document_properties_file_size=கோப்பின் அளவு: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} கிபை ({{size_b}} பைட்டுகள்) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} மெபை ({{size_b}} பைட்டுகள்) +document_properties_title=தலைப்பு: +document_properties_author=எழுதியவர் +document_properties_subject=பொருள்: +document_properties_keywords=முக்கிய வார்த்தைகள்: +document_properties_creation_date=படைத்த தேதி : +document_properties_modification_date=திருத்திய தேதி: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=உருவாக்குபவர்: +document_properties_producer=பிடிஎஃப் தயாரிப்பாளர்: +document_properties_version=PDF பதிப்பு: +document_properties_page_count=பக்க எண்ணிக்கை: +document_properties_page_size=பக்க அளவு: +document_properties_page_size_unit_inches=இதில் +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=நிலைபதிப்பு +document_properties_page_size_orientation_landscape=நிலைபரப்பு +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=கடிதம் +document_properties_page_size_name_legal=சட்டபூர்வ +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +document_properties_close=மூடுக + +print_progress_message=அச்சிடுவதற்கான ஆவணம் தயாராகிறது... +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=ரத்து + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=பக்கப் பட்டியை நிலைமாற்று +toggle_sidebar_label=பக்கப் பட்டியை நிலைமாற்று +document_outline.title=ஆவண அடக்கத்தைக் காட்டு (இருமுறைச் சொடுக்கி அனைத்து உறுப்பிடிகளையும் விரி/சேர்) +document_outline_label=ஆவண வெளிவரை +attachments.title=இணைப்புகளை காண்பி +attachments_label=இணைப்புகள் +thumbs.title=சிறுபடங்களைக் காண்பி +thumbs_label=சிறுபடங்கள் +findbar.title=ஆவணத்தில் கண்டறி +findbar_label=தேடு + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=பக்கம் {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=பக்கத்தின் சிறுபடம் {{page}} + +# Find panel button title and messages +find_input.title=கண்டுபிடி +find_input.placeholder=ஆவணத்தில் கண்டறி… +find_previous.title=இந்த சொற்றொடரின் முந்தைய நிகழ்வை தேடு +find_previous_label=முந்தையது +find_next.title=இந்த சொற்றொடரின் அடுத்த நிகழ்வை தேடு +find_next_label=அடுத்து +find_highlight=அனைத்தையும் தனிப்படுத்து +find_match_case_label=பேரெழுத்தாக்கத்தை உணர் +find_reached_top=ஆவணத்தின் மேல் பகுதியை அடைந்தது, அடிப்பக்கத்திலிருந்து தொடர்ந்தது +find_reached_bottom=ஆவணத்தின் முடிவை அடைந்தது, மேலிருந்து தொடர்ந்தது +find_not_found=சொற்றொடர் காணவில்லை + +# Error panel labels +error_more_info=கூடுதல் தகவல் +error_less_info=குறைந்த தகவல் +error_close=மூடுக +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=செய்தி: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=ஸ்டேக்: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=கோப்பு: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=வரி: {{line}} +rendering_error=இந்தப் பக்கத்தை காட்சிப்படுத்தும் போது ஒரு பிழை ஏற்பட்டது. + +# Predefined zoom values +page_scale_width=பக்க அகலம் +page_scale_fit=பக்கப் பொருத்தம் +page_scale_auto=தானியக்க பெரிதாக்கல் +page_scale_actual=உண்மையான அளவு +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=PDF ஐ ஏற்றும் போது ஒரு பிழை ஏற்பட்டது. +invalid_file_error=செல்லுபடியாகாத அல்லது சிதைந்த PDF கோப்பு. +missing_file_error=PDF கோப்பு காணவில்லை. +unexpected_response_error=சேவகன் பதில் எதிர்பாரதது. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} விளக்கம்] +password_label=இந்த PDF கோப்பை திறக்க கடவுச்சொல்லை உள்ளிடவும். +password_invalid=செல்லுபடியாகாத கடவுச்சொல், தயை செய்து மீண்டும் முயற்சி செய்க. +password_ok=சரி +password_cancel=ரத்து + +printing_not_supported=எச்சரிக்கை: இந்த உலாவி அச்சிடுதலை முழுமையாக ஆதரிக்கவில்லை. +printing_not_ready=எச்சரிக்கை: PDF அச்சிட முழுவதுமாக ஏற்றப்படவில்லை. +web_fonts_disabled=வலை எழுத்துருக்கள் முடக்கப்பட்டுள்ளன: உட்பொதிக்கப்பட்ட PDF எழுத்துருக்களைப் பயன்படுத்த முடியவில்லை. + diff --git a/www/include/vendor/pdfjs/web/locale/te/viewer.properties b/www/include/vendor/pdfjs/web/locale/te/viewer.properties new file mode 100644 index 0000000..3c82095 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/te/viewer.properties @@ -0,0 +1,237 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=మునుపటి పేజీ +previous_label=క్రితం +next.title=తరువాత పేజీ +next_label=తరువాత + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=పేజీ +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=మొత్తం {{pagesCount}} లో +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=(మొత్తం {{pagesCount}} లో {{pageNumber}}వది) + +zoom_out.title=జూమ్ తగ్గించు +zoom_out_label=జూమ్ తగ్గించు +zoom_in.title=జూమ్ చేయి +zoom_in_label=జూమ్ చేయి +zoom.title=జూమ్ +presentation_mode.title=ప్రదర్శనా రీతికి మారు +presentation_mode_label=ప్రదర్శనా రీతి +open_file.title=ఫైల్ తెరువు +open_file_label=తెరువు +print.title=ముద్రించు +print_label=ముద్రించు +download.title=దింపుకోళ్ళు +download_label=దింపుకోళ్ళు +bookmark.title=ప్రస్తుత దర్శనం (కాపీ చేయి లేదా కొత్త విండోలో తెరువు) +bookmark_label=ప్రస్తుత దర్శనం + +# Secondary toolbar and context menu +tools.title=పనిముట్లు +tools_label=పనిముట్లు +first_page.title=మొదటి పేజీకి వెళ్ళు +first_page_label=మొదటి పేజీకి వెళ్ళు +last_page.title=చివరి పేజీకి వెళ్ళు +last_page_label=చివరి పేజీకి వెళ్ళు +page_rotate_cw.title=సవ్యదిశలో తిప్పు +page_rotate_cw_label=సవ్యదిశలో తిప్పు +page_rotate_ccw.title=అపసవ్యదిశలో తిప్పు +page_rotate_ccw_label=అపసవ్యదిశలో తిప్పు + +cursor_text_select_tool.title=టెక్స్ట్ ఎంపిక సాధనాన్ని ప్రారంభించండి +cursor_text_select_tool_label=టెక్స్ట్ ఎంపిక సాధనం +cursor_hand_tool.title=చేతి సాధనం చేతనించు +cursor_hand_tool_label=చేతి సాధనం + +scroll_vertical_label=నిలువు స్క్రోలింగు + + +# Document properties dialog box +document_properties.title=పత్రము లక్షణాలు... +document_properties_label=పత్రము లక్షణాలు... +document_properties_file_name=దస్త్రం పేరు: +document_properties_file_size=దస్త్రం పరిమాణం: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=శీర్షిక: +document_properties_author=మూలకర్త: +document_properties_subject=విషయం: +document_properties_keywords=కీ పదాలు: +document_properties_creation_date=సృష్టించిన తేదీ: +document_properties_modification_date=సవరించిన తేదీ: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=సృష్టికర్త: +document_properties_producer=PDF ఉత్పాదకి: +document_properties_version=PDF వర్షన్: +document_properties_page_count=పేజీల సంఖ్య: +document_properties_page_size=కాగితం పరిమాణం: +document_properties_page_size_unit_inches=లో +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=నిలువుచిత్రం +document_properties_page_size_orientation_landscape=అడ్డచిత్రం +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=లేఖ +document_properties_page_size_name_legal=చట్టపరమైన +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized_yes=అవును +document_properties_linearized_no=కాదు +document_properties_close=మూసివేయి + +print_progress_message=ముద్రించడానికి పత్రము సిద్ధమవుతున్నది… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=రద్దుచేయి + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=పక్కపట్టీ మార్చు +toggle_sidebar_label=పక్కపట్టీ మార్చు +document_outline.title=పత్రము రూపము చూపించు (డబుల్ క్లిక్ చేసి అన్ని అంశాలను విస్తరించు/కూల్చు) +document_outline_label=పత్రము అవుట్‌లైన్ +attachments.title=అనుబంధాలు చూపు +attachments_label=అనుబంధాలు +layers_label=పొరలు +thumbs.title=థంబ్‌నైల్స్ చూపు +thumbs_label=థంబ్‌నైల్స్ +findbar.title=పత్రములో కనుగొనుము +findbar_label=కనుగొను + +additional_layers=అదనపు పొరలు +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=పేజీ {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas={{page}} పేజీ నఖచిత్రం + +# Find panel button title and messages +find_input.title=కనుగొను +find_input.placeholder=పత్రములో కనుగొను… +find_previous.title=పదం యొక్క ముందు సంభవాన్ని కనుగొను +find_previous_label=మునుపటి +find_next.title=పదం యొక్క తర్వాతి సంభవాన్ని కనుగొను +find_next_label=తరువాత +find_highlight=అన్నిటిని ఉద్దీపనం చేయుము +find_match_case_label=అక్షరముల తేడాతో పోల్చు +find_entire_word_label=పూర్తి పదాలు +find_reached_top=పేజీ పైకి చేరుకున్నది, క్రింది నుండి కొనసాగించండి +find_reached_bottom=పేజీ చివరకు చేరుకున్నది, పైనుండి కొనసాగించండి +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_not_found=పదబంధం కనబడలేదు + +# Error panel labels +error_more_info=మరింత సమాచారం +error_less_info=తక్కువ సమాచారం +error_close=మూసివేయి +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=సందేశం: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=స్టాక్: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=ఫైలు: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=వరుస: {{line}} +rendering_error=పేజీను రెండర్ చేయుటలో ఒక దోషం ఎదురైంది. + +# Predefined zoom values +page_scale_width=పేజీ వెడల్పు +page_scale_fit=పేజీ అమర్పు +page_scale_auto=స్వయంచాలక జూమ్ +page_scale_actual=యథార్ధ పరిమాణం +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading_error=PDF లోడవుచున్నప్పుడు ఒక దోషం ఎదురైంది. +invalid_file_error=చెల్లని లేదా పాడైన PDF ఫైలు. +missing_file_error=దొరకని PDF ఫైలు. +unexpected_response_error=అనుకోని సర్వర్ స్పందన. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} టీకా] +password_label=ఈ PDF ఫైల్ తెరుచుటకు సంకేతపదం ప్రవేశపెట్టుము. +password_invalid=సంకేతపదం చెల్లదు. దయచేసి మళ్ళీ ప్రయత్నించండి. +password_ok=సరే +password_cancel=రద్దుచేయి + +printing_not_supported=హెచ్చరిక: ఈ విహారిణి చేత ముద్రణ పూర్తిగా తోడ్పాటు లేదు. +printing_not_ready=హెచ్చరిక: ముద్రణ కొరకు ఈ PDF పూర్తిగా లోడవలేదు. +web_fonts_disabled=వెబ్ ఫాంట్లు అచేతనించబడెను: ఎంబెడెడ్ PDF ఫాంట్లు ఉపయోగించలేక పోయింది. + +# Editor + + +# Editor + + +# Editor Parameters +editor_free_text_color=రంగు +editor_free_text_size=పరిమాణం +editor_ink_color=రంగు +editor_ink_thickness=మందం +editor_ink_opacity=అకిరణ్యత + +# Editor aria + +# Editor aria + diff --git a/www/include/vendor/pdfjs/web/locale/tg/viewer.properties b/www/include/vendor/pdfjs/web/locale/tg/viewer.properties new file mode 100644 index 0000000..c0a8f99 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/tg/viewer.properties @@ -0,0 +1,279 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Саҳифаи қаблӣ +previous_label=Қаблӣ +next.title=Саҳифаи навбатӣ +next_label=Навбатӣ + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Саҳифа +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=аз {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} аз {{pagesCount}}) + +zoom_out.title=Хурд кардан +zoom_out_label=Хурд кардан +zoom_in.title=Калон кардан +zoom_in_label=Калон кардан +zoom.title=Танзими андоза +presentation_mode.title=Гузариш ба реҷаи тақдим +presentation_mode_label=Реҷаи тақдим +open_file.title=Кушодани файл +open_file_label=Кушодан +print.title=Чоп кардан +print_label=Чоп кардан +download.title=Боргирӣ кардан +download_label=Боргирӣ кардан +save.title=Нигоҳ доштан +save_label=Нигоҳ доштан +bookmark.title=Намуди ҷорӣ (нусха бардоштан ё кушодан дар равзанаи нав) +bookmark_label=Намуди ҷорӣ + +bookmark1.title=Саҳифаи ҷорӣ (Дидани нишонии URL аз саҳифаи ҷорӣ) +bookmark1_label=Саҳифаи ҷорӣ + +# Secondary toolbar and context menu +tools.title=Абзорҳо +tools_label=Абзорҳо +first_page.title=Ба саҳифаи аввал гузаред +first_page_label=Ба саҳифаи аввал гузаред +last_page.title=Ба саҳифаи охирин гузаред +last_page_label=Ба саҳифаи охирин гузаред +page_rotate_cw.title=Ба самти ҳаракати ақрабаки соат давр задан +page_rotate_cw_label=Ба самти ҳаракати ақрабаки соат давр задан +page_rotate_ccw.title=Ба муқобили самти ҳаракати ақрабаки соат давр задан +page_rotate_ccw_label=Ба муқобили самти ҳаракати ақрабаки соат давр задан + +cursor_text_select_tool.title=Фаъол кардани «Абзори интихоби матн» +cursor_text_select_tool_label=Абзори интихоби матн +cursor_hand_tool.title=Фаъол кардани «Абзори даст» +cursor_hand_tool_label=Абзори даст + +scroll_page.title=Истифодаи варақзанӣ +scroll_page_label=Варақзанӣ +scroll_vertical.title=Истифодаи варақзании амудӣ +scroll_vertical_label=Варақзании амудӣ +scroll_horizontal.title=Истифодаи варақзании уфуқӣ +scroll_horizontal_label=Варақзании уфуқӣ +scroll_wrapped.title=Истифодаи варақзании миқёсбандӣ +scroll_wrapped_label=Варақзании миқёсбандӣ + +spread_none.title=Густариши саҳифаҳо истифода бурда нашавад +spread_none_label=Бе густурдани саҳифаҳо +spread_odd.title=Густариши саҳифаҳо аз саҳифаҳо бо рақамҳои тоқ оғоз карда мешавад +spread_odd_label=Саҳифаҳои тоқ аз тарафи чап +spread_even.title=Густариши саҳифаҳо аз саҳифаҳо бо рақамҳои ҷуфт оғоз карда мешавад +spread_even_label=Саҳифаҳои ҷуфт аз тарафи чап + +# Document properties dialog box +document_properties.title=Хусусиятҳои ҳуҷҷат… +document_properties_label=Хусусиятҳои ҳуҷҷат… +document_properties_file_name=Номи файл: +document_properties_file_size=Андозаи файл: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} КБ ({{size_b}} байт) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} МБ ({{size_b}} байт) +document_properties_title=Сарлавҳа: +document_properties_author=Муаллиф: +document_properties_subject=Мавзуъ: +document_properties_keywords=Калимаҳои калидӣ: +document_properties_creation_date=Санаи эҷод: +document_properties_modification_date=Санаи тағйирот: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Эҷодкунанда: +document_properties_producer=Таҳиякунандаи «PDF»: +document_properties_version=Версияи «PDF»: +document_properties_page_count=Шумораи саҳифаҳо: +document_properties_page_size=Андозаи саҳифа: +document_properties_page_size_unit_inches=дюйм +document_properties_page_size_unit_millimeters=мм +document_properties_page_size_orientation_portrait=амудӣ +document_properties_page_size_orientation_landscape=уфуқӣ +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Мактуб +document_properties_page_size_name_legal=Ҳуқуқӣ +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Намоиши тез дар Интернет: +document_properties_linearized_yes=Ҳа +document_properties_linearized_no=Не +document_properties_close=Пӯшидан + +print_progress_message=Омодасозии ҳуҷҷат барои чоп… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Бекор кардан + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Фаъол кардани навори ҷонибӣ +toggle_sidebar_notification2.title=Фаъол кардани навори ҷонибӣ (ҳуҷҷат дорои сохтор/замимаҳо/қабатҳо мебошад) +toggle_sidebar_label=Фаъол кардани навори ҷонибӣ +document_outline.title=Намоиш додани сохтори ҳуҷҷат (барои баркушодан/пеҷондани ҳамаи унсурҳо дубора зер кунед) +document_outline_label=Сохтори ҳуҷҷат +attachments.title=Намоиш додани замимаҳо +attachments_label=Замимаҳо +layers.title=Намоиш додани қабатҳо (барои барқарор кардани ҳамаи қабатҳо ба вазъияти пешфарз дубора зер кунед) +layers_label=Қабатҳо +thumbs.title=Намоиш додани тасвирчаҳо +thumbs_label=Тасвирчаҳо +current_outline_item.title=Ёфтани унсури сохтори ҷорӣ +current_outline_item_label=Унсури сохтори ҷорӣ +findbar.title=Ёфтан дар ҳуҷҷат +findbar_label=Ёфтан + +additional_layers=Қабатҳои иловагӣ +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Саҳифаи {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Саҳифаи {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Тасвирчаи саҳифаи {{page}} + +# Find panel button title and messages +find_input.title=Ёфтан +find_input.placeholder=Ёфтан дар ҳуҷҷат… +find_previous.title=Ҷустуҷӯи мавриди қаблии ибораи пешниҳодшуда +find_previous_label=Қаблӣ +find_next.title=Ҷустуҷӯи мавриди навбатии ибораи пешниҳодшуда +find_next_label=Навбатӣ +find_highlight=Ҳамаашро бо ранг ҷудо кардан +find_match_case_label=Бо дарназардошти ҳарфҳои хурду калон +find_match_diacritics_label=Бо дарназардошти аломатҳои диакритикӣ +find_entire_word_label=Калимаҳои пурра +find_reached_top=Ба болои ҳуҷҷат расид, аз поён идома ёфт +find_reached_bottom=Ба поёни ҳуҷҷат расид, аз боло идома ёфт +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} аз {{total}} мувофиқат +find_match_count[two]={{current}} аз {{total}} мувофиқат +find_match_count[few]={{current}} аз {{total}} мувофиқат +find_match_count[many]={{current}} аз {{total}} мувофиқат +find_match_count[other]={{current}} аз {{total}} мувофиқат +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Зиёда аз {{limit}} мувофиқат +find_match_count_limit[one]=Зиёда аз {{limit}} мувофиқат +find_match_count_limit[two]=Зиёда аз {{limit}} мувофиқат +find_match_count_limit[few]=Зиёда аз {{limit}} мувофиқат +find_match_count_limit[many]=Зиёда аз {{limit}} мувофиқат +find_match_count_limit[other]=Зиёда аз {{limit}} мувофиқат +find_not_found=Ибора ёфт нашуд + +# Error panel labels +error_more_info=Маълумоти бештар +error_less_info=Маълумоти камтар +error_close=Пӯшидан +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (сохт: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Паём: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Даста: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Файл: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Сатр: {{line}} + +# Predefined zoom values +page_scale_width=Аз рӯи паҳнои саҳифа +page_scale_fit=Аз рӯи андозаи саҳифа +page_scale_auto=Андозаи худкор +page_scale_actual=Андозаи воқеӣ +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Бор шуда истодааст… + +# Loading indicator messages +loading_error=Ҳангоми боркунии «PDF» хато ба миён омад. +invalid_file_error=Файли «PDF» нодуруст ё вайроншуда мебошад. +missing_file_error=Файли «PDF» ғоиб аст. +unexpected_response_error=Ҷавоби ногаҳон аз сервер. + +rendering_error=Ҳангоми шаклсозии саҳифа хато ба миён омад. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Ҳошиянависӣ - {{type}}] +password_label=Барои кушодани ин файли «PDF» ниҳонвожаро ворид кунед. +password_invalid=Ниҳонвожаи нодуруст. Лутфан, аз нав кӯшиш кунед. +password_ok=ХУБ +password_cancel=Бекор кардан + +printing_not_supported=Диққат: Чопкунӣ аз тарафи ин браузер ба таври пурра дастгирӣ намешавад. +printing_not_ready=Диққат: Файли «PDF» барои чопкунӣ пурра бор карда нашуд. +web_fonts_disabled=Шрифтҳои интернетӣ ғайрифаъоланд: истифодаи шрифтҳои дарунсохти «PDF» ғайриимкон аст. + +# Editor +editor_free_text2.title=Матн +editor_free_text2_label=Матн +editor_ink2.title=Расмкашӣ +editor_ink2_label=Расмкашӣ + +free_text2_default_content=Нависед… + +# Editor Parameters +editor_free_text_color=Ранг +editor_free_text_size=Андоза +editor_ink_color=Ранг +editor_ink_thickness=Ғафсӣ +editor_ink_opacity=Шаффофӣ + +# Editor aria +editor_free_text2_aria_label=Муҳаррири матн +editor_ink2_aria_label=Муҳаррири расмкашӣ +editor_ink_canvas_aria_label=Тасвири эҷодкардаи корбар diff --git a/www/include/vendor/pdfjs/web/locale/th/viewer.properties b/www/include/vendor/pdfjs/web/locale/th/viewer.properties new file mode 100644 index 0000000..56456c6 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/th/viewer.properties @@ -0,0 +1,279 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=หน้าก่อนหน้า +previous_label=ก่อนหน้า +next.title=หน้าถัดไป +next_label=ถัดไป + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=หน้า +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=จาก {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} จาก {{pagesCount}}) + +zoom_out.title=ซูมออก +zoom_out_label=ซูมออก +zoom_in.title=ซูมเข้า +zoom_in_label=ซูมเข้า +zoom.title=ซูม +presentation_mode.title=สลับเป็นโหมดการนำเสนอ +presentation_mode_label=โหมดการนำเสนอ +open_file.title=เปิดไฟล์ +open_file_label=เปิด +print.title=พิมพ์ +print_label=พิมพ์ +download.title=ดาวน์โหลด +download_label=ดาวน์โหลด +bookmark.title=มุมมองปัจจุบัน (คัดลอกหรือเปิดในหน้าต่างใหม่) +bookmark_label=มุมมองปัจจุบัน + +save.title=บันทึก +save_label=บันทึก +bookmark1.title=หน้าปัจจุบัน (ดู URL จากหน้าปัจจุบัน) +bookmark1_label=หน้าปัจจุบัน + +# Secondary toolbar and context menu +tools.title=เครื่องมือ +tools_label=เครื่องมือ +first_page.title=ไปยังหน้าแรก +first_page_label=ไปยังหน้าแรก +last_page.title=ไปยังหน้าสุดท้าย +last_page_label=ไปยังหน้าสุดท้าย +page_rotate_cw.title=หมุนตามเข็มนาฬิกา +page_rotate_cw_label=หมุนตามเข็มนาฬิกา +page_rotate_ccw.title=หมุนทวนเข็มนาฬิกา +page_rotate_ccw_label=หมุนทวนเข็มนาฬิกา + +cursor_text_select_tool.title=เปิดใช้งานเครื่องมือการเลือกข้อความ +cursor_text_select_tool_label=เครื่องมือการเลือกข้อความ +cursor_hand_tool.title=เปิดใช้งานเครื่องมือมือ +cursor_hand_tool_label=เครื่องมือมือ + +scroll_page.title=ใช้การเลื่อนหน้า +scroll_page_label=การเลื่อนหน้า +scroll_vertical.title=ใช้การเลื่อนแนวตั้ง +scroll_vertical_label=การเลื่อนแนวตั้ง +scroll_horizontal.title=ใช้การเลื่อนแนวนอน +scroll_horizontal_label=การเลื่อนแนวนอน +scroll_wrapped.title=ใช้การเลื่อนแบบคลุม +scroll_wrapped_label=เลื่อนแบบคลุม + +spread_none.title=ไม่ต้องรวมการกระจายหน้า +spread_none_label=ไม่กระจาย +spread_odd.title=รวมการกระจายหน้าเริ่มจากหน้าคี่ +spread_odd_label=กระจายอย่างเหลือเศษ +spread_even.title=รวมการกระจายหน้าเริ่มจากหน้าคู่ +spread_even_label=กระจายอย่างเท่าเทียม + +# Document properties dialog box +document_properties.title=คุณสมบัติเอกสาร… +document_properties_label=คุณสมบัติเอกสาร… +document_properties_file_name=ชื่อไฟล์: +document_properties_file_size=ขนาดไฟล์: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} ไบต์) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} ไบต์) +document_properties_title=ชื่อเรื่อง: +document_properties_author=ผู้สร้าง: +document_properties_subject=ชื่อเรื่อง: +document_properties_keywords=คำสำคัญ: +document_properties_creation_date=วันที่สร้าง: +document_properties_modification_date=วันที่แก้ไข: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=ผู้สร้าง: +document_properties_producer=ผู้ผลิต PDF: +document_properties_version=รุ่น PDF: +document_properties_page_count=จำนวนหน้า: +document_properties_page_size=ขนาดหน้า: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=แนวตั้ง +document_properties_page_size_orientation_landscape=แนวนอน +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=จดหมาย +document_properties_page_size_name_legal=ข้อกฎหมาย +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=มุมมองเว็บแบบรวดเร็ว: +document_properties_linearized_yes=ใช่ +document_properties_linearized_no=ไม่ +document_properties_close=ปิด + +print_progress_message=กำลังเตรียมเอกสารสำหรับการพิมพ์… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=ยกเลิก + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=เปิด/ปิดแถบข้าง +toggle_sidebar_notification2.title=เปิด/ปิดแถบข้าง (เอกสารมีเค้าร่าง/ไฟล์แนบ/เลเยอร์) +toggle_sidebar_label=เปิด/ปิดแถบข้าง +document_outline.title=แสดงเค้าร่างเอกสาร (คลิกสองครั้งเพื่อขยาย/ยุบรายการทั้งหมด) +document_outline_label=เค้าร่างเอกสาร +attachments.title=แสดงไฟล์แนบ +attachments_label=ไฟล์แนบ +layers.title=แสดงเลเยอร์ (คลิกสองครั้งเพื่อรีเซ็ตเลเยอร์ทั้งหมดเป็นสถานะเริ่มต้น) +layers_label=เลเยอร์ +thumbs.title=แสดงภาพขนาดย่อ +thumbs_label=ภาพขนาดย่อ +current_outline_item.title=ค้นหารายการเค้าร่างปัจจุบัน +current_outline_item_label=รายการเค้าร่างปัจจุบัน +findbar.title=ค้นหาในเอกสาร +findbar_label=ค้นหา + +additional_layers=เลเยอร์เพิ่มเติม +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=หน้า {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=หน้า {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=ภาพขนาดย่อของหน้า {{page}} + +# Find panel button title and messages +find_input.title=ค้นหา +find_input.placeholder=ค้นหาในเอกสาร… +find_previous.title=หาตำแหน่งก่อนหน้าของวลี +find_previous_label=ก่อนหน้า +find_next.title=หาตำแหน่งถัดไปของวลี +find_next_label=ถัดไป +find_highlight=เน้นสีทั้งหมด +find_match_case_label=ตัวพิมพ์ใหญ่เล็กตรงกัน +find_match_diacritics_label=เครื่องหมายกำกับการออกเสียงตรงกัน +find_entire_word_label=ทั้งคำ +find_reached_top=ค้นหาถึงจุดเริ่มต้นของหน้า เริ่มค้นต่อจากด้านล่าง +find_reached_bottom=ค้นหาถึงจุดสิ้นสุดหน้า เริ่มค้นต่อจากด้านบน +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} จาก {{total}} ที่ตรงกัน +find_match_count[two]={{current}} จาก {{total}} ที่ตรงกัน +find_match_count[few]={{current}} จาก {{total}} ที่ตรงกัน +find_match_count[many]={{current}} จาก {{total}} ที่ตรงกัน +find_match_count[other]={{current}} จาก {{total}} ที่ตรงกัน +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=มากกว่า {{limit}} ที่ตรงกัน +find_match_count_limit[one]=มากกว่า {{limit}} ที่ตรงกัน +find_match_count_limit[two]=มากกว่า {{limit}} ที่ตรงกัน +find_match_count_limit[few]=มากกว่า {{limit}} ที่ตรงกัน +find_match_count_limit[many]=มากกว่า {{limit}} ที่ตรงกัน +find_match_count_limit[other]=มากกว่า {{limit}} ที่ตรงกัน +find_not_found=ไม่พบวลี + +# Error panel labels +error_more_info=ข้อมูลเพิ่มเติม +error_less_info=ข้อมูลน้อยลง +error_close=ปิด +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=ข้อความ: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=สแตก: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=ไฟล์: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=บรรทัด: {{line}} + +# Predefined zoom values +page_scale_width=ความกว้างหน้า +page_scale_fit=พอดีหน้า +page_scale_auto=ซูมอัตโนมัติ +page_scale_actual=ขนาดจริง +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=กำลังโหลด… + +# Loading indicator messages +loading_error=เกิดข้อผิดพลาดขณะโหลด PDF +invalid_file_error=ไฟล์ PDF ไม่ถูกต้องหรือเสียหาย +missing_file_error=ไฟล์ PDF หายไป +unexpected_response_error=การตอบสนองของเซิร์ฟเวอร์ที่ไม่คาดคิด + +rendering_error=เกิดข้อผิดพลาดขณะเรนเดอร์หน้า + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[คำอธิบายประกอบ {{type}}] +password_label=ป้อนรหัสผ่านเพื่อเปิดไฟล์ PDF นี้ +password_invalid=รหัสผ่านไม่ถูกต้อง โปรดลองอีกครั้ง +password_ok=ตกลง +password_cancel=ยกเลิก + +printing_not_supported=คำเตือน: เบราว์เซอร์นี้ไม่ได้สนับสนุนการพิมพ์อย่างเต็มที่ +printing_not_ready=คำเตือน: PDF ไม่ได้รับการโหลดอย่างเต็มที่สำหรับการพิมพ์ +web_fonts_disabled=แบบอักษรเว็บถูกปิดใช้งาน: ไม่สามารถใช้แบบอักษร PDF ฝังตัว + +# Editor +editor_free_text2.title=ข้อความ +editor_free_text2_label=ข้อความ +editor_ink2.title=รูปวาด +editor_ink2_label=รูปวาด + +free_text2_default_content=เริ่มพิมพ์… + +# Editor Parameters +editor_free_text_color=สี +editor_free_text_size=ขนาด +editor_ink_color=สี +editor_ink_thickness=ความหนา +editor_ink_opacity=ความทึบ + +# Editor aria +editor_free_text2_aria_label=ตัวแก้ไขข้อความ +editor_ink2_aria_label=ตัวแก้ไขรูปวาด +editor_ink_canvas_aria_label=ภาพที่ผู้ใช้สร้างขึ้น diff --git a/www/include/vendor/pdfjs/web/locale/tl/viewer.properties b/www/include/vendor/pdfjs/web/locale/tl/viewer.properties new file mode 100644 index 0000000..2d44451 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/tl/viewer.properties @@ -0,0 +1,243 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Naunang Pahina +previous_label=Nakaraan +next.title=Sunod na Pahina +next_label=Sunod + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Pahina +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=ng {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} ng {{pagesCount}}) + +zoom_out.title=Paliitin +zoom_out_label=Paliitin +zoom_in.title=Palakihin +zoom_in_label=Palakihin +zoom.title=Mag-zoom +presentation_mode.title=Lumipat sa Presentation Mode +presentation_mode_label=Presentation Mode +open_file.title=Magbukas ng file +open_file_label=Buksan +print.title=i-Print +print_label=i-Print +download.title=i-Download +download_label=i-Download +bookmark.title=Kasalukuyang tingin (kopyahin o buksan sa bagong window) +bookmark_label=Kasalukuyang tingin + +# Secondary toolbar and context menu +tools.title=Mga Kagamitan +tools_label=Mga Kagamitan +first_page.title=Pumunta sa Unang Pahina +first_page_label=Pumunta sa Unang Pahina +last_page.title=Pumunta sa Huling Pahina +last_page_label=Pumunta sa Huling Pahina +page_rotate_cw.title=Paikutin Pakanan +page_rotate_cw_label=Paikutin Pakanan +page_rotate_ccw.title=Paikutin Pakaliwa +page_rotate_ccw_label=Paikutin Pakaliwa + +cursor_text_select_tool.title=I-enable ang Text Selection Tool +cursor_text_select_tool_label=Text Selection Tool +cursor_hand_tool.title=I-enable ang Hand Tool +cursor_hand_tool_label=Hand Tool + +scroll_vertical.title=Gumamit ng Vertical Scrolling +scroll_vertical_label=Vertical Scrolling +scroll_horizontal.title=Gumamit ng Horizontal Scrolling +scroll_horizontal_label=Horizontal Scrolling +scroll_wrapped.title=Gumamit ng Wrapped Scrolling +scroll_wrapped_label=Wrapped Scrolling + +spread_none.title=Huwag pagsamahin ang mga page spread +spread_none_label=No Spreads +spread_odd.title=Join page spreads starting with odd-numbered pages +spread_odd_label=Mga Odd Spread +spread_even.title=Pagsamahin ang mga page spread na nagsisimula sa mga even-numbered na pahina +spread_even_label=Mga Even Spread + +# Document properties dialog box +document_properties.title=Mga Katangian ng Dokumento… +document_properties_label=Mga Katangian ng Dokumento… +document_properties_file_name=File name: +document_properties_file_size=File size: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Pamagat: +document_properties_author=May-akda: +document_properties_subject=Paksa: +document_properties_keywords=Mga keyword: +document_properties_creation_date=Petsa ng Pagkakagawa: +document_properties_modification_date=Petsa ng Pagkakabago: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Tagalikha: +document_properties_producer=PDF Producer: +document_properties_version=PDF Version: +document_properties_page_count=Bilang ng Pahina: +document_properties_page_size=Laki ng Pahina: +document_properties_page_size_unit_inches=pulgada +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=patayo +document_properties_page_size_orientation_landscape=pahiga +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Fast Web View: +document_properties_linearized_yes=Oo +document_properties_linearized_no=Hindi +document_properties_close=Isara + +print_progress_message=Inihahanda ang dokumento para sa pag-print… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Kanselahin + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Ipakita/Itago ang Sidebar +toggle_sidebar_notification2.title=Ipakita/Itago ang Sidebar (nagtataglay ang dokumento ng balangkas/mga attachment/mga layer) +toggle_sidebar_label=Ipakita/Itago ang Sidebar +document_outline.title=Ipakita ang Document Outline (mag-double-click para i-expand/collapse ang laman) +document_outline_label=Balangkas ng Dokumento +attachments.title=Ipakita ang mga Attachment +attachments_label=Mga attachment +layers.title=Ipakita ang mga Layer (mag-double click para mareset ang lahat ng layer sa orihinal na estado) +layers_label=Mga layer +thumbs.title=Ipakita ang mga Thumbnail +thumbs_label=Mga thumbnail +findbar.title=Hanapin sa Dokumento +findbar_label=Hanapin + +additional_layers=Mga Karagdagang Layer +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Pahina {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Thumbnail ng Pahina {{page}} + +# Find panel button title and messages +find_input.title=Hanapin +find_input.placeholder=Hanapin sa dokumento… +find_previous.title=Hanapin ang nakaraang pangyayari ng parirala +find_previous_label=Nakaraan +find_next.title=Hanapin ang susunod na pangyayari ng parirala +find_next_label=Susunod +find_highlight=I-highlight lahat +find_match_case_label=Itugma ang case +find_entire_word_label=Buong salita +find_reached_top=Naabot na ang tuktok ng dokumento, ipinagpatuloy mula sa ilalim +find_reached_bottom=Naabot na ang dulo ng dokumento, ipinagpatuloy mula sa tuktok +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} ng {{total}} tugma +find_match_count[two]={{current}} ng {{total}} tugma +find_match_count[few]={{current}} ng {{total}} tugma +find_match_count[many]={{current}} ng {{total}} tugma +find_match_count[other]={{current}} ng {{total}} tugma +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Higit sa {{limit}} tugma +find_match_count_limit[one]=Higit sa {{limit}} tugma +find_match_count_limit[two]=Higit sa {{limit}} tugma +find_match_count_limit[few]=Higit sa {{limit}} tugma +find_match_count_limit[many]=Higit sa {{limit}} tugma +find_match_count_limit[other]=Higit sa {{limit}} tugma +find_not_found=Hindi natagpuan ang parirala + +# Error panel labels +error_more_info=Karagdagang Impormasyon +error_less_info=Mas Kaunting Impormasyon +error_close=Isara +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Mensahe: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=File: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Linya: {{line}} +rendering_error=Nagkaproblema habang nirerender ang pahina. + +# Predefined zoom values +page_scale_width=Lapad ng Pahina +page_scale_fit=Pagkasyahin ang Pahina +page_scale_auto=Automatic Zoom +page_scale_actual=Totoong sukat +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=Nagkaproblema habang niloload ang PDF. +invalid_file_error=Di-wasto o sira ang PDF file. +missing_file_error=Nawawalang PDF file. +unexpected_response_error=Hindi inaasahang tugon ng server. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Annotation] +password_label=Ipasok ang password upang buksan ang PDF file na ito. +password_invalid=Maling password. Subukan uli. +password_ok=OK +password_cancel=Kanselahin + +printing_not_supported=Babala: Hindi pa ganap na suportado ang pag-print sa browser na ito. +printing_not_ready=Babala: Hindi ganap na nabuksan ang PDF para sa pag-print. +web_fonts_disabled=Naka-disable ang mga Web font: hindi kayang gamitin ang mga naka-embed na PDF font. + diff --git a/www/include/vendor/pdfjs/web/locale/tr/viewer.properties b/www/include/vendor/pdfjs/web/locale/tr/viewer.properties new file mode 100644 index 0000000..154e815 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/tr/viewer.properties @@ -0,0 +1,279 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Önceki sayfa +previous_label=Önceki +next.title=Sonraki sayfa +next_label=Sonraki + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Sayfa +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=/ {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} / {{pagesCount}}) + +zoom_out.title=Uzaklaştır +zoom_out_label=Uzaklaştır +zoom_in.title=Yaklaştır +zoom_in_label=Yaklaştır +zoom.title=Yakınlaştırma +presentation_mode.title=Sunum moduna geç +presentation_mode_label=Sunum modu +open_file.title=Dosya aç +open_file_label=Aç +print.title=Yazdır +print_label=Yazdır +download.title=İndir +download_label=İndir +save.title=Kaydet +save_label=Kaydet +bookmark.title=Geçerli görünüm (kopyala veya yeni pencerede aç) +bookmark_label=Geçerli görünüm + +bookmark1.title=Geçerli sayfa (geçerli sayfanın adresini görüntüle) +bookmark1_label=Geçerli sayfa + +# Secondary toolbar and context menu +tools.title=Araçlar +tools_label=Araçlar +first_page.title=İlk sayfaya git +first_page_label=İlk sayfaya git +last_page.title=Son sayfaya git +last_page_label=Son sayfaya git +page_rotate_cw.title=Saat yönünde döndür +page_rotate_cw_label=Saat yönünde döndür +page_rotate_ccw.title=Saat yönünün tersine döndür +page_rotate_ccw_label=Saat yönünün tersine döndür + +cursor_text_select_tool.title=Metin seçme aracını etkinleştir +cursor_text_select_tool_label=Metin seçme aracı +cursor_hand_tool.title=El aracını etkinleştir +cursor_hand_tool_label=El aracı + +scroll_page.title=Sayfa kaydırmayı kullan +scroll_page_label=Sayfa kaydırma +scroll_vertical.title=Dikey kaydırma kullan +scroll_vertical_label=Dikey kaydırma +scroll_horizontal.title=Yatay kaydırma kullan +scroll_horizontal_label=Yatay kaydırma +scroll_wrapped.title=Yan yana kaydırmayı kullan +scroll_wrapped_label=Yan yana kaydırma + +spread_none.title=Yan yana sayfaları birleştirme +spread_none_label=Birleştirme +spread_odd.title=Yan yana sayfaları tek numaralı sayfalardan başlayarak birleştir +spread_odd_label=Tek numaralı +spread_even.title=Yan yana sayfaları çift numaralı sayfalardan başlayarak birleştir +spread_even_label=Çift numaralı + +# Document properties dialog box +document_properties.title=Belge özellikleri… +document_properties_label=Belge özellikleri… +document_properties_file_name=Dosya adı: +document_properties_file_size=Dosya boyutu: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bayt) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bayt) +document_properties_title=Başlık: +document_properties_author=Yazar: +document_properties_subject=Konu: +document_properties_keywords=Anahtar kelimeler: +document_properties_creation_date=Oluturma tarihi: +document_properties_modification_date=Değiştirme tarihi: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}} {{time}} +document_properties_creator=Oluşturan: +document_properties_producer=PDF üreticisi: +document_properties_version=PDF sürümü: +document_properties_page_count=Sayfa sayısı: +document_properties_page_size=Sayfa boyutu: +document_properties_page_size_unit_inches=inç +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=dikey +document_properties_page_size_orientation_landscape=yatay +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Hızlı web görünümü: +document_properties_linearized_yes=Evet +document_properties_linearized_no=Hayır +document_properties_close=Kapat + +print_progress_message=Belge yazdırılmaya hazırlanıyor… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent=%{{progress}} +print_progress_close=İptal + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Kenar çubuğunu aç/kapat +toggle_sidebar_notification2.title=Kenar çubuğunu aç/kapat (Belge ana hat/ekler/katmanlar içeriyor) +toggle_sidebar_label=Kenar çubuğunu aç/kapat +document_outline.title=Belge ana hatlarını göster (Tüm öğeleri genişletmek/daraltmak için çift tıklayın) +document_outline_label=Belge ana hatları +attachments.title=Ekleri göster +attachments_label=Ekler +layers.title=Katmanları göster (tüm katmanları varsayılan duruma sıfırlamak için çift tıklayın) +layers_label=Katmanlar +thumbs.title=Küçük resimleri göster +thumbs_label=Küçük resimler +current_outline_item.title=Mevcut ana hat öğesini bul +current_outline_item_label=Mevcut ana hat öğesi +findbar.title=Belgede bul +findbar_label=Bul + +additional_layers=Ek katmanlar +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Sayfa {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Sayfa {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas={{page}}. sayfanın küçük hâli + +# Find panel button title and messages +find_input.title=Bul +find_input.placeholder=Belgede bul… +find_previous.title=Önceki eşleşmeyi bul +find_previous_label=Önceki +find_next.title=Sonraki eşleşmeyi bul +find_next_label=Sonraki +find_highlight=Tümünü vurgula +find_match_case_label=Büyük-küçük harfe duyarlı +find_match_diacritics_label=Fonetik işaretleri bul +find_entire_word_label=Tam sözcükler +find_reached_top=Belgenin başına ulaşıldı, sonundan devam edildi +find_reached_bottom=Belgenin sonuna ulaşıldı, başından devam edildi +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{total}} eşleşmeden {{current}}. eşleşme +find_match_count[two]={{total}} eşleşmeden {{current}}. eşleşme +find_match_count[few]={{total}} eşleşmeden {{current}}. eşleşme +find_match_count[many]={{total}} eşleşmeden {{current}}. eşleşme +find_match_count[other]={{total}} eşleşmeden {{current}}. eşleşme +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]={{limit}} eşleşmeden fazla +find_match_count_limit[one]={{limit}} eşleşmeden fazla +find_match_count_limit[two]={{limit}} eşleşmeden fazla +find_match_count_limit[few]={{limit}} eşleşmeden fazla +find_match_count_limit[many]={{limit}} eşleşmeden fazla +find_match_count_limit[other]={{limit}} eşleşmeden fazla +find_not_found=Eşleşme bulunamadı + +# Error panel labels +error_more_info=Daha fazla bilgi al +error_less_info=Daha az bilgi +error_close=Kapat +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js sürüm {{version}} (yapı: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=İleti: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Yığın: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Dosya: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Satır: {{line}} + +# Predefined zoom values +page_scale_width=Sayfa genişliği +page_scale_fit=Sayfayı sığdır +page_scale_auto=Otomatik yakınlaştır +page_scale_actual=Gerçek boyut +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent=%{{scale}} + +# Loading indicator messages +loading=Yükleniyor… + +# Loading indicator messages +loading_error=PDF yüklenirken bir hata oluştu. +invalid_file_error=Geçersiz veya bozulmuş PDF dosyası. +missing_file_error=PDF dosyası eksik. +unexpected_response_error=Beklenmeyen sunucu yanıtı. + +rendering_error=Sayfa yorumlanırken bir hata oluştu. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} işareti] +password_label=Bu PDF dosyasını açmak için parolasını yazın. +password_invalid=Geçersiz parola. Lütfen yeniden deneyin. +password_ok=Tamam +password_cancel=İptal + +printing_not_supported=Uyarı: Yazdırma bu tarayıcı tarafından tam olarak desteklenmemektedir. +printing_not_ready=Uyarı: PDF tamamen yüklenmedi ve yazdırmaya hazır değil. +web_fonts_disabled=Web fontları devre dışı: Gömülü PDF fontları kullanılamıyor. + +# Editor +editor_free_text2.title=Metin +editor_free_text2_label=Metin +editor_ink2.title=Çiz +editor_ink2_label=Çiz + +free_text2_default_content=Yazmaya başlayın… + +# Editor Parameters +editor_free_text_color=Renk +editor_free_text_size=Boyut +editor_ink_color=Renk +editor_ink_thickness=Kalınlık +editor_ink_opacity=Saydamlık + +# Editor aria +editor_free_text2_aria_label=Metin düzenleyicisi +editor_ink2_aria_label=Çizim düzenleyicisi +editor_ink_canvas_aria_label=Kullanıcı tarafından oluşturulan resim diff --git a/www/include/vendor/pdfjs/web/locale/trs/viewer.properties b/www/include/vendor/pdfjs/web/locale/trs/viewer.properties new file mode 100644 index 0000000..8bd1fe1 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/trs/viewer.properties @@ -0,0 +1,206 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Pajinâ gunâj rukùu +previous_label=Sa gachin +next.title=Pajinâ 'na' ñaan +next_label=Ne' ñaan + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Ñanj +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=si'iaj {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} of {{pagesCount}}) + +zoom_out.title=Nagi'iaj li' +zoom_out_label=Nagi'iaj li' +zoom_in.title=Nagi'iaj niko' +zoom_in_label=Nagi'iaj niko' +zoom.title=dàj nìko ma'an +presentation_mode.title=Naduno' daj ga ma +presentation_mode_label=Daj gà ma +open_file.title=Na'nïn' chrû ñanj +open_file_label=Na'nïn +print.title=Nari' ña du'ua +print_label=Nari' ñadu'ua +download.title=Nadunïnj +download_label=Nadunïnj +bookmark.title=Daj hua ma (Guxun' nej na'nïn' riña ventana nakàa) +bookmark_label=Daj hua ma + +# Secondary toolbar and context menu +tools.title=Rasun +tools_label=Nej rasùun +first_page.title=gun' riña pajina asiniin +first_page_label=Gun' riña pajina asiniin +last_page.title=Gun' riña pajina rukù ni'in +last_page_label=Gun' riña pajina rukù ni'inj +page_rotate_cw.title=Tanikaj ne' huat +page_rotate_cw_label=Tanikaj ne' huat +page_rotate_ccw.title=Tanikaj ne' chînt' +page_rotate_ccw_label=Tanikaj ne' chint + +cursor_text_select_tool.title=Dugi'iaj sun' sa ganahui texto +cursor_text_select_tool_label=Nej rasun arajsun' da' nahui' texto +cursor_hand_tool.title=Nachrun' nej rasun +cursor_hand_tool_label=Sa rajsun ro'o' + +scroll_vertical.title=Garasun' dukuán runūu +scroll_vertical_label=Dukuán runūu +scroll_horizontal.title=Garasun' dukuán nikin' nahui +scroll_horizontal_label=Dukuán nikin' nahui +scroll_wrapped.title=Garasun' sa nachree +scroll_wrapped_label=Sa nachree + +spread_none.title=Si nagi'iaj nugun'un' nej pagina hua ninin +spread_none_label=Ni'io daj hua pagina +spread_odd.title=Nagi'iaj nugua'ant nej pajina +spread_odd_label=Ni'io' daj hua libro gurin +spread_even.title=Nakāj dugui' ngà nej pajinâ ayi'ì ngà da' hùi hùi +spread_even_label=Nahuin nìko nej + +# Document properties dialog box +document_properties.title=Nej sa nikāj ñanj… +document_properties_label=Nej sa nikāj ñanj… +document_properties_file_name=Si yugui archîbo: +document_properties_file_size=Dàj yachìj archîbo: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Si yugui: +document_properties_author=Sí girirà: +document_properties_subject=Dugui': +document_properties_keywords=Nej nuguan' huìi: +document_properties_creation_date=Gui gurugui' man: +document_properties_modification_date=Nuguan' nahuin nakà: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Guiri ro' +document_properties_producer=Sa ri PDF: +document_properties_version=PDF Version: +document_properties_page_count=Si Guendâ Pâjina: +document_properties_page_size=Dàj yachìj pâjina: +document_properties_page_size_unit_inches=riña +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=nadu'ua +document_properties_page_size_orientation_landscape=dàj huaj +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Da'ngà'a +document_properties_page_size_name_legal=Nuguan' a'nï'ïn +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Nanèt chre ni'iajt riña Web: +document_properties_linearized_yes=Ga'ue +document_properties_linearized_no=Si ga'ue +document_properties_close=Narán + +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Duyichin' + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Nadunā barrâ nù yi'nïn +toggle_sidebar_label=Nadunā barrâ nù yi'nïn +findbar_label=Narì' + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. + +# Find panel button title and messages +find_input.title=Narì' +find_previous_label=Sa gachîn +find_next_label=Ne' ñaan +find_highlight=Daran' sa ña'an +find_match_case_label=Match case +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} si'iaj {{total}} guña gè huaj +find_match_count[two]={{current}} si'iaj {{total}} guña gè huaj +find_match_count[few]={{current}} si'iaj {{total}} guña gè huaj +find_match_count[many]={{current}} si'iaj {{total}} guña gè huaj +find_match_count[other]={{current}} of {{total}} matches +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Doj ngà da' {{limit}} nej sa nari' dugui'i +find_match_count_limit[one]=Doj ngà da' {{limit}} sa nari' dugui'i +find_match_count_limit[two]=Doj ngà da' {{limit}} nej sa nari' dugui'i +find_match_count_limit[few]=Doj ngà da' {{limit}} nej sa nari' dugui'i +find_match_count_limit[many]=Doj ngà da' {{limit}} nej sa nari' dugui'i +find_match_count_limit[other]=Doj ngà da' {{limit}} nej sa nari' dugui'i +find_not_found=Nu narì'ij nugua'anj + +# Error panel labels +error_more_info=Doj nuguan' a'min rayi'î nan +error_less_info=Dòj nuguan' a'min rayi'î nan +error_close=Narán +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Message: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Naru'ui': {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Archîbo: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Lînia: {{line}} + +# Predefined zoom values +page_scale_actual=Dàj yàchi akuan' nín +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +password_ok=Ga'ue +password_cancel=Duyichin' + diff --git a/www/include/vendor/pdfjs/web/locale/uk/viewer.properties b/www/include/vendor/pdfjs/web/locale/uk/viewer.properties new file mode 100644 index 0000000..cf2936b --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/uk/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Попередня сторінка +previous_label=Попередня +next.title=Наступна сторінка +next_label=Наступна + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Сторінка +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=із {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} із {{pagesCount}}) + +zoom_out.title=Зменшити +zoom_out_label=Зменшити +zoom_in.title=Збільшити +zoom_in_label=Збільшити +zoom.title=Масштаб +presentation_mode.title=Перейти в режим презентації +presentation_mode_label=Режим презентації +open_file.title=Відкрити файл +open_file_label=Відкрити +print.title=Друк +print_label=Друк +download.title=Завантажити +download_label=Завантажити +save.title=Зберегти +save_label=Зберегти +bookmark.title=Поточний вигляд (копіювати чи відкрити в новому вікні) +bookmark_label=Поточний вигляд + +bookmark1.title=Поточна сторінка (перегляд URL-адреси з поточної сторінки) +bookmark1_label=Поточна сторінка + +# Secondary toolbar and context menu +tools.title=Інструменти +tools_label=Інструменти +first_page.title=На першу сторінку +first_page_label=На першу сторінку +last_page.title=На останню сторінку +last_page_label=На останню сторінку +page_rotate_cw.title=Повернути за годинниковою стрілкою +page_rotate_cw_label=Повернути за годинниковою стрілкою +page_rotate_ccw.title=Повернути проти годинникової стрілки +page_rotate_ccw_label=Повернути проти годинникової стрілки + +cursor_text_select_tool.title=Увімкнути інструмент вибору тексту +cursor_text_select_tool_label=Інструмент вибору тексту +cursor_hand_tool.title=Увімкнути інструмент "Рука" +cursor_hand_tool_label=Інструмент "Рука" + +scroll_page.title=Використовувати прокручування сторінки +scroll_page_label=Прокручування сторінки +scroll_vertical.title=Використовувати вертикальне прокручування +scroll_vertical_label=Вертикальне прокручування +scroll_horizontal.title=Використовувати горизонтальне прокручування +scroll_horizontal_label=Горизонтальне прокручування +scroll_wrapped.title=Використовувати масштабоване прокручування +scroll_wrapped_label=Масштабоване прокручування + +spread_none.title=Не використовувати розгорнуті сторінки +spread_none_label=Без розгорнутих сторінок +spread_odd.title=Розгорнуті сторінки починаються з непарних номерів +spread_odd_label=Непарні сторінки зліва +spread_even.title=Розгорнуті сторінки починаються з парних номерів +spread_even_label=Парні сторінки зліва + +# Document properties dialog box +document_properties.title=Властивості документа… +document_properties_label=Властивості документа… +document_properties_file_name=Назва файла: +document_properties_file_size=Розмір файла: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} КБ ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} МБ ({{size_b}} bytes) +document_properties_title=Заголовок: +document_properties_author=Автор: +document_properties_subject=Тема: +document_properties_keywords=Ключові слова: +document_properties_creation_date=Дата створення: +document_properties_modification_date=Дата зміни: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Створено: +document_properties_producer=Виробник PDF: +document_properties_version=Версія PDF: +document_properties_page_count=Кількість сторінок: +document_properties_page_size=Розмір сторінки: +document_properties_page_size_unit_inches=дюймів +document_properties_page_size_unit_millimeters=мм +document_properties_page_size_orientation_portrait=книжкова +document_properties_page_size_orientation_landscape=альбомна +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Швидкий перегляд в Інтернеті: +document_properties_linearized_yes=Так +document_properties_linearized_no=Ні +document_properties_close=Закрити + +print_progress_message=Підготовка документу до друку… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Скасувати + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Бічна панель +toggle_sidebar_notification2.title=Перемкнути бічну панель (документ містить ескіз/вкладення/шари) +toggle_sidebar_label=Перемкнути бічну панель +document_outline.title=Показати схему документу (подвійний клік для розгортання/згортання елементів) +document_outline_label=Схема документа +attachments.title=Показати прикріплення +attachments_label=Прикріплення +layers.title=Показати шари (двічі клацніть, щоб скинути всі шари до типового стану) +layers_label=Шари +thumbs.title=Показувати ескізи +thumbs_label=Ескізи +current_outline_item.title=Знайти поточний елемент змісту +current_outline_item_label=Поточний елемент змісту +findbar.title=Знайти в документі +findbar_label=Знайти + +additional_layers=Додаткові шари +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Сторінка {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Сторінка {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Ескіз сторінки {{page}} + +# Find panel button title and messages +find_input.title=Знайти +find_input.placeholder=Знайти в документі… +find_previous.title=Знайти попереднє входження фрази +find_previous_label=Попереднє +find_next.title=Знайти наступне входження фрази +find_next_label=Наступне +find_highlight=Підсвітити все +find_match_case_label=З урахуванням регістру +find_match_diacritics_label=Відповідність діакритичних знаків +find_entire_word_label=Цілі слова +find_reached_top=Досягнуто початку документу, продовжено з кінця +find_reached_bottom=Досягнуто кінця документу, продовжено з початку +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} збіг із {{total}} +find_match_count[two]={{current}} збіги з {{total}} +find_match_count[few]={{current}} збігів із {{total}} +find_match_count[many]={{current}} збігів із {{total}} +find_match_count[other]={{current}} збігів із {{total}} +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Понад {{limit}} збігів +find_match_count_limit[one]=Більше, ніж {{limit}} збіг +find_match_count_limit[two]=Більше, ніж {{limit}} збіги +find_match_count_limit[few]=Більше, ніж {{limit}} збігів +find_match_count_limit[many]=Понад {{limit}} збігів +find_match_count_limit[other]=Понад {{limit}} збігів +find_not_found=Фразу не знайдено + +# Error panel labels +error_more_info=Більше інформації +error_less_info=Менше інформації +error_close=Закрити +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Повідомлення: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Стек: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Файл: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Рядок: {{line}} + +# Predefined zoom values +page_scale_width=За шириною +page_scale_fit=Вмістити +page_scale_auto=Автомасштаб +page_scale_actual=Дійсний розмір +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Завантаження… +loading_error=Під час завантаження PDF сталася помилка. +invalid_file_error=Недійсний або пошкоджений PDF-файл. +missing_file_error=Відсутній PDF-файл. +unexpected_response_error=Неочікувана відповідь сервера. + +rendering_error=Під час виведення сторінки сталася помилка. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}}-анотація] +password_label=Введіть пароль для відкриття цього PDF-файла. +password_invalid=Невірний пароль. Спробуйте ще. +password_ok=Гаразд +password_cancel=Скасувати + +printing_not_supported=Попередження: Цей браузер не повністю підтримує друк. +printing_not_ready=Попередження: PDF не повністю завантажений для друку. +web_fonts_disabled=Веб-шрифти вимкнено: неможливо використати вбудовані у PDF шрифти. + +# Editor +editor_free_text2.title=Текст +editor_free_text2_label=Текст +editor_ink2.title=Малювати +editor_ink2_label=Малювати + +free_text2_default_content=Почніть вводити… + +# Editor Parameters +editor_free_text_color=Колір +editor_free_text_size=Розмір +editor_ink_color=Колір +editor_ink_thickness=Товщина +editor_ink_opacity=Прозорість + +# Editor aria +editor_free_text2_aria_label=Текстовий редактор +editor_ink2_aria_label=Графічний редактор +editor_ink_canvas_aria_label=Зображення, створене користувачем diff --git a/www/include/vendor/pdfjs/web/locale/ur/viewer.properties b/www/include/vendor/pdfjs/web/locale/ur/viewer.properties new file mode 100644 index 0000000..e3853b0 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/ur/viewer.properties @@ -0,0 +1,239 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=پچھلا صفحہ +previous_label=پچھلا +next.title=اگلا صفحہ +next_label=آگے + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=صفحہ +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}} کا +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} کا {{pagesCount}}) + +zoom_out.title=باہر زوم کریں +zoom_out_label=باہر زوم کریں +zoom_in.title=اندر زوم کریں +zoom_in_label=اندر زوم کریں +zoom.title=زوم +presentation_mode.title=پیشکش موڈ میں چلے جائیں +presentation_mode_label=پیشکش موڈ +open_file.title=مسل کھولیں +open_file_label=کھولیں +print.title=چھاپیں +print_label=چھاپیں +download.title=ڈاؤن لوڈ +download_label=ڈاؤن لوڈ +bookmark.title=حالیہ نظارہ (نۓ دریچہ میں نقل کریں یا کھولیں) +bookmark_label=حالیہ نظارہ + +# Secondary toolbar and context menu +tools.title=آلات +tools_label=آلات +first_page.title=پہلے صفحہ پر جائیں +first_page_label=پہلے صفحہ پر جائیں +last_page.title=آخری صفحہ پر جائیں +last_page_label=آخری صفحہ پر جائیں +page_rotate_cw.title=گھڑی وار گھمائیں +page_rotate_cw_label=گھڑی وار گھمائیں +page_rotate_ccw.title=ضد گھڑی وار گھمائیں +page_rotate_ccw_label=ضد گھڑی وار گھمائیں + +cursor_text_select_tool.title=متن کے انتخاب کے ٹول کو فعال بناے +cursor_text_select_tool_label=متن کے انتخاب کا آلہ +cursor_hand_tool.title=ہینڈ ٹول کو فعال بناییں +cursor_hand_tool_label=ہاتھ کا آلہ + +scroll_vertical.title=عمودی اسکرولنگ کا استعمال کریں +scroll_vertical_label=عمودی اسکرولنگ +scroll_horizontal.title=افقی سکرولنگ کا استعمال کریں +scroll_horizontal_label=افقی سکرولنگ + +spread_none.title=صفحہ پھیلانے میں شامل نہ ہوں +spread_none_label=کوئی پھیلاؤ نہیں +spread_odd_label=تاک پھیلاؤ +spread_even_label=جفت پھیلاؤ + +# Document properties dialog box +document_properties.title=دستاویز خواص… +document_properties_label=دستاویز خواص…\u0020 +document_properties_file_name=نام مسل: +document_properties_file_size=مسل سائز: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=عنوان: +document_properties_author=تخلیق کار: +document_properties_subject=موضوع: +document_properties_keywords=کلیدی الفاظ: +document_properties_creation_date=تخلیق کی تاریخ: +document_properties_modification_date=ترمیم کی تاریخ: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}، {{time}} +document_properties_creator=تخلیق کار: +document_properties_producer=PDF پیدا کار: +document_properties_version=PDF ورژن: +document_properties_page_count=صفحہ شمار: +document_properties_page_size=صفہ کی لمبائ: +document_properties_page_size_unit_inches=میں +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=عمودی انداز +document_properties_page_size_orientation_landscape=افقى انداز +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=خط +document_properties_page_size_name_legal=قانونی +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} {{name}} {{orientation}} +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=تیز ویب دیکھیں: +document_properties_linearized_yes=ہاں +document_properties_linearized_no=نہیں +document_properties_close=بند کریں + +print_progress_message=چھاپنے کرنے کے لیے دستاویز تیار کیے جا رھے ھیں +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent=*{{progress}}%* +print_progress_close=منسوخ کریں + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=سلائیڈ ٹوگل کریں +toggle_sidebar_label=سلائیڈ ٹوگل کریں +document_outline.title=دستاویز کی سرخیاں دکھایں (تمام اشیاء وسیع / غائب کرنے کے لیے ڈبل کلک کریں) +document_outline_label=دستاویز آؤٹ لائن +attachments.title=منسلکات دکھائیں +attachments_label=منسلکات +thumbs.title=تھمبنیل دکھائیں +thumbs_label=مجمل +findbar.title=دستاویز میں ڈھونڈیں +findbar_label=ڈھونڈیں + +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=صفحہ {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=صفحہ {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=صفحے کا مجمل {{page}} + +# Find panel button title and messages +find_input.title=ڈھونڈیں +find_input.placeholder=دستاویز… میں ڈھونڈیں +find_previous.title=فقرے کا پچھلا وقوع ڈھونڈیں +find_previous_label=پچھلا +find_next.title=فقرے کا اگلہ وقوع ڈھونڈیں +find_next_label=آگے +find_highlight=تمام نمایاں کریں +find_match_case_label=حروف مشابہ کریں +find_entire_word_label=تمام الفاظ +find_reached_top=صفحہ کے شروع پر پہنچ گیا، نیچے سے جاری کیا +find_reached_bottom=صفحہ کے اختتام پر پہنچ گیا، اوپر سے جاری کیا +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{total}} میچ کا {{current}} +find_match_count[few]={{total}} میچوں میں سے {{current}} +find_match_count[many]={{total}} میچوں میں سے {{current}} +find_match_count[other]={{total}} میچوں میں سے {{current}} +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(total) ]} +find_match_count_limit[zero]={{limit}} سے زیادہ میچ +find_match_count_limit[one]={{limit}} سے زیادہ میچ +find_match_count_limit[two]={{limit}} سے زیادہ میچ +find_match_count_limit[few]={{limit}} سے زیادہ میچ +find_match_count_limit[many]={{limit}} سے زیادہ میچ +find_match_count_limit[other]={{limit}} سے زیادہ میچ +find_not_found=فقرا نہیں ملا + +# Error panel labels +error_more_info=مزید معلومات +error_less_info=کم معلومات +error_close=بند کریں +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=پیغام: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=سٹیک: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=مسل: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=لائن: {{line}} +rendering_error=صفحہ بناتے ہوئے نقص آ گیا۔ + +# Predefined zoom values +page_scale_width=صفحہ چوڑائی +page_scale_fit=صفحہ فٹنگ +page_scale_auto=خودکار زوم +page_scale_actual=اصل سائز +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading_error=PDF لوڈ کرتے وقت نقص آ گیا۔ +invalid_file_error=ناجائز یا خراب PDF مسل +missing_file_error=PDF مسل غائب ہے۔ +unexpected_response_error=غیرمتوقع پیش کار جواب + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}.{{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} نوٹ] +password_label=PDF مسل کھولنے کے لیے پاس ورڈ داخل کریں. +password_invalid=ناجائز پاس ورڈ. براےؑ کرم دوبارہ کوشش کریں. +password_ok=ٹھیک ہے +password_cancel=منسوخ کریں + +printing_not_supported=تنبیہ:چھاپنا اس براؤزر پر پوری طرح معاونت شدہ نہیں ہے۔ +printing_not_ready=تنبیہ: PDF چھپائی کے لیے پوری طرح لوڈ نہیں ہوئی۔ +web_fonts_disabled=ویب فانٹ نا اہل ہیں: شامل PDF فانٹ استعمال کرنے میں ناکام۔ +# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same +# exact string as in the `chrome.properties` file. + diff --git a/www/include/vendor/pdfjs/web/locale/uz/viewer.properties b/www/include/vendor/pdfjs/web/locale/uz/viewer.properties new file mode 100644 index 0000000..31c60ae --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/uz/viewer.properties @@ -0,0 +1,163 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Oldingi sahifa +previous_label=Oldingi +next.title=Keyingi sahifa +next_label=Keyingi + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=/{{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. + +zoom_out.title=Kichiklashtirish +zoom_out_label=Kichiklashtirish +zoom_in.title=Kattalashtirish +zoom_in_label=Kattalashtirish +zoom.title=Masshtab +presentation_mode.title=Namoyish usuliga oʻtish +presentation_mode_label=Namoyish usuli +open_file.title=Faylni ochish +open_file_label=Ochish +print.title=Chop qilish +print_label=Chop qilish +download.title=Yuklab olish +download_label=Yuklab olish +bookmark.title=Joriy koʻrinish (nusxa oling yoki yangi oynada oching) +bookmark_label=Joriy koʻrinish + +# Secondary toolbar and context menu +tools.title=Vositalar +tools_label=Vositalar +first_page.title=Birinchi sahifaga oʻtish +first_page_label=Birinchi sahifaga oʻtish +last_page.title=Soʻnggi sahifaga oʻtish +last_page_label=Soʻnggi sahifaga oʻtish +page_rotate_cw.title=Soat yoʻnalishi boʻyicha burish +page_rotate_cw_label=Soat yoʻnalishi boʻyicha burish +page_rotate_ccw.title=Soat yoʻnalishiga qarshi burish +page_rotate_ccw_label=Soat yoʻnalishiga qarshi burish + + +# Document properties dialog box +document_properties.title=Hujjat xossalari +document_properties_label=Hujjat xossalari +document_properties_file_name=Fayl nomi: +document_properties_file_size=Fayl hajmi: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Nomi: +document_properties_author=Muallifi: +document_properties_subject=Mavzusi: +document_properties_keywords=Kalit so‘zlar +document_properties_creation_date=Yaratilgan sanasi: +document_properties_modification_date=O‘zgartirilgan sanasi +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Yaratuvchi: +document_properties_producer=PDF ishlab chiqaruvchi: +document_properties_version=PDF versiyasi: +document_properties_page_count=Sahifa soni: +document_properties_close=Yopish + +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Yon panelni yoqib/oʻchirib qoʻyish +toggle_sidebar_label=Yon panelni yoqib/oʻchirib qoʻyish +document_outline_label=Hujjat tuzilishi +attachments.title=Ilovalarni ko‘rsatish +attachments_label=Ilovalar +thumbs.title=Nishonchalarni koʻrsatish +thumbs_label=Nishoncha +findbar.title=Hujjat ichidan topish + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title={{page}} sahifa +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas={{page}} sahifa nishonchasi + +# Find panel button title and messages +find_previous.title=Soʻzlardagi oldingi hodisani topish +find_previous_label=Oldingi +find_next.title=Iboradagi keyingi hodisani topish +find_next_label=Keyingi +find_highlight=Barchasini ajratib koʻrsatish +find_match_case_label=Katta-kichik harflarni farqlash +find_reached_top=Hujjatning boshigacha yetib keldik, pastdan davom ettiriladi +find_reached_bottom=Hujjatning oxiriga yetib kelindi, yuqoridan davom ettirladi +find_not_found=Soʻzlar topilmadi + +# Error panel labels +error_more_info=Koʻproq ma`lumot +error_less_info=Kamroq ma`lumot +error_close=Yopish +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Xabar: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Toʻplam: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Fayl: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Satr: {{line}} +rendering_error=Sahifa renderlanayotganda xato yuz berdi. + +# Predefined zoom values +page_scale_width=Sahifa eni +page_scale_fit=Sahifani moslashtirish +page_scale_auto=Avtomatik masshtab +page_scale_actual=Haqiqiy hajmi +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=PDF yuklanayotganda xato yuz berdi. +invalid_file_error=Xato yoki buzuq PDF fayli. +missing_file_error=PDF fayl kerak. +unexpected_response_error=Kutilmagan server javobi. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Annotation] +password_label=PDF faylni ochish uchun parolni kiriting. +password_invalid=Parol - notoʻgʻri. Qaytadan urinib koʻring. +password_ok=OK + +printing_not_supported=Diqqat: chop qilish bruzer tomonidan toʻliq qoʻllab-quvvatlanmaydi. +printing_not_ready=Diqqat: PDF fayl chop qilish uchun toʻliq yuklanmadi. +web_fonts_disabled=Veb shriftlar oʻchirilgan: ichki PDF shriftlardan foydalanib boʻlmmaydi. + diff --git a/www/include/vendor/pdfjs/web/locale/vi/viewer.properties b/www/include/vendor/pdfjs/web/locale/vi/viewer.properties new file mode 100644 index 0000000..b140a30 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/vi/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Trang trước +previous_label=Trước +next.title=Trang Sau +next_label=Tiếp + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Trang +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=trên {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} trên {{pagesCount}}) + +zoom_out.title=Thu nhỏ +zoom_out_label=Thu nhỏ +zoom_in.title=Phóng to +zoom_in_label=Phóng to +zoom.title=Thu phóng +presentation_mode.title=Chuyển sang chế độ trình chiếu +presentation_mode_label=Chế độ trình chiếu +open_file.title=Mở tập tin +open_file_label=Mở tập tin +print.title=In +print_label=In +download.title=Tải xuống +download_label=Tải xuống +save.title=Lưu +save_label=Lưu +bookmark.title=Chế độ xem hiện tại (sao chép hoặc mở trong cửa sổ mới) +bookmark_label=Chế độ xem hiện tại + +bookmark1.title=Trang hiện tại (xem URL từ trang hiện tại) +bookmark1_label=Trang hiện tại + +# Secondary toolbar and context menu +tools.title=Công cụ +tools_label=Công cụ +first_page.title=Về trang đầu +first_page_label=Về trang đầu +last_page.title=Đến trang cuối +last_page_label=Đến trang cuối +page_rotate_cw.title=Xoay theo chiều kim đồng hồ +page_rotate_cw_label=Xoay theo chiều kim đồng hồ +page_rotate_ccw.title=Xoay ngược chiều kim đồng hồ +page_rotate_ccw_label=Xoay ngược chiều kim đồng hồ + +cursor_text_select_tool.title=Kích hoạt công cụ chọn vùng văn bản +cursor_text_select_tool_label=Công cụ chọn vùng văn bản +cursor_hand_tool.title=Kích hoạt công cụ con trỏ +cursor_hand_tool_label=Công cụ con trỏ + +scroll_page.title=Sử dụng cuộn trang hiện tại +scroll_page_label=Cuộn trang hiện tại +scroll_vertical.title=Sử dụng cuộn dọc +scroll_vertical_label=Cuộn dọc +scroll_horizontal.title=Sử dụng cuộn ngang +scroll_horizontal_label=Cuộn ngang +scroll_wrapped.title=Sử dụng cuộn ngắt dòng +scroll_wrapped_label=Cuộn ngắt dòng + +spread_none.title=Không nối rộng trang +spread_none_label=Không có phân cách +spread_odd.title=Nối trang bài bắt đầu với các trang được đánh số lẻ +spread_odd_label=Phân cách theo số lẻ +spread_even.title=Nối trang bài bắt đầu với các trang được đánh số chẵn +spread_even_label=Phân cách theo số chẵn + +# Document properties dialog box +document_properties.title=Thuộc tính của tài liệu… +document_properties_label=Thuộc tính của tài liệu… +document_properties_file_name=Tên tập tin: +document_properties_file_size=Kích thước: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} byte) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} byte) +document_properties_title=Tiêu đề: +document_properties_author=Tác giả: +document_properties_subject=Chủ đề: +document_properties_keywords=Từ khóa: +document_properties_creation_date=Ngày tạo: +document_properties_modification_date=Ngày sửa đổi: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Người tạo: +document_properties_producer=Phần mềm tạo PDF: +document_properties_version=Phiên bản PDF: +document_properties_page_count=Tổng số trang: +document_properties_page_size=Kích thước trang: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=khổ dọc +document_properties_page_size_orientation_landscape=khổ ngang +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Thư +document_properties_page_size_name_legal=Pháp lý +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Xem nhanh trên web: +document_properties_linearized_yes=Có +document_properties_linearized_no=Không +document_properties_close=Ðóng + +print_progress_message=Chuẩn bị trang để in… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Hủy bỏ + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Bật/Tắt thanh lề +toggle_sidebar_notification2.title=Bật tắt thanh lề (tài liệu bao gồm bản phác thảo/tập tin đính kèm/lớp) +toggle_sidebar_label=Bật/Tắt thanh lề +document_outline.title=Hiển thị tài liệu phác thảo (nhấp đúp vào để mở rộng/thu gọn tất cả các mục) +document_outline_label=Bản phác tài liệu +attachments.title=Hiện nội dung đính kèm +attachments_label=Nội dung đính kèm +layers.title=Hiển thị các lớp (nhấp đúp để đặt lại tất cả các lớp về trạng thái mặc định) +layers_label=Lớp +thumbs.title=Hiển thị ảnh thu nhỏ +thumbs_label=Ảnh thu nhỏ +current_outline_item.title=Tìm mục phác thảo hiện tại +current_outline_item_label=Mục phác thảo hiện tại +findbar.title=Tìm trong tài liệu +findbar_label=Tìm + +additional_layers=Các lớp bổ sung +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Trang {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Trang {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Ảnh thu nhỏ của trang {{page}} + +# Find panel button title and messages +find_input.title=Tìm +find_input.placeholder=Tìm trong tài liệu… +find_previous.title=Tìm cụm từ ở phần trước +find_previous_label=Trước +find_next.title=Tìm cụm từ ở phần sau +find_next_label=Tiếp +find_highlight=Tô sáng tất cả +find_match_case_label=Phân biệt hoa, thường +find_match_diacritics_label=Khớp dấu phụ +find_entire_word_label=Toàn bộ từ +find_reached_top=Đã đến phần đầu tài liệu, quay trở lại từ cuối +find_reached_bottom=Đã đến phần cuối của tài liệu, quay trở lại từ đầu +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} của {{total}} đã trùng +find_match_count[two]={{current}} của {{total}} đã trùng +find_match_count[few]={{current}} của {{total}} đã trùng +find_match_count[many]={{current}} của {{total}} đã trùng +find_match_count[other]={{current}} của {{total}} đã trùng +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Nhiều hơn {{limit}} đã trùng +find_match_count_limit[one]=Nhiều hơn {{limit}} đã trùng +find_match_count_limit[two]=Nhiều hơn {{limit}} đã trùng +find_match_count_limit[few]=Nhiều hơn {{limit}} đã trùng +find_match_count_limit[many]=Nhiều hơn {{limit}} đã trùng +find_match_count_limit[other]=Nhiều hơn {{limit}} đã trùng +find_not_found=Không tìm thấy cụm từ này + +# Error panel labels +error_more_info=Thông tin thêm +error_less_info=Hiển thị ít thông tin hơn +error_close=Đóng +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Thông điệp: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Tập tin: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Dòng: {{line}} + +# Predefined zoom values +page_scale_width=Vừa chiều rộng +page_scale_fit=Vừa chiều cao +page_scale_auto=Tự động chọn kích thước +page_scale_actual=Kích thước thực +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Đang tải… +loading_error=Lỗi khi tải tài liệu PDF. +invalid_file_error=Tập tin PDF hỏng hoặc không hợp lệ. +missing_file_error=Thiếu tập tin PDF. +unexpected_response_error=Máy chủ có phản hồi lạ. + +rendering_error=Lỗi khi hiển thị trang. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Chú thích] +password_label=Nhập mật khẩu để mở tập tin PDF này. +password_invalid=Mật khẩu không đúng. Vui lòng thử lại. +password_ok=OK +password_cancel=Hủy bỏ + +printing_not_supported=Cảnh báo: In ấn không được hỗ trợ đầy đủ ở trình duyệt này. +printing_not_ready=Cảnh báo: PDF chưa được tải hết để in. +web_fonts_disabled=Phông chữ Web bị vô hiệu hóa: không thể sử dụng các phông chữ PDF được nhúng. + +# Editor +editor_free_text2.title=Văn bản +editor_free_text2_label=Văn bản +editor_ink2.title=Vẽ +editor_ink2_label=Vẽ + +free_text2_default_content=Bắt đầu nhập… + +# Editor Parameters +editor_free_text_color=Màu +editor_free_text_size=Kích cỡ +editor_ink_color=Màu +editor_ink_thickness=Độ dày +editor_ink_opacity=Độ mờ + +# Editor aria +editor_free_text2_aria_label=Trình sửa văn bản +editor_ink2_aria_label=Trình sửa nét vẽ +editor_ink_canvas_aria_label=Hình ảnh do người dùng tạo diff --git a/www/include/vendor/pdfjs/web/locale/wo/viewer.properties b/www/include/vendor/pdfjs/web/locale/wo/viewer.properties new file mode 100644 index 0000000..71b23cb --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/wo/viewer.properties @@ -0,0 +1,123 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Xët wi jiitu +previous_label=Bi jiitu +next.title=Xët wi ci topp +next_label=Bi ci topp + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. + +zoom_out.title=Wàññi +zoom_out_label=Wàññi +zoom_in.title=Yaatal +zoom_in_label=Yaatal +zoom.title=Yambalaŋ +presentation_mode.title=Wañarñil ci anamu wone +presentation_mode_label=Anamu Wone +open_file.title=Ubbi benn dencukaay +open_file_label=Ubbi +print.title=Móol +print_label=Móol +download.title=Yeb yi +download_label=Yeb yi +bookmark.title=Wone bi taxaw (duppi walla ubbi palanteer bu bees) +bookmark_label=Wone bi feeñ + +# Secondary toolbar and context menu + + +# Document properties dialog box +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_title=Bopp: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. + +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +thumbs.title=Wone nataal yu ndaw yi +thumbs_label=Nataal yu ndaw yi +findbar.title=Gis ci biir jukki bi +findbar_label=Wut + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Xët {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Wiñet bu xët {{page}} + +# Find panel button title and messages +find_previous.title=Seet beneen kaddu bu ni mel te jiitu +find_previous_label=Bi jiitu +find_next.title=Seet beneen kaddu bu ni mel +find_next_label=Bi ci topp +find_highlight=Melaxal lépp +find_match_case_label=Sàmm jëmmalin wi +find_reached_top=Jot nañu ndorteel xët wi, kontine dale ko ci suuf +find_reached_bottom=Jot nañu jeexitalu xët wi, kontine ci ndorte +find_not_found=Gisiñu kaddu gi + +# Error panel labels +error_more_info=Xibaar yu gën bari +error_less_info=Xibaar yu gën bari +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Bataaxal: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Juug: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Dencukaay: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Rëdd : {{line}} +rendering_error=Am njumte bu am bi xët bi di wonewu. + +# Predefined zoom values +page_scale_width=Yaatuwaay bu mët +page_scale_fit=Xët lëmm +page_scale_auto=Yambalaŋ ci saa si +page_scale_actual=Dayo bi am +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. + +loading_error=Am na njumte ci yebum dencukaay PDF bi. +invalid_file_error=Dencukaay PDF bi baaxul walla mu sankar. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Karmat {{type}}] +password_ok=OK +password_cancel=Neenal + +printing_not_supported=Artu: Joowkat bii nanguwul lool mool. + diff --git a/www/include/vendor/pdfjs/web/locale/xh/viewer.properties b/www/include/vendor/pdfjs/web/locale/xh/viewer.properties new file mode 100644 index 0000000..0bb9e88 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/xh/viewer.properties @@ -0,0 +1,177 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Iphepha langaphambili +previous_label=Okwangaphambili +next.title=Iphepha elilandelayo +next_label=Okulandelayo + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Iphepha +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=kwali- {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} kwali {{pagesCount}}) + +zoom_out.title=Bhekelisela Kudana +zoom_out_label=Bhekelisela Kudana +zoom_in.title=Sondeza Kufuphi +zoom_in_label=Sondeza Kufuphi +zoom.title=Yandisa / Nciphisa +presentation_mode.title=Tshintshela kwimo yonikezelo +presentation_mode_label=Imo yonikezelo +open_file.title=Vula Ifayile +open_file_label=Vula +print.title=Printa +print_label=Printa +download.title=Khuphela +download_label=Khuphela +bookmark.title=Imbonakalo ekhoyo (kopa okanye vula kwifestile entsha) +bookmark_label=Imbonakalo ekhoyo + +# Secondary toolbar and context menu +tools.title=Izixhobo zemiyalelo +tools_label=Izixhobo zemiyalelo +first_page.title=Yiya kwiphepha lokuqala +first_page_label=Yiya kwiphepha lokuqala +last_page.title=Yiya kwiphepha lokugqibela +last_page_label=Yiya kwiphepha lokugqibela +page_rotate_cw.title=Jikelisa ngasekunene +page_rotate_cw_label=Jikelisa ngasekunene +page_rotate_ccw.title=Jikelisa ngasekhohlo +page_rotate_ccw_label=Jikelisa ngasekhohlo + +cursor_text_select_tool.title=Vumela iSixhobo sokuKhetha iTeksti +cursor_text_select_tool_label=ISixhobo sokuKhetha iTeksti +cursor_hand_tool.title=Yenza iSixhobo seSandla siSebenze +cursor_hand_tool_label=ISixhobo seSandla + +# Document properties dialog box +document_properties.title=Iipropati zoxwebhu… +document_properties_label=Iipropati zoxwebhu… +document_properties_file_name=Igama lefayile: +document_properties_file_size=Isayizi yefayile: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB (iibhayiti{{size_b}}) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB (iibhayithi{{size_b}}) +document_properties_title=Umxholo: +document_properties_author=Umbhali: +document_properties_subject=Umbandela: +document_properties_keywords=Amagama aphambili: +document_properties_creation_date=Umhla wokwenziwa kwayo: +document_properties_modification_date=Umhla wokulungiswa kwayo: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Umntu oyenzileyo: +document_properties_producer=Umvelisi we-PDF: +document_properties_version=Uhlelo lwe-PDF: +document_properties_page_count=Inani lamaphepha: +document_properties_close=Vala + +print_progress_message=Ilungisa uxwebhu ukuze iprinte… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Rhoxisa + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Togola ngebha eseCaleni +toggle_sidebar_label=Togola ngebha eseCaleni +document_outline.title=Bonisa uLwandlalo loXwebhu (cofa kabini ukuze wandise/diliza zonke izinto) +document_outline_label=Isishwankathelo soxwebhu +attachments.title=Bonisa iziqhotyoshelwa +attachments_label=Iziqhoboshelo +thumbs.title=Bonisa ukrobiso kumfanekiso +thumbs_label=Ukrobiso kumfanekiso +findbar.title=Fumana kuXwebhu +findbar_label=Fumana + +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Iphepha {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Ukrobiso kumfanekiso wephepha {{page}} + +# Find panel button title and messages +find_input.title=Fumana +find_input.placeholder=Fumana kuXwebhu… +find_previous.title=Fumanisa isenzeko sangaphambili sebinzana lamagama +find_previous_label=Okwangaphambili +find_next.title=Fumanisa isenzeko esilandelayo sebinzana lamagama +find_next_label=Okulandelayo +find_highlight=Qaqambisa konke +find_match_case_label=Tshatisa ngobukhulu bukanobumba +find_reached_top=Ufike ngaphezulu ephepheni, kusukwa ngezantsi +find_reached_bottom=Ufike ekupheleni kwephepha, kusukwa ngaphezulu +find_not_found=Ibinzana alifunyenwanga + +# Error panel labels +error_more_info=Inkcazelo Engakumbi +error_less_info=Inkcazelo Encinane +error_close=Vala +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=I-PDF.js v{{version}} (yakha: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Umyalezo: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Imfumba: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Ifayile: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Umgca: {{line}} +rendering_error=Imposiso yenzekile xa bekunikezelwa iphepha. + +# Predefined zoom values +page_scale_width=Ububanzi bephepha +page_scale_fit=Ukulinganiswa kwephepha +page_scale_auto=Ukwandisa/Ukunciphisa Ngokwayo +page_scale_actual=Ubungakanani bokwenene +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +loading_error=Imposiso yenzekile xa kulayishwa i-PDF. +invalid_file_error=Ifayile ye-PDF engeyiyo okanye eyonakalisiweyo. +missing_file_error=Ifayile ye-PDF edukileyo. +unexpected_response_error=Impendulo yeseva engalindelekanga. + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} Ubhalo-nqaku] +password_label=Faka ipasiwedi ukuze uvule le fayile yePDF. +password_invalid=Ipasiwedi ayisebenzi. Nceda uzame kwakhona. +password_ok=KULUNGILE +password_cancel=Rhoxisa + +printing_not_supported=Isilumkiso: Ukuprinta akuxhaswa ngokupheleleyo yile bhrawuza. +printing_not_ready=Isilumkiso: IPDF ayihlohlwanga ngokupheleleyo ukwenzela ukuprinta. +web_fonts_disabled=Iifonti zewebhu ziqhwalelisiwe: ayikwazi ukusebenzisa iifonti ze-PDF ezincanyathelisiweyo. + diff --git a/www/include/vendor/pdfjs/web/locale/zh-CN/viewer.properties b/www/include/vendor/pdfjs/web/locale/zh-CN/viewer.properties new file mode 100644 index 0000000..4092fc8 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/zh-CN/viewer.properties @@ -0,0 +1,279 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=上一页 +previous_label=上一页 +next.title=下一页 +next_label=下一页 + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=页面 +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=/ {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} / {{pagesCount}}) + +zoom_out.title=缩小 +zoom_out_label=缩小 +zoom_in.title=放大 +zoom_in_label=放大 +zoom.title=缩放 +presentation_mode.title=切换到演示模式 +presentation_mode_label=演示模式 +open_file.title=打开文件 +open_file_label=打开 +print.title=打印 +print_label=打印 +download.title=下载 +download_label=下载 +bookmark.title=当前在看的内容(复制或在新窗口中打开) +bookmark_label=当前在看 + +save.title=保存 +save_label=保存 +bookmark1.title=当前页面(在当前页面查看 URL) +bookmark1_label=当前页面 + +# Secondary toolbar and context menu +tools.title=工具 +tools_label=工具 +first_page.title=转到第一页 +first_page_label=转到第一页 +last_page.title=转到最后一页 +last_page_label=转到最后一页 +page_rotate_cw.title=顺时针旋转 +page_rotate_cw_label=顺时针旋转 +page_rotate_ccw.title=逆时针旋转 +page_rotate_ccw_label=逆时针旋转 + +cursor_text_select_tool.title=启用文本选择工具 +cursor_text_select_tool_label=文本选择工具 +cursor_hand_tool.title=启用手形工具 +cursor_hand_tool_label=手形工具 + +scroll_page.title=使用页面滚动 +scroll_page_label=页面滚动 +scroll_vertical.title=使用垂直滚动 +scroll_vertical_label=垂直滚动 +scroll_horizontal.title=使用水平滚动 +scroll_horizontal_label=水平滚动 +scroll_wrapped.title=使用平铺滚动 +scroll_wrapped_label=平铺滚动 + +spread_none.title=不加入衔接页 +spread_none_label=单页视图 +spread_odd.title=加入衔接页使奇数页作为起始页 +spread_odd_label=双页视图 +spread_even.title=加入衔接页使偶数页作为起始页 +spread_even_label=书籍视图 + +# Document properties dialog box +document_properties.title=文档属性… +document_properties_label=文档属性… +document_properties_file_name=文件名: +document_properties_file_size=文件大小: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} 字节) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} 字节) +document_properties_title=标题: +document_properties_author=作者: +document_properties_subject=主题: +document_properties_keywords=关键词: +document_properties_creation_date=创建日期: +document_properties_modification_date=修改日期: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=创建者: +document_properties_producer=PDF 生成器: +document_properties_version=PDF 版本: +document_properties_page_count=页数: +document_properties_page_size=页面大小: +document_properties_page_size_unit_inches=英寸 +document_properties_page_size_unit_millimeters=毫米 +document_properties_page_size_orientation_portrait=纵向 +document_properties_page_size_orientation_landscape=横向 +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=文本 +document_properties_page_size_name_legal=法律 +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}}({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}}({{name}},{{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=快速 Web 视图: +document_properties_linearized_yes=是 +document_properties_linearized_no=否 +document_properties_close=关闭 + +print_progress_message=正在准备打印文档… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=取消 + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=切换侧栏 +toggle_sidebar_notification2.title=切换侧栏(文档所含的大纲/附件/图层) +toggle_sidebar_label=切换侧栏 +document_outline.title=显示文档大纲(双击展开/折叠所有项) +document_outline_label=文档大纲 +attachments.title=显示附件 +attachments_label=附件 +layers.title=显示图层(双击即可将所有图层重置为默认状态) +layers_label=图层 +thumbs.title=显示缩略图 +thumbs_label=缩略图 +current_outline_item.title=查找当前大纲项目 +current_outline_item_label=当前大纲项目 +findbar.title=在文档中查找 +findbar_label=查找 + +additional_layers=其他图层 +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=第 {{page}} 页 +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=第 {{page}} 页 +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=页面 {{page}} 的缩略图 + +# Find panel button title and messages +find_input.title=查找 +find_input.placeholder=在文档中查找… +find_previous.title=查找词语上一次出现的位置 +find_previous_label=上一页 +find_next.title=查找词语后一次出现的位置 +find_next_label=下一页 +find_highlight=全部高亮显示 +find_match_case_label=区分大小写 +find_match_diacritics_label=匹配变音符号 +find_entire_word_label=全词匹配 +find_reached_top=到达文档开头,从末尾继续 +find_reached_bottom=到达文档末尾,从开头继续 +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]=第 {{current}} 项,共匹配 {{total}} 项 +find_match_count[two]=第 {{current}} 项,共匹配 {{total}} 项 +find_match_count[few]=第 {{current}} 项,共匹配 {{total}} 项 +find_match_count[many]=第 {{current}} 项,共匹配 {{total}} 项 +find_match_count[other]=第 {{current}} 项,共匹配 {{total}} 项 +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=超过 {{limit}} 项匹配 +find_match_count_limit[one]=超过 {{limit}} 项匹配 +find_match_count_limit[two]=超过 {{limit}} 项匹配 +find_match_count_limit[few]=超过 {{limit}} 项匹配 +find_match_count_limit[many]=超过 {{limit}} 项匹配 +find_match_count_limit[other]=超过 {{limit}} 项匹配 +find_not_found=找不到指定词语 + +# Error panel labels +error_more_info=更多信息 +error_less_info=更少信息 +error_close=关闭 +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=信息:{{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=堆栈:{{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=文件:{{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=行号:{{line}} + +# Predefined zoom values +page_scale_width=适合页宽 +page_scale_fit=适合页面 +page_scale_auto=自动缩放 +page_scale_actual=实际大小 +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=正在载入… + +# Loading indicator messages +loading_error=载入 PDF 时发生错误。 +invalid_file_error=无效或损坏的 PDF 文件。 +missing_file_error=缺少 PDF 文件。 +unexpected_response_error=意外的服务器响应。 + +rendering_error=渲染页面时发生错误。 + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}},{{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} 注释] +password_label=输入密码以打开此 PDF 文件。 +password_invalid=密码无效。请重试。 +password_ok=确定 +password_cancel=取消 + +printing_not_supported=警告:此浏览器尚未完整支持打印功能。 +printing_not_ready=警告:此 PDF 未完成载入,无法打印。 +web_fonts_disabled=Web 字体已被禁用:无法使用嵌入的 PDF 字体。 + +# Editor +editor_free_text2.title=文本 +editor_free_text2_label=文本 +editor_ink2.title=绘图 +editor_ink2_label=绘图 + +free_text2_default_content=开始输入… + +# Editor Parameters +editor_free_text_color=颜色 +editor_free_text_size=字号 +editor_ink_color=颜色 +editor_ink_thickness=粗细 +editor_ink_opacity=不透明度 + +# Editor aria +editor_free_text2_aria_label=文本编辑器 +editor_ink2_aria_label=绘图编辑器 +editor_ink_canvas_aria_label=用户创建图像 diff --git a/www/include/vendor/pdfjs/web/locale/zh-TW/viewer.properties b/www/include/vendor/pdfjs/web/locale/zh-TW/viewer.properties new file mode 100644 index 0000000..89339a5 --- /dev/null +++ b/www/include/vendor/pdfjs/web/locale/zh-TW/viewer.properties @@ -0,0 +1,277 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=上一頁 +previous_label=上一頁 +next.title=下一頁 +next_label=下一頁 + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=第 +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=頁,共 {{pagesCount}} 頁 +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=(第 {{pageNumber}} 頁,共 {{pagesCount}} 頁) + +zoom_out.title=縮小 +zoom_out_label=縮小 +zoom_in.title=放大 +zoom_in_label=放大 +zoom.title=縮放 +presentation_mode.title=切換至簡報模式 +presentation_mode_label=簡報模式 +open_file.title=開啟檔案 +open_file_label=開啟 +print.title=列印 +print_label=列印 +download.title=下載 +download_label=下載 +save.title=儲存 +save_label=儲存 +bookmark.title=目前畫面(複製或開啟於新視窗) +bookmark_label=目前畫面 + +bookmark1.title=目前頁面(含目前檢視頁面的網址) +bookmark1_label=目前頁面 + +# Secondary toolbar and context menu +tools.title=工具 +tools_label=工具 +first_page.title=跳到第一頁 +first_page_label=跳到第一頁 +last_page.title=跳到最後一頁 +last_page_label=跳到最後一頁 +page_rotate_cw.title=順時針旋轉 +page_rotate_cw_label=順時針旋轉 +page_rotate_ccw.title=逆時針旋轉 +page_rotate_ccw_label=逆時針旋轉 + +cursor_text_select_tool.title=開啟文字選擇工具 +cursor_text_select_tool_label=文字選擇工具 +cursor_hand_tool.title=開啟頁面移動工具 +cursor_hand_tool_label=頁面移動工具 + +scroll_page.title=使用頁面捲動功能 +scroll_page_label=頁面捲動功能 +scroll_vertical.title=使用垂直捲動版面 +scroll_vertical_label=垂直捲動 +scroll_horizontal.title=使用水平捲動版面 +scroll_horizontal_label=水平捲動 +scroll_wrapped.title=使用多頁捲動版面 +scroll_wrapped_label=多頁捲動 + +spread_none.title=不要進行跨頁顯示 +spread_none_label=不跨頁 +spread_odd.title=從奇數頁開始跨頁 +spread_odd_label=奇數跨頁 +spread_even.title=從偶數頁開始跨頁 +spread_even_label=偶數跨頁 + +# Document properties dialog box +document_properties.title=文件內容… +document_properties_label=文件內容… +document_properties_file_name=檔案名稱: +document_properties_file_size=檔案大小: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB({{size_b}} 位元組) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB({{size_b}} 位元組) +document_properties_title=標題: +document_properties_author=作者: +document_properties_subject=主旨: +document_properties_keywords=關鍵字: +document_properties_creation_date=建立日期: +document_properties_modification_date=修改日期: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}} {{time}} +document_properties_creator=建立者: +document_properties_producer=PDF 產生器: +document_properties_version=PDF 版本: +document_properties_page_count=頁數: +document_properties_page_size=頁面大小: +document_properties_page_size_unit_inches=in +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=垂直 +document_properties_page_size_orientation_landscape=水平 +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letter +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}}({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}}({{name}},{{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=快速 Web 檢視: +document_properties_linearized_yes=是 +document_properties_linearized_no=否 +document_properties_close=關閉 + +print_progress_message=正在準備列印文件… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=取消 + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=切換側邊欄 +toggle_sidebar_notification2.title=切換側邊欄(包含大綱、附件、圖層的文件) +toggle_sidebar_label=切換側邊欄 +document_outline.title=顯示文件大綱(雙擊展開/摺疊所有項目) +document_outline_label=文件大綱 +attachments.title=顯示附件 +attachments_label=附件 +layers.title=顯示圖層(滑鼠雙擊即可將所有圖層重設為預設狀態) +layers_label=圖層 +thumbs.title=顯示縮圖 +thumbs_label=縮圖 +current_outline_item.title=尋找目前的大綱項目 +current_outline_item_label=目前的大綱項目 +findbar.title=在文件中尋找 +findbar_label=尋找 + +additional_layers=其他圖層 +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=第 {{page}} 頁 +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=第 {{page}} 頁 +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=第 {{page}} 頁的縮圖 + +# Find panel button title and messages +find_input.title=尋找 +find_input.placeholder=在文件中搜尋… +find_previous.title=尋找文字前次出現的位置 +find_previous_label=上一個 +find_next.title=尋找文字下次出現的位置 +find_next_label=下一個 +find_highlight=全部強調標示 +find_match_case_label=區分大小寫 +find_match_diacritics_label=符合變音符號 +find_entire_word_label=符合整個字 +find_reached_top=已搜尋至文件頂端,自底端繼續搜尋 +find_reached_bottom=已搜尋至文件底端,自頂端繼續搜尋 +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]=第 {{current}} 筆,共找到 {{total}} 筆 +find_match_count[two]=第 {{current}} 筆,共找到 {{total}} 筆 +find_match_count[few]=第 {{current}} 筆,共找到 {{total}} 筆 +find_match_count[many]=第 {{current}} 筆,共找到 {{total}} 筆 +find_match_count[other]=第 {{current}} 筆,共找到 {{total}} 筆 +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=找到超過 {{limit}} 筆 +find_match_count_limit[one]=找到超過 {{limit}} 筆 +find_match_count_limit[two]=找到超過 {{limit}} 筆 +find_match_count_limit[few]=找到超過 {{limit}} 筆 +find_match_count_limit[many]=找到超過 {{limit}} 筆 +find_match_count_limit[other]=找到超過 {{limit}} 筆 +find_not_found=找不到指定文字 + +# Error panel labels +error_more_info=更多資訊 +error_less_info=更少資訊 +error_close=關閉 +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=訊息: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=堆疊: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=檔案: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=行: {{line}} + +# Predefined zoom values +page_scale_width=頁面寬度 +page_scale_fit=縮放至頁面大小 +page_scale_auto=自動縮放 +page_scale_actual=實際大小 +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=載入中… +loading_error=載入 PDF 時發生錯誤。 +invalid_file_error=無效或毀損的 PDF 檔案。 +missing_file_error=找不到 PDF 檔案。 +unexpected_response_error=伺服器回應未預期的內容。 + +rendering_error=描繪頁面時發生錯誤。 + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}} {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} 註解] +password_label=請輸入用來開啟此 PDF 檔案的密碼。 +password_invalid=密碼不正確,請再試一次。 +password_ok=確定 +password_cancel=取消 + +printing_not_supported=警告: 此瀏覽器未完整支援列印功能。 +printing_not_ready=警告: 此 PDF 未完成下載以供列印。 +web_fonts_disabled=已停用網路字型 (Web fonts): 無法使用 PDF 內嵌字型。 + +# Editor +editor_free_text2.title=文字 +editor_free_text2_label=文字 +editor_ink2.title=繪圖 +editor_ink2_label=繪圖 + +free_text2_default_content=開始打字… + +# Editor Parameters +editor_free_text_color=色彩 +editor_free_text_size=大小 +editor_ink_color=色彩 +editor_ink_thickness=線條粗細 +editor_ink_opacity=透​明度 + +# Editor aria +editor_free_text2_aria_label=文本編輯器 +editor_ink2_aria_label=圖形編輯器 +editor_ink_canvas_aria_label=使用者建立的圖片 diff --git a/www/include/vendor/pdfjs/web/scrollZoom.js b/www/include/vendor/pdfjs/web/scrollZoom.js new file mode 100644 index 0000000..ef37167 --- /dev/null +++ b/www/include/vendor/pdfjs/web/scrollZoom.js @@ -0,0 +1,18 @@ +const img = document.querySelector('#previewImage'); +let scale = 1; + +document.addEventListener('wheel', (event) => { + if (event.ctrlKey) { + event.preventDefault(); + const scaleAmount = 0.1; + if (event.deltaY < 0) { + scale += scaleAmount; + } else { + scale -= scaleAmount; + if (scale < scaleAmount) { + scale = scaleAmount; + } + } + img.style.transform = `scale(${scale})`; + } +}, { passive: false }); diff --git a/www/include/vendor/pdfjs/web/standard_fonts/FoxitDingbats.pfb b/www/include/vendor/pdfjs/web/standard_fonts/FoxitDingbats.pfb new file mode 100644 index 0000000..30d5296 Binary files /dev/null and b/www/include/vendor/pdfjs/web/standard_fonts/FoxitDingbats.pfb differ diff --git a/www/include/vendor/pdfjs/web/standard_fonts/FoxitFixed.pfb b/www/include/vendor/pdfjs/web/standard_fonts/FoxitFixed.pfb new file mode 100644 index 0000000..f12dcbc Binary files /dev/null and b/www/include/vendor/pdfjs/web/standard_fonts/FoxitFixed.pfb differ diff --git a/www/include/vendor/pdfjs/web/standard_fonts/FoxitFixedBold.pfb b/www/include/vendor/pdfjs/web/standard_fonts/FoxitFixedBold.pfb new file mode 100644 index 0000000..cf8e24a Binary files /dev/null and b/www/include/vendor/pdfjs/web/standard_fonts/FoxitFixedBold.pfb differ diff --git a/www/include/vendor/pdfjs/web/standard_fonts/FoxitFixedBoldItalic.pfb b/www/include/vendor/pdfjs/web/standard_fonts/FoxitFixedBoldItalic.pfb new file mode 100644 index 0000000..d288001 Binary files /dev/null and b/www/include/vendor/pdfjs/web/standard_fonts/FoxitFixedBoldItalic.pfb differ diff --git a/www/include/vendor/pdfjs/web/standard_fonts/FoxitFixedItalic.pfb b/www/include/vendor/pdfjs/web/standard_fonts/FoxitFixedItalic.pfb new file mode 100644 index 0000000..d71697d Binary files /dev/null and b/www/include/vendor/pdfjs/web/standard_fonts/FoxitFixedItalic.pfb differ diff --git a/www/include/vendor/pdfjs/web/standard_fonts/FoxitSans.pfb b/www/include/vendor/pdfjs/web/standard_fonts/FoxitSans.pfb new file mode 100644 index 0000000..37f244b Binary files /dev/null and b/www/include/vendor/pdfjs/web/standard_fonts/FoxitSans.pfb differ diff --git a/www/include/vendor/pdfjs/web/standard_fonts/FoxitSansBold.pfb b/www/include/vendor/pdfjs/web/standard_fonts/FoxitSansBold.pfb new file mode 100644 index 0000000..affcf31 Binary files /dev/null and b/www/include/vendor/pdfjs/web/standard_fonts/FoxitSansBold.pfb differ diff --git a/www/include/vendor/pdfjs/web/standard_fonts/FoxitSansBoldItalic.pfb b/www/include/vendor/pdfjs/web/standard_fonts/FoxitSansBoldItalic.pfb new file mode 100644 index 0000000..e1f60b7 Binary files /dev/null and b/www/include/vendor/pdfjs/web/standard_fonts/FoxitSansBoldItalic.pfb differ diff --git a/www/include/vendor/pdfjs/web/standard_fonts/FoxitSansItalic.pfb b/www/include/vendor/pdfjs/web/standard_fonts/FoxitSansItalic.pfb new file mode 100644 index 0000000..c04b0a5 Binary files /dev/null and b/www/include/vendor/pdfjs/web/standard_fonts/FoxitSansItalic.pfb differ diff --git a/www/include/vendor/pdfjs/web/standard_fonts/FoxitSerif.pfb b/www/include/vendor/pdfjs/web/standard_fonts/FoxitSerif.pfb new file mode 100644 index 0000000..3fa682e Binary files /dev/null and b/www/include/vendor/pdfjs/web/standard_fonts/FoxitSerif.pfb differ diff --git a/www/include/vendor/pdfjs/web/standard_fonts/FoxitSerifBold.pfb b/www/include/vendor/pdfjs/web/standard_fonts/FoxitSerifBold.pfb new file mode 100644 index 0000000..ff7c6dd Binary files /dev/null and b/www/include/vendor/pdfjs/web/standard_fonts/FoxitSerifBold.pfb differ diff --git a/www/include/vendor/pdfjs/web/standard_fonts/FoxitSerifBoldItalic.pfb b/www/include/vendor/pdfjs/web/standard_fonts/FoxitSerifBoldItalic.pfb new file mode 100644 index 0000000..460231f Binary files /dev/null and b/www/include/vendor/pdfjs/web/standard_fonts/FoxitSerifBoldItalic.pfb differ diff --git a/www/include/vendor/pdfjs/web/standard_fonts/FoxitSerifItalic.pfb b/www/include/vendor/pdfjs/web/standard_fonts/FoxitSerifItalic.pfb new file mode 100644 index 0000000..d03a7c7 Binary files /dev/null and b/www/include/vendor/pdfjs/web/standard_fonts/FoxitSerifItalic.pfb differ diff --git a/www/include/vendor/pdfjs/web/standard_fonts/FoxitSymbol.pfb b/www/include/vendor/pdfjs/web/standard_fonts/FoxitSymbol.pfb new file mode 100644 index 0000000..c8f9bca Binary files /dev/null and b/www/include/vendor/pdfjs/web/standard_fonts/FoxitSymbol.pfb differ diff --git a/www/include/vendor/pdfjs/web/standard_fonts/LICENSE_FOXIT b/www/include/vendor/pdfjs/web/standard_fonts/LICENSE_FOXIT new file mode 100644 index 0000000..8b4ed6d --- /dev/null +++ b/www/include/vendor/pdfjs/web/standard_fonts/LICENSE_FOXIT @@ -0,0 +1,27 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/www/include/vendor/pdfjs/web/standard_fonts/LICENSE_LIBERATION b/www/include/vendor/pdfjs/web/standard_fonts/LICENSE_LIBERATION new file mode 100644 index 0000000..aba73e8 --- /dev/null +++ b/www/include/vendor/pdfjs/web/standard_fonts/LICENSE_LIBERATION @@ -0,0 +1,102 @@ +Digitized data copyright (c) 2010 Google Corporation + with Reserved Font Arimo, Tinos and Cousine. +Copyright (c) 2012 Red Hat, Inc. + with Reserved Font Name Liberation. + +This Font Software is licensed under the SIL Open Font License, +Version 1.1. + +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 + +PREAMBLE The goals of the Open Font License (OFL) are to stimulate +worldwide development of collaborative font projects, to support the font +creation efforts of academic and linguistic communities, and to provide +a free and open framework in which fonts may be shared and improved in +partnership with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. +The fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply to +any document created using the fonts or their derivatives. + + + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. +This may include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components +as distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting ? in part or in whole ? +any of the components of the Original Version, by changing formats or +by porting the Font Software to a new environment. + +"Author" refers to any designer, engineer, programmer, technical writer +or other person who contributed to the Font Software. + + +PERMISSION & CONDITIONS + +Permission is hereby granted, free of charge, to any person obtaining a +copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components,in + Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, + redistributed and/or sold with any software, provided that each copy + contains the above copyright notice and this license. These can be + included either as stand-alone text files, human-readable headers or + in the appropriate machine-readable metadata fields within text or + binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font + Name(s) unless explicit written permission is granted by the + corresponding Copyright Holder. This restriction only applies to the + primary font name as presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font + Software shall not be used to promote, endorse or advertise any + Modified Version, except to acknowledge the contribution(s) of the + Copyright Holder(s) and the Author(s) or with their explicit written + permission. + +5) The Font Software, modified or unmodified, in part or in whole, must + be distributed entirely under this license, and must not be distributed + under any other license. The requirement for fonts to remain under + this license does not apply to any document created using the Font + Software. + + + +TERMINATION +This license becomes null and void if any of the above conditions are not met. + + + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER +DEALINGS IN THE FONT SOFTWARE. + diff --git a/www/include/vendor/pdfjs/web/standard_fonts/LiberationSans-Bold.ttf b/www/include/vendor/pdfjs/web/standard_fonts/LiberationSans-Bold.ttf new file mode 100644 index 0000000..ee23715 Binary files /dev/null and b/www/include/vendor/pdfjs/web/standard_fonts/LiberationSans-Bold.ttf differ diff --git a/www/include/vendor/pdfjs/web/standard_fonts/LiberationSans-BoldItalic.ttf b/www/include/vendor/pdfjs/web/standard_fonts/LiberationSans-BoldItalic.ttf new file mode 100644 index 0000000..42b5717 Binary files /dev/null and b/www/include/vendor/pdfjs/web/standard_fonts/LiberationSans-BoldItalic.ttf differ diff --git a/www/include/vendor/pdfjs/web/standard_fonts/LiberationSans-Italic.ttf b/www/include/vendor/pdfjs/web/standard_fonts/LiberationSans-Italic.ttf new file mode 100644 index 0000000..0cf6126 Binary files /dev/null and b/www/include/vendor/pdfjs/web/standard_fonts/LiberationSans-Italic.ttf differ diff --git a/www/include/vendor/pdfjs/web/standard_fonts/LiberationSans-Regular.ttf b/www/include/vendor/pdfjs/web/standard_fonts/LiberationSans-Regular.ttf new file mode 100644 index 0000000..366d148 Binary files /dev/null and b/www/include/vendor/pdfjs/web/standard_fonts/LiberationSans-Regular.ttf differ diff --git a/www/include/vendor/pdfjs/web/viewer.css b/www/include/vendor/pdfjs/web/viewer.css new file mode 100644 index 0000000..5087ce7 --- /dev/null +++ b/www/include/vendor/pdfjs/web/viewer.css @@ -0,0 +1,2691 @@ +/* Copyright 2014 Mozilla Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +:root { + --highlight-bg-color: rgba(180, 0, 170, 1); + --highlight-selected-bg-color: rgba(0, 100, 0, 1); +} + +@media screen and (forced-colors: active) { + :root { + --highlight-bg-color: Highlight; + --highlight-selected-bg-color: ButtonText; + } +} + +.textLayer { + position: absolute; + text-align: initial; + inset: 0; + overflow: hidden; + opacity: 0.25; + line-height: 1; + -webkit-text-size-adjust: none; + -moz-text-size-adjust: none; + text-size-adjust: none; + forced-color-adjust: none; + transform-origin: 0 0; + z-index: 2; +} + +.textLayer span, +.textLayer br { + color: transparent; + position: absolute; + white-space: pre; + cursor: text; + transform-origin: 0% 0%; +} + +/* Only necessary in Google Chrome, see issue 14205, and most unfortunately + * the problem doesn't show up in "text" reference tests. */ +.textLayer span.markedContent { + top: 0; + height: 0; +} + +.textLayer .highlight { + margin: -1px; + padding: 1px; + background-color: var(--highlight-bg-color); + border-radius: 4px; +} + +.textLayer .highlight.appended { + position: initial; +} + +.textLayer .highlight.begin { + border-radius: 4px 0 0 4px; +} + +.textLayer .highlight.end { + border-radius: 0 4px 4px 0; +} + +.textLayer .highlight.middle { + border-radius: 0; +} + +.textLayer .highlight.selected { + background-color: var(--highlight-selected-bg-color); +} + +.textLayer ::-moz-selection { + background: blue; + background: AccentColor; +} + +.textLayer ::selection { + background: blue; + background: AccentColor; +} + +/* Avoids https://github.com/mozilla/pdf.js/issues/13840 in Chrome */ +.textLayer br::-moz-selection { + background: transparent; +} +.textLayer br::selection { + background: transparent; +} + +.textLayer .endOfContent { + display: block; + position: absolute; + inset: 100% 0 0; + z-index: -1; + cursor: default; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.textLayer .endOfContent.active { + top: 0; +} + + +:root { + --annotation-unfocused-field-background: url("data:image/svg+xml;charset=UTF-8,"); + --input-focus-border-color: Highlight; + --input-focus-outline: 1px solid Canvas; + --input-unfocused-border-color: transparent; + --input-disabled-border-color: transparent; + --input-hover-border-color: black; + --link-outline: none; +} + +@media screen and (forced-colors: active) { + :root { + --input-focus-border-color: CanvasText; + --input-unfocused-border-color: ActiveText; + --input-disabled-border-color: GrayText; + --input-hover-border-color: Highlight; + --link-outline: 1.5px solid LinkText; + } + .annotationLayer .textWidgetAnnotation input:required, + .annotationLayer .textWidgetAnnotation textarea:required, + .annotationLayer .choiceWidgetAnnotation select:required, + .annotationLayer .buttonWidgetAnnotation.checkBox input:required, + .annotationLayer .buttonWidgetAnnotation.radioButton input:required { + outline: 1.5px solid selectedItem; + } + + .annotationLayer .linkAnnotation:hover { + -webkit-backdrop-filter: invert(100%); + backdrop-filter: invert(100%); + } +} + +.annotationLayer { + position: absolute; + top: 0; + left: 0; + pointer-events: none; + transform-origin: 0 0; + z-index: 3; +} + +.annotationLayer[data-main-rotation="90"] .norotate { + transform: rotate(270deg) translateX(-100%); +} +.annotationLayer[data-main-rotation="180"] .norotate { + transform: rotate(180deg) translate(-100%, -100%); +} +.annotationLayer[data-main-rotation="270"] .norotate { + transform: rotate(90deg) translateY(-100%); +} + +.annotationLayer canvas { + position: absolute; + width: 100%; + height: 100%; +} + +.annotationLayer section { + position: absolute; + text-align: initial; + pointer-events: auto; + box-sizing: border-box; + transform-origin: 0 0; +} + +.annotationLayer .linkAnnotation { + outline: var(--link-outline); +} + +.annotationLayer .linkAnnotation > a, +.annotationLayer .buttonWidgetAnnotation.pushButton > a { + position: absolute; + font-size: 1em; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.annotationLayer .linkAnnotation > a:hover, +.annotationLayer .buttonWidgetAnnotation.pushButton > a:hover { + opacity: 0.2; + background: rgba(255, 255, 0, 1); + box-shadow: 0 2px 10px rgba(255, 255, 0, 1); +} + +.annotationLayer .textAnnotation img { + position: absolute; + cursor: pointer; + width: 100%; + height: 100%; + top: 0; + left: 0; +} + +.annotationLayer .textWidgetAnnotation input, +.annotationLayer .textWidgetAnnotation textarea, +.annotationLayer .choiceWidgetAnnotation select, +.annotationLayer .buttonWidgetAnnotation.checkBox input, +.annotationLayer .buttonWidgetAnnotation.radioButton input { + background-image: var(--annotation-unfocused-field-background); + border: 2px solid var(--input-unfocused-border-color); + box-sizing: border-box; + font: calc(9px * var(--scale-factor)) sans-serif; + height: 100%; + margin: 0; + vertical-align: top; + width: 100%; +} + +.annotationLayer .textWidgetAnnotation input:required, +.annotationLayer .textWidgetAnnotation textarea:required, +.annotationLayer .choiceWidgetAnnotation select:required, +.annotationLayer .buttonWidgetAnnotation.checkBox input:required, +.annotationLayer .buttonWidgetAnnotation.radioButton input:required { + outline: 1.5px solid red; +} + +.annotationLayer .choiceWidgetAnnotation select option { + padding: 0; +} + +.annotationLayer .buttonWidgetAnnotation.radioButton input { + border-radius: 50%; +} + +.annotationLayer .textWidgetAnnotation textarea { + resize: none; +} + +.annotationLayer .textWidgetAnnotation input[disabled], +.annotationLayer .textWidgetAnnotation textarea[disabled], +.annotationLayer .choiceWidgetAnnotation select[disabled], +.annotationLayer .buttonWidgetAnnotation.checkBox input[disabled], +.annotationLayer .buttonWidgetAnnotation.radioButton input[disabled] { + background: none; + border: 2px solid var(--input-disabled-border-color); + cursor: not-allowed; +} + +.annotationLayer .textWidgetAnnotation input:hover, +.annotationLayer .textWidgetAnnotation textarea:hover, +.annotationLayer .choiceWidgetAnnotation select:hover, +.annotationLayer .buttonWidgetAnnotation.checkBox input:hover, +.annotationLayer .buttonWidgetAnnotation.radioButton input:hover { + border: 2px solid var(--input-hover-border-color); +} +.annotationLayer .textWidgetAnnotation input:hover, +.annotationLayer .textWidgetAnnotation textarea:hover, +.annotationLayer .choiceWidgetAnnotation select:hover, +.annotationLayer .buttonWidgetAnnotation.checkBox input:hover { + border-radius: 2px; +} + +.annotationLayer .textWidgetAnnotation input:focus, +.annotationLayer .textWidgetAnnotation textarea:focus, +.annotationLayer .choiceWidgetAnnotation select:focus { + background: none; + border: 2px solid var(--input-focus-border-color); + border-radius: 2px; + outline: var(--input-focus-outline); +} + +.annotationLayer .buttonWidgetAnnotation.checkBox :focus, +.annotationLayer .buttonWidgetAnnotation.radioButton :focus { + background-image: none; + background-color: transparent; +} + +.annotationLayer .buttonWidgetAnnotation.checkBox :focus { + border: 2px solid var(--input-focus-border-color); + border-radius: 2px; + outline: var(--input-focus-outline); +} + +.annotationLayer .buttonWidgetAnnotation.radioButton :focus { + border: 2px solid var(--input-focus-border-color); + outline: var(--input-focus-outline); +} + +.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before, +.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after, +.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before { + background-color: CanvasText; + content: ""; + display: block; + position: absolute; +} + +.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before, +.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after { + height: 80%; + left: 45%; + width: 1px; +} + +.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before { + transform: rotate(45deg); +} + +.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after { + transform: rotate(-45deg); +} + +.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before { + border-radius: 50%; + height: 50%; + left: 30%; + top: 20%; + width: 50%; +} + +.annotationLayer .textWidgetAnnotation input.comb { + font-family: monospace; + padding-left: 2px; + padding-right: 0; +} + +.annotationLayer .textWidgetAnnotation input.comb:focus { + /* + * Letter spacing is placed on the right side of each character. Hence, the + * letter spacing of the last character may be placed outside the visible + * area, causing horizontal scrolling. We avoid this by extending the width + * when the element has focus and revert this when it loses focus. + */ + width: 103%; +} + +.annotationLayer .buttonWidgetAnnotation.checkBox input, +.annotationLayer .buttonWidgetAnnotation.radioButton input { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +.annotationLayer .popupTriggerArea { + height: 100%; + width: 100%; +} + +.annotationLayer .fileAttachmentAnnotation .popupTriggerArea { + position: absolute; +} + +.annotationLayer .popupWrapper { + position: absolute; + font-size: calc(9px * var(--scale-factor)); + width: 100%; + min-width: calc(180px * var(--scale-factor)); + pointer-events: none; +} + +.annotationLayer .popup { + position: absolute; + max-width: calc(180px * var(--scale-factor)); + background-color: rgba(255, 255, 153, 1); + box-shadow: 0 calc(2px * var(--scale-factor)) calc(5px * var(--scale-factor)) + rgba(136, 136, 136, 1); + border-radius: calc(2px * var(--scale-factor)); + padding: calc(6px * var(--scale-factor)); + margin-left: calc(5px * var(--scale-factor)); + cursor: pointer; + font: message-box; + white-space: normal; + word-wrap: break-word; + pointer-events: auto; +} + +.annotationLayer .popup > * { + font-size: calc(9px * var(--scale-factor)); +} + +.annotationLayer .popup h1 { + display: inline-block; +} + +.annotationLayer .popupDate { + display: inline-block; + margin-left: calc(5px * var(--scale-factor)); +} + +.annotationLayer .popupContent { + border-top: 1px solid rgba(51, 51, 51, 1); + margin-top: calc(2px * var(--scale-factor)); + padding-top: calc(2px * var(--scale-factor)); +} + +.annotationLayer .richText > * { + white-space: pre-wrap; + font-size: calc(9px * var(--scale-factor)); +} + +.annotationLayer .highlightAnnotation, +.annotationLayer .underlineAnnotation, +.annotationLayer .squigglyAnnotation, +.annotationLayer .strikeoutAnnotation, +.annotationLayer .freeTextAnnotation, +.annotationLayer .lineAnnotation svg line, +.annotationLayer .squareAnnotation svg rect, +.annotationLayer .circleAnnotation svg ellipse, +.annotationLayer .polylineAnnotation svg polyline, +.annotationLayer .polygonAnnotation svg polygon, +.annotationLayer .caretAnnotation, +.annotationLayer .inkAnnotation svg polyline, +.annotationLayer .stampAnnotation, +.annotationLayer .fileAttachmentAnnotation { + cursor: pointer; +} + +.annotationLayer section svg { + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; +} + +.annotationLayer .annotationTextContent { + position: absolute; + width: 100%; + height: 100%; + opacity: 0; + color: transparent; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + pointer-events: none; +} + +.annotationLayer .annotationTextContent span { + width: 100%; + display: inline-block; +} + + +:root { + --xfa-unfocused-field-background: url("data:image/svg+xml;charset=UTF-8,"); + --xfa-focus-outline: auto; +} + +@media screen and (forced-colors: active) { + :root { + --xfa-focus-outline: 2px solid CanvasText; + } + .xfaLayer *:required { + outline: 1.5px solid selectedItem; + } +} + +.xfaLayer { + background-color: transparent; +} + +.xfaLayer .highlight { + margin: -1px; + padding: 1px; + background-color: rgba(239, 203, 237, 1); + border-radius: 4px; +} + +.xfaLayer .highlight.appended { + position: initial; +} + +.xfaLayer .highlight.begin { + border-radius: 4px 0 0 4px; +} + +.xfaLayer .highlight.end { + border-radius: 0 4px 4px 0; +} + +.xfaLayer .highlight.middle { + border-radius: 0; +} + +.xfaLayer .highlight.selected { + background-color: rgba(203, 223, 203, 1); +} + +.xfaPage { + overflow: hidden; + position: relative; +} + +.xfaContentarea { + position: absolute; +} + +.xfaPrintOnly { + display: none; +} + +.xfaLayer { + position: absolute; + text-align: initial; + top: 0; + left: 0; + transform-origin: 0 0; + line-height: 1.2; +} + +.xfaLayer * { + color: inherit; + font: inherit; + font-style: inherit; + font-weight: inherit; + font-kerning: inherit; + letter-spacing: -0.01px; + text-align: inherit; + text-decoration: inherit; + box-sizing: border-box; + background-color: transparent; + padding: 0; + margin: 0; + pointer-events: auto; + line-height: inherit; +} + +.xfaLayer *:required { + outline: 1.5px solid red; +} + +.xfaLayer div { + pointer-events: none; +} + +.xfaLayer svg { + pointer-events: none; +} + +.xfaLayer svg * { + pointer-events: none; +} + +.xfaLayer a { + color: blue; +} + +.xfaRich li { + margin-left: 3em; +} + +.xfaFont { + color: black; + font-weight: normal; + font-kerning: none; + font-size: 10px; + font-style: normal; + letter-spacing: 0; + text-decoration: none; + vertical-align: 0; +} + +.xfaCaption { + overflow: hidden; + flex: 0 0 auto; +} + +.xfaCaptionForCheckButton { + overflow: hidden; + flex: 1 1 auto; +} + +.xfaLabel { + height: 100%; + width: 100%; +} + +.xfaLeft { + display: flex; + flex-direction: row; + align-items: center; +} + +.xfaRight { + display: flex; + flex-direction: row-reverse; + align-items: center; +} + +.xfaLeft > .xfaCaption, +.xfaLeft > .xfaCaptionForCheckButton, +.xfaRight > .xfaCaption, +.xfaRight > .xfaCaptionForCheckButton { + max-height: 100%; +} + +.xfaTop { + display: flex; + flex-direction: column; + align-items: flex-start; +} + +.xfaBottom { + display: flex; + flex-direction: column-reverse; + align-items: flex-start; +} + +.xfaTop > .xfaCaption, +.xfaTop > .xfaCaptionForCheckButton, +.xfaBottom > .xfaCaption, +.xfaBottom > .xfaCaptionForCheckButton { + width: 100%; +} + +.xfaBorder { + background-color: transparent; + position: absolute; + pointer-events: none; +} + +.xfaWrapped { + width: 100%; + height: 100%; +} + +.xfaTextfield:focus, +.xfaSelect:focus { + background-image: none; + background-color: transparent; + outline: var(--xfa-focus-outline); + outline-offset: -1px; +} + +.xfaCheckbox:focus, +.xfaRadio:focus { + outline: var(--xfa-focus-outline); +} + +.xfaTextfield, +.xfaSelect { + height: 100%; + width: 100%; + flex: 1 1 auto; + border: none; + resize: none; + background-image: var(--xfa-unfocused-field-background); +} + +.xfaSelect { + padding-inline: 2px; +} + +.xfaTop > .xfaTextfield, +.xfaTop > .xfaSelect, +.xfaBottom > .xfaTextfield, +.xfaBottom > .xfaSelect { + flex: 0 1 auto; +} + +.xfaButton { + cursor: pointer; + width: 100%; + height: 100%; + border: none; + text-align: center; +} + +.xfaLink { + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; +} + +.xfaCheckbox, +.xfaRadio { + width: 100%; + height: 100%; + flex: 0 0 auto; + border: none; +} + +.xfaRich { + white-space: pre-wrap; + width: 100%; + height: 100%; +} + +.xfaImage { + -o-object-position: left top; + object-position: left top; + -o-object-fit: contain; + object-fit: contain; + width: 100%; + height: 100%; +} + +.xfaLrTb, +.xfaRlTb, +.xfaTb { + display: flex; + flex-direction: column; + align-items: stretch; +} + +.xfaLr { + display: flex; + flex-direction: row; + align-items: stretch; +} + +.xfaRl { + display: flex; + flex-direction: row-reverse; + align-items: stretch; +} + +.xfaTb > div { + justify-content: left; +} + +.xfaPosition { + position: relative; +} + +.xfaArea { + position: relative; +} + +.xfaValignMiddle { + display: flex; + align-items: center; +} + +.xfaTable { + display: flex; + flex-direction: column; + align-items: stretch; +} + +.xfaTable .xfaRow { + display: flex; + flex-direction: row; + align-items: stretch; +} + +.xfaTable .xfaRlRow { + display: flex; + flex-direction: row-reverse; + align-items: stretch; + flex: 1; +} + +.xfaTable .xfaRlRow > div { + flex: 1; +} + +.xfaNonInteractive input, +.xfaNonInteractive textarea, +.xfaDisabled input, +.xfaDisabled textarea, +.xfaReadOnly input, +.xfaReadOnly textarea { + background: initial; +} + +@media print { + .xfaTextfield, + .xfaSelect { + background: transparent; + } + + .xfaSelect { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + text-indent: 1px; + text-overflow: ""; + } +} + + +:root { + --focus-outline: solid 2px blue; + --hover-outline: dashed 2px blue; + --freetext-line-height: 1.35; + --freetext-padding: 2px; + --editorFreeText-editing-cursor: text; + --editorInk-editing-cursor: url(images/cursor-editorInk.svg) 0 16, pointer; +} + +@media (-webkit-min-device-pixel-ratio: 1.1), (min-resolution: 1.1dppx) { + :root { + --editorFreeText-editing-cursor: url(images/cursor-editorFreeText.svg) 0 16, + text; + } +} + +@media screen and (forced-colors: active) { + :root { + --focus-outline: solid 3px ButtonText; + --hover-outline: dashed 3px ButtonText; + } +} + +[data-editor-rotation="90"] { + transform: rotate(90deg); +} +[data-editor-rotation="180"] { + transform: rotate(180deg); +} +[data-editor-rotation="270"] { + transform: rotate(270deg); +} + +.annotationEditorLayer { + background: transparent; + position: absolute; + top: 0; + left: 0; + font-size: calc(100px * var(--scale-factor)); + transform-origin: 0 0; + cursor: auto; + z-index: 4; +} + +.annotationEditorLayer.freeTextEditing { + cursor: var(--editorFreeText-editing-cursor); +} + +.annotationEditorLayer.inkEditing { + cursor: var(--editorInk-editing-cursor); +} + +.annotationEditorLayer :is(.freeTextEditor, .inkEditor)[draggable="true"] { + cursor: move; +} + +.annotationEditorLayer .selectedEditor { + outline: var(--focus-outline); + resize: none; +} + +.annotationEditorLayer .freeTextEditor { + position: absolute; + background: transparent; + border-radius: 3px; + padding: calc(var(--freetext-padding) * var(--scale-factor)); + resize: none; + width: auto; + height: auto; + z-index: 1; + transform-origin: 0 0; + touch-action: none; + cursor: auto; +} + +.annotationEditorLayer .freeTextEditor .internal { + background: transparent; + border: none; + top: 0; + left: 0; + overflow: visible; + white-space: nowrap; + resize: none; + font: 10px sans-serif; + line-height: var(--freetext-line-height); +} + +.annotationEditorLayer .freeTextEditor .overlay { + position: absolute; + display: none; + background: transparent; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.annotationEditorLayer .freeTextEditor .overlay.enabled { + display: block; +} + +.annotationEditorLayer .freeTextEditor .internal:empty::before { + content: attr(default-content); + color: gray; +} + +.annotationEditorLayer .freeTextEditor .internal:focus { + outline: none; +} + +.annotationEditorLayer .inkEditor.disabled { + resize: none; +} + +.annotationEditorLayer .inkEditor.disabled.selectedEditor { + resize: horizontal; +} + +.annotationEditorLayer .freeTextEditor:hover:not(.selectedEditor), +.annotationEditorLayer .inkEditor:hover:not(.selectedEditor) { + outline: var(--hover-outline); +} + +.annotationEditorLayer .inkEditor { + position: absolute; + background: transparent; + border-radius: 3px; + overflow: auto; + width: 100%; + height: 100%; + z-index: 1; + transform-origin: 0 0; + cursor: auto; +} + +.annotationEditorLayer .inkEditor.editing { + resize: none; + cursor: inherit; +} + +.annotationEditorLayer .inkEditor .inkEditorCanvas { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + touch-action: none; +} + +:root { + --viewer-container-height: 0; + --pdfViewer-padding-bottom: 0; + --page-margin: 1px auto -8px; + --page-border: 9px solid transparent; + --spreadHorizontalWrapped-margin-LR: -3.5px; + --loading-icon-delay: 400ms; +} + +@media screen and (forced-colors: active) { + :root { + --pdfViewer-padding-bottom: 9px; + --page-margin: 8px auto -1px; + --page-border: 1px solid CanvasText; + --spreadHorizontalWrapped-margin-LR: 3.5px; + } +} + +[data-main-rotation="90"] { + transform: rotate(90deg) translateY(-100%); +} +[data-main-rotation="180"] { + transform: rotate(180deg) translate(-100%, -100%); +} +[data-main-rotation="270"] { + transform: rotate(270deg) translateX(-100%); +} + +.pdfViewer { + /* Define this variable here and not in :root to avoid to reflow all the UI + when scaling (see #15929). */ + --scale-factor: 1; + + padding-bottom: var(--pdfViewer-padding-bottom); +} + +.pdfViewer .canvasWrapper { + overflow: hidden; + width: 100%; + height: 100%; + z-index: 1; +} + +.pdfViewer .page { + direction: ltr; + width: 816px; + height: 1056px; + margin: var(--page-margin); + position: relative; + overflow: visible; + border: var(--page-border); + background-clip: content-box; + background-color: rgba(255, 255, 255, 1); +} + +.pdfViewer .dummyPage { + position: relative; + width: 0; + height: var(--viewer-container-height); +} + +.pdfViewer.removePageBorders .page { + margin: 0 auto 10px; + border: none; +} + +.pdfViewer.scrollHorizontal, +.pdfViewer.scrollWrapped, +.spread { + margin-inline: 3.5px; + text-align: center; +} + +.pdfViewer.scrollHorizontal, +.spread { + white-space: nowrap; +} + +.pdfViewer.removePageBorders, +.pdfViewer.scrollHorizontal .spread, +.pdfViewer.scrollWrapped .spread { + margin-inline: 0; +} + +.spread .page, +.spread .dummyPage, +.pdfViewer.scrollHorizontal .page, +.pdfViewer.scrollWrapped .page, +.pdfViewer.scrollHorizontal .spread, +.pdfViewer.scrollWrapped .spread { + display: inline-block; + vertical-align: middle; +} + +.spread .page, +.pdfViewer.scrollHorizontal .page, +.pdfViewer.scrollWrapped .page { + margin-inline: var(--spreadHorizontalWrapped-margin-LR); +} + +.pdfViewer.removePageBorders .spread .page, +.pdfViewer.removePageBorders.scrollHorizontal .page, +.pdfViewer.removePageBorders.scrollWrapped .page { + margin-inline: 5px; +} + +.pdfViewer .page canvas { + margin: 0; + display: block; +} + +.pdfViewer .page canvas .structTree { + contain: strict; +} + +.pdfViewer .page canvas[hidden] { + display: none; +} + +.pdfViewer .page canvas[zooming] { + width: 100%; + height: 100%; +} + +.pdfViewer .page.loadingIcon:after { + position: absolute; + top: 0; + left: 0; + content: ""; + width: 100%; + height: 100%; + background: url("images/loading-icon.gif") center no-repeat; + display: none; + /* Using a delay with background-image doesn't work, + consequently we use the display. */ + transition-property: display; + transition-delay: var(--loading-icon-delay); + z-index: 5; + contain: strict; +} + +.pdfViewer .page.loading:after { + display: block; +} + +.pdfViewer .page:not(.loading):after { + transition-property: none; + display: none; +} + +.pdfViewer.enablePermissions .textLayer span { + -webkit-user-select: none !important; + -moz-user-select: none !important; + user-select: none !important; + cursor: not-allowed; +} + +.pdfPresentationMode .pdfViewer { + padding-bottom: 0; +} + +.pdfPresentationMode .spread { + margin: 0; +} + +.pdfPresentationMode .pdfViewer .page { + margin: 0 auto; + border: 2px solid transparent; +} + +:root { + --dir-factor: 1; + --inline-start: left; + --inline-end: right; + + --sidebar-width: 200px; + --sidebar-transition-duration: 200ms; + --sidebar-transition-timing-function: ease; + + --toolbar-icon-opacity: 0.7; + --doorhanger-icon-opacity: 0.9; + + --main-color: rgba(12, 12, 13, 1); + --body-bg-color: rgba(212, 212, 215, 1); + --progressBar-color: rgba(10, 132, 255, 1); + --progressBar-bg-color: rgba(221, 221, 222, 1); + --progressBar-blend-color: rgba(116, 177, 239, 1); + --scrollbar-color: auto; + --scrollbar-bg-color: auto; + --toolbar-icon-bg-color: rgba(0, 0, 0, 1); + --toolbar-icon-hover-bg-color: rgba(0, 0, 0, 1); + + --sidebar-narrow-bg-color: rgba(212, 212, 215, 0.9); + --sidebar-toolbar-bg-color: rgba(245, 246, 247, 1); + --toolbar-bg-color: rgba(249, 249, 250, 1); + --toolbar-border-color: rgba(184, 184, 184, 1); + --toolbar-box-shadow: 0 1px 0 var(--toolbar-border-color); + --toolbar-border-bottom: none; + --toolbarSidebar-box-shadow: inset calc(-1px * var(--dir-factor)) 0 0 + rgba(0, 0, 0, 0.25), + 0 1px 0 rgba(0, 0, 0, 0.15), 0 0 1px rgba(0, 0, 0, 0.1); + --toolbarSidebar-border-bottom: none; + --button-hover-color: rgba(221, 222, 223, 1); + --toggled-btn-color: rgba(0, 0, 0, 1); + --toggled-btn-bg-color: rgba(0, 0, 0, 0.3); + --toggled-hover-active-btn-color: rgba(0, 0, 0, 0.4); + --dropdown-btn-bg-color: rgba(215, 215, 219, 1); + --dropdown-btn-border: none; + --separator-color: rgba(0, 0, 0, 0.3); + --field-color: rgba(6, 6, 6, 1); + --field-bg-color: rgba(255, 255, 255, 1); + --field-border-color: rgba(187, 187, 188, 1); + --treeitem-color: rgba(0, 0, 0, 0.8); + --treeitem-hover-color: rgba(0, 0, 0, 0.9); + --treeitem-selected-color: rgba(0, 0, 0, 0.9); + --treeitem-selected-bg-color: rgba(0, 0, 0, 0.25); + --sidebaritem-bg-color: rgba(0, 0, 0, 0.15); + --doorhanger-bg-color: rgba(255, 255, 255, 1); + --doorhanger-border-color: rgba(12, 12, 13, 0.2); + --doorhanger-hover-color: rgba(12, 12, 13, 1); + --doorhanger-hover-bg-color: rgba(237, 237, 237, 1); + --doorhanger-separator-color: rgba(222, 222, 222, 1); + --dialog-button-border: none; + --dialog-button-bg-color: rgba(12, 12, 13, 0.1); + --dialog-button-hover-bg-color: rgba(12, 12, 13, 0.3); + + --loading-icon: url(images/loading.svg); + --treeitem-expanded-icon: url(images/treeitem-expanded.svg); + --treeitem-collapsed-icon: url(images/treeitem-collapsed.svg); + --toolbarButton-editorFreeText-icon: url(images/toolbarButton-editorFreeText.svg); + --toolbarButton-editorInk-icon: url(images/toolbarButton-editorInk.svg); + --toolbarButton-menuArrow-icon: url(images/toolbarButton-menuArrow.svg); + --toolbarButton-sidebarToggle-icon: url(images/toolbarButton-sidebarToggle.svg); + --toolbarButton-secondaryToolbarToggle-icon: url(images/toolbarButton-secondaryToolbarToggle.svg); + --toolbarButton-pageUp-icon: url(images/toolbarButton-pageUp.svg); + --toolbarButton-pageDown-icon: url(images/toolbarButton-pageDown.svg); + --toolbarButton-zoomOut-icon: url(images/toolbarButton-zoomOut.svg); + --toolbarButton-zoomIn-icon: url(images/toolbarButton-zoomIn.svg); + --toolbarButton-presentationMode-icon: url(images/toolbarButton-presentationMode.svg); + --toolbarButton-print-icon: url(images/toolbarButton-print.svg); + --toolbarButton-openFile-icon: url(images/toolbarButton-openFile.svg); + --toolbarButton-download-icon: url(images/toolbarButton-download.svg); + --toolbarButton-bookmark-icon: url(images/toolbarButton-bookmark.svg); + --toolbarButton-viewThumbnail-icon: url(images/toolbarButton-viewThumbnail.svg); + --toolbarButton-viewOutline-icon: url(images/toolbarButton-viewOutline.svg); + --toolbarButton-viewAttachments-icon: url(images/toolbarButton-viewAttachments.svg); + --toolbarButton-viewLayers-icon: url(images/toolbarButton-viewLayers.svg); + --toolbarButton-currentOutlineItem-icon: url(images/toolbarButton-currentOutlineItem.svg); + --toolbarButton-search-icon: url(images/toolbarButton-search.svg); + --findbarButton-previous-icon: url(images/findbarButton-previous.svg); + --findbarButton-next-icon: url(images/findbarButton-next.svg); + --secondaryToolbarButton-firstPage-icon: url(images/secondaryToolbarButton-firstPage.svg); + --secondaryToolbarButton-lastPage-icon: url(images/secondaryToolbarButton-lastPage.svg); + --secondaryToolbarButton-rotateCcw-icon: url(images/secondaryToolbarButton-rotateCcw.svg); + --secondaryToolbarButton-rotateCw-icon: url(images/secondaryToolbarButton-rotateCw.svg); + --secondaryToolbarButton-selectTool-icon: url(images/secondaryToolbarButton-selectTool.svg); + --secondaryToolbarButton-handTool-icon: url(images/secondaryToolbarButton-handTool.svg); + --secondaryToolbarButton-scrollPage-icon: url(images/secondaryToolbarButton-scrollPage.svg); + --secondaryToolbarButton-scrollVertical-icon: url(images/secondaryToolbarButton-scrollVertical.svg); + --secondaryToolbarButton-scrollHorizontal-icon: url(images/secondaryToolbarButton-scrollHorizontal.svg); + --secondaryToolbarButton-scrollWrapped-icon: url(images/secondaryToolbarButton-scrollWrapped.svg); + --secondaryToolbarButton-spreadNone-icon: url(images/secondaryToolbarButton-spreadNone.svg); + --secondaryToolbarButton-spreadOdd-icon: url(images/secondaryToolbarButton-spreadOdd.svg); + --secondaryToolbarButton-spreadEven-icon: url(images/secondaryToolbarButton-spreadEven.svg); + --secondaryToolbarButton-documentProperties-icon: url(images/secondaryToolbarButton-documentProperties.svg); +} + +[dir="rtl"]:root { + --dir-factor: -1; + --inline-start: right; + --inline-end: left; +} + +@media (prefers-color-scheme: dark) { + :root { + --main-color: rgba(249, 249, 250, 1); + --body-bg-color: rgba(42, 42, 46, 1); + --progressBar-color: rgba(0, 96, 223, 1); + --progressBar-bg-color: rgba(40, 40, 43, 1); + --progressBar-blend-color: rgba(20, 68, 133, 1); + --scrollbar-color: rgba(121, 121, 123, 1); + --scrollbar-bg-color: rgba(35, 35, 39, 1); + --toolbar-icon-bg-color: rgba(255, 255, 255, 1); + --toolbar-icon-hover-bg-color: rgba(255, 255, 255, 1); + + --sidebar-narrow-bg-color: rgba(42, 42, 46, 0.9); + --sidebar-toolbar-bg-color: rgba(50, 50, 52, 1); + --toolbar-bg-color: rgba(56, 56, 61, 1); + --toolbar-border-color: rgba(12, 12, 13, 1); + --button-hover-color: rgba(102, 102, 103, 1); + --toggled-btn-color: rgba(255, 255, 255, 1); + --toggled-btn-bg-color: rgba(0, 0, 0, 0.3); + --toggled-hover-active-btn-color: rgba(0, 0, 0, 0.4); + --dropdown-btn-bg-color: rgba(74, 74, 79, 1); + --separator-color: rgba(0, 0, 0, 0.3); + --field-color: rgba(250, 250, 250, 1); + --field-bg-color: rgba(64, 64, 68, 1); + --field-border-color: rgba(115, 115, 115, 1); + --treeitem-color: rgba(255, 255, 255, 0.8); + --treeitem-hover-color: rgba(255, 255, 255, 0.9); + --treeitem-selected-color: rgba(255, 255, 255, 0.9); + --treeitem-selected-bg-color: rgba(255, 255, 255, 0.25); + --sidebaritem-bg-color: rgba(255, 255, 255, 0.15); + --doorhanger-bg-color: rgba(74, 74, 79, 1); + --doorhanger-border-color: rgba(39, 39, 43, 1); + --doorhanger-hover-color: rgba(249, 249, 250, 1); + --doorhanger-hover-bg-color: rgba(93, 94, 98, 1); + --doorhanger-separator-color: rgba(92, 92, 97, 1); + --dialog-button-bg-color: rgba(92, 92, 97, 1); + --dialog-button-hover-bg-color: rgba(115, 115, 115, 1); + + /* This image is used in elements, which unfortunately means that + * the `mask-image` approach used with all of the other images doesn't work + * here; hence why we still have two versions of this particular image. */ + --loading-icon: url(images/loading-dark.svg); + } +} + +@media screen and (forced-colors: active) { + :root { + --button-hover-color: Highlight; + --doorhanger-hover-bg-color: Highlight; + --toolbar-icon-opacity: 1; + --toolbar-icon-bg-color: ButtonText; + --toolbar-icon-hover-bg-color: ButtonFace; + --toolbar-border-color: CanvasText; + --toolbar-border-bottom: 1px solid var(--toolbar-border-color); + --toolbar-box-shadow: none; + --toggled-btn-color: HighlightText; + --toggled-btn-bg-color: LinkText; + --doorhanger-hover-color: ButtonFace; + --doorhanger-border-color-whcm: 1px solid ButtonText; + --doorhanger-triangle-opacity-whcm: 0; + --dialog-button-border: 1px solid Highlight; + --dialog-button-hover-bg-color: Highlight; + --dialog-button-hover-color: ButtonFace; + --dropdown-btn-border: 1px solid ButtonText; + --field-border-color: ButtonText; + --main-color: CanvasText; + --separator-color: GrayText; + --doorhanger-separator-color: GrayText; + --toolbarSidebar-box-shadow: none; + --toolbarSidebar-border-bottom: 1px solid var(--toolbar-border-color); + } +} + +@media screen and (prefers-reduced-motion: reduce) { + :root { + --sidebar-transition-duration: 0; + } +} + +* { + padding: 0; + margin: 0; +} + +html, +body { + height: 100%; + width: 100%; +} + +body { + background-color: var(--body-bg-color); + scrollbar-color: var(--scrollbar-color) var(--scrollbar-bg-color); +} + +.hidden, +[hidden] { + display: none !important; +} + +#viewerContainer.pdfPresentationMode:-webkit-full-screen { + top: 0; + background-color: rgba(0, 0, 0, 1); + width: 100%; + height: 100%; + overflow: hidden; + cursor: none; + -webkit-user-select: none; + user-select: none; +} + +#viewerContainer.pdfPresentationMode:fullscreen { + top: 0; + background-color: rgba(0, 0, 0, 1); + width: 100%; + height: 100%; + overflow: hidden; + cursor: none; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.pdfPresentationMode:-webkit-full-screen section:not([data-internal-link]) { + pointer-events: none; +} + +.pdfPresentationMode:fullscreen section:not([data-internal-link]) { + pointer-events: none; +} + +.pdfPresentationMode:-webkit-full-screen .textLayer span { + cursor: none; +} + +.pdfPresentationMode:fullscreen .textLayer span { + cursor: none; +} + +.pdfPresentationMode.pdfPresentationModeControls > *, +.pdfPresentationMode.pdfPresentationModeControls .textLayer span { + cursor: default; +} + +#outerContainer { + width: 100%; + height: 100%; + position: relative; +} + +#sidebarContainer { + position: absolute; + inset-block: 32px 0; + inset-inline-start: calc(-1 * var(--sidebar-width)); + width: var(--sidebar-width); + visibility: hidden; + z-index: 100; + font: message-box; + border-top: 1px solid rgba(51, 51, 51, 1); + -webkit-border-end: var(--doorhanger-border-color-whcm); + border-inline-end: var(--doorhanger-border-color-whcm); + transition-property: inset-inline-start; + transition-duration: var(--sidebar-transition-duration); + transition-timing-function: var(--sidebar-transition-timing-function); +} + +#outerContainer.sidebarMoving #sidebarContainer, +#outerContainer.sidebarOpen #sidebarContainer { + visibility: visible; +} +#outerContainer.sidebarOpen #sidebarContainer { + inset-inline-start: 0; +} + +#mainContainer { + position: absolute; + inset: 0; + min-width: 350px; +} + +#sidebarContent { + inset-block: 32px 0; + inset-inline-start: 0; + overflow: auto; + position: absolute; + width: 100%; + box-shadow: inset calc(-1px * var(--dir-factor)) 0 0 rgba(0, 0, 0, 0.25); +} + +#viewerContainer { + overflow: auto; + position: absolute; + inset: 32px 0 0; + outline: none; +} +#viewerContainer:not(.pdfPresentationMode) { + transition-duration: var(--sidebar-transition-duration); + transition-timing-function: var(--sidebar-transition-timing-function); +} + +#outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentationMode) { + inset-inline-start: var(--sidebar-width); + transition-property: inset-inline-start; +} + +.toolbar { + position: relative; + inset-inline: 0; + z-index: 9999; + cursor: default; + font: message-box; +} + +.toolbar input, +.toolbar button, +.toolbar select, +.secondaryToolbar input, +.secondaryToolbar button, +.secondaryToolbar a, +.secondaryToolbar select, +.editorParamsToolbar input, +.editorParamsToolbar button, +.editorParamsToolbar select, +.findbar input, +.findbar button, +.findbar select, +#sidebarContainer input, +#sidebarContainer button, +#sidebarContainer select { + outline: none; + font: message-box; +} + +#toolbarContainer { + width: 100%; +} + +#toolbarSidebar { + width: 100%; + height: 32px; + background-color: var(--sidebar-toolbar-bg-color); + box-shadow: var(--toolbarSidebar-box-shadow); + border-bottom: var(--toolbarSidebar-border-bottom); +} + +#sidebarResizer { + position: absolute; + inset-block: 0; + inset-inline-end: -6px; + width: 6px; + z-index: 200; + cursor: ew-resize; +} + +#toolbarContainer, +.findbar, +.secondaryToolbar, +.editorParamsToolbar { + position: relative; + height: 32px; + background-color: var(--toolbar-bg-color); + box-shadow: var(--toolbar-box-shadow); + border-bottom: var(--toolbar-border-bottom); +} + +#toolbarViewer { + height: 32px; +} + +#loadingBar { + /* Define these variables here, and not in :root, to avoid reflowing the + entire viewer when updating progress (see issue 15958). */ + --progressBar-percent: 0%; + --progressBar-end-offset: 0; + + position: absolute; + inset-inline: 0 var(--progressBar-end-offset); + height: 4px; + background-color: var(--progressBar-bg-color); + border-bottom: 1px solid var(--toolbar-border-color); + transition-property: inset-inline-start; + transition-duration: var(--sidebar-transition-duration); + transition-timing-function: var(--sidebar-transition-timing-function); +} + +#outerContainer.sidebarOpen #loadingBar { + inset-inline-start: var(--sidebar-width); +} + +#loadingBar .progress { + position: absolute; + top: 0; + left: 0; + width: 100%; + transform: scaleX(var(--progressBar-percent)); + transform-origin: 0 0; + height: 100%; + background-color: var(--progressBar-color); + overflow: hidden; + transition: transform 200ms; +} + +@keyframes progressIndeterminate { + 0% { + transform: translateX(-142px); + } + 100% { + transform: translateX(0); + } +} + +#loadingBar.indeterminate .progress { + transform: none; + background-color: var(--progressBar-bg-color); + transition: none; +} + +#loadingBar.indeterminate .progress .glimmer { + position: absolute; + top: 0; + left: 0; + height: 100%; + width: calc(100% + 150px); + background: repeating-linear-gradient( + 135deg, + var(--progressBar-blend-color) 0, + var(--progressBar-bg-color) 5px, + var(--progressBar-bg-color) 45px, + var(--progressBar-color) 55px, + var(--progressBar-color) 95px, + var(--progressBar-blend-color) 100px + ); + animation: progressIndeterminate 1s linear infinite; +} + +#outerContainer.sidebarResizing #sidebarContainer, +#outerContainer.sidebarResizing #viewerContainer, +#outerContainer.sidebarResizing #loadingBar { + /* Improve responsiveness and avoid visual glitches when the sidebar is resized. */ + transition-duration: 0s; +} + +.findbar, +.secondaryToolbar, +.editorParamsToolbar { + top: 32px; + position: absolute; + z-index: 30000; + height: auto; + padding: 0 4px; + margin: 4px 2px; + font: message-box; + font-size: 12px; + line-height: 14px; + text-align: left; + cursor: default; +} + +.findbar { + inset-inline-start: 64px; + min-width: 300px; + background-color: var(--toolbar-bg-color); +} +.findbar > div { + height: 32px; +} +.findbar > div#findbarInputContainer { + -webkit-margin-end: 4px; + margin-inline-end: 4px; +} +.findbar.wrapContainers > div, +.findbar.wrapContainers > div#findbarMessageContainer > * { + clear: both; +} +.findbar.wrapContainers > div#findbarMessageContainer { + height: auto; +} + +.findbar input[type="checkbox"] { + pointer-events: none; +} + +.findbar label { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.findbar label:hover, +.findbar input:focus-visible + label { + color: var(--toggled-btn-color); + background-color: var(--button-hover-color); +} + +.findbar .toolbarField[type="checkbox"]:checked + .toolbarLabel { + background-color: var(--toggled-btn-bg-color) !important; + color: var(--toggled-btn-color); +} + +#findInput { + width: 200px; +} +#findInput::-moz-placeholder { + font-style: normal; +} +#findInput::placeholder { + font-style: normal; +} +#findInput[data-status="pending"] { + background-image: var(--loading-icon); + background-repeat: no-repeat; + background-position: calc(50% + 48% * var(--dir-factor)); +} +#findInput[data-status="notFound"] { + background-color: rgba(255, 102, 102, 1); +} + +.secondaryToolbar, +.editorParamsToolbar { + padding: 6px 0 10px; + inset-inline-end: 4px; + height: auto; + background-color: var(--doorhanger-bg-color); +} + +.editorParamsToolbarContainer { + width: 220px; + margin-bottom: -4px; +} + +.editorParamsToolbarContainer > .editorParamsSetter { + min-height: 26px; + display: flex; + align-items: center; + justify-content: space-between; + padding-inline: 10px; +} + +.editorParamsToolbarContainer .editorParamsLabel { + -webkit-padding-end: 10px; + padding-inline-end: 10px; + flex: none; + color: var(--main-color); +} + +.editorParamsToolbarContainer .editorParamsColor { + width: 32px; + height: 32px; + flex: none; +} + +.editorParamsToolbarContainer .editorParamsSlider { + background-color: transparent; + width: 90px; + flex: 0 1 0; +} + +.editorParamsToolbarContainer .editorParamsSlider::-moz-range-progress { + background-color: black; +} + +.editorParamsToolbarContainer .editorParamsSlider::-webkit-slider-runnable-track, +.editorParamsToolbarContainer .editorParamsSlider::-moz-range-track { + background-color: black; +} + +.editorParamsToolbarContainer .editorParamsSlider::-webkit-slider-thumb, +.editorParamsToolbarContainer .editorParamsSlider::-moz-range-thumb { + background-color: white; +} + +#secondaryToolbarButtonContainer { + max-width: 220px; + min-height: 26px; + max-height: calc(var(--viewer-container-height) - 40px); + overflow-y: auto; + margin-bottom: -4px; +} + +#editorInkParamsToolbar { + inset-inline-end: 40px; + background-color: var(--toolbar-bg-color); +} + +#editorFreeTextParamsToolbar { + inset-inline-end: 68px; + background-color: var(--toolbar-bg-color); +} + +.doorHanger, +.doorHangerRight { + border-radius: 2px; + box-shadow: 0 1px 5px var(--doorhanger-border-color), + 0 0 0 1px var(--doorhanger-border-color); + border: var(--doorhanger-border-color-whcm); +} +.doorHanger:after, +.doorHanger:before, +.doorHangerRight:after, +.doorHangerRight:before { + bottom: 100%; + border: 8px solid rgba(0, 0, 0, 0); + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none; + opacity: var(--doorhanger-triangle-opacity-whcm); +} +.doorHanger:after { + inset-inline-start: 10px; + -webkit-margin-start: -8px; + margin-inline-start: -8px; + border-bottom-color: var(--toolbar-bg-color); +} +.doorHangerRight:after { + inset-inline-end: 10px; + -webkit-margin-end: -8px; + margin-inline-end: -8px; + border-bottom-color: var(--doorhanger-bg-color); +} +.doorHanger:before, +.doorHangerRight:before { + border-bottom-color: var(--doorhanger-border-color); + border-width: 9px; +} +.doorHanger:before { + inset-inline-start: 10px; + -webkit-margin-start: -9px; + margin-inline-start: -9px; +} +.doorHangerRight:before { + inset-inline-end: 10px; + -webkit-margin-end: -9px; + margin-inline-end: -9px; +} + +#findResultsCount { + background-color: rgba(217, 217, 217, 1); + color: rgba(82, 82, 82, 1); + text-align: center; + padding: 4px 5px; + margin: 5px; +} + +#findMsg { + color: rgba(251, 0, 0, 1); +} + +#findResultsCount:empty, +#findMsg:empty { + display: none; +} + +#toolbarViewerMiddle { + position: absolute; + left: 50%; + transform: translateX(-50%); +} + +#toolbarViewerLeft, +#toolbarSidebarLeft { + float: var(--inline-start); +} +#toolbarViewerRight, +#toolbarSidebarRight { + float: var(--inline-end); +} + +#toolbarViewerLeft > *, +#toolbarViewerMiddle > *, +#toolbarViewerRight > *, +#toolbarSidebarLeft *, +#toolbarSidebarRight *, +.findbar * { + position: relative; + float: var(--inline-start); +} + +#toolbarViewerLeft { + -webkit-padding-start: 1px; + padding-inline-start: 1px; +} +#toolbarViewerRight { + -webkit-padding-end: 1px; + padding-inline-end: 1px; +} +#toolbarSidebarRight { + -webkit-padding-end: 2px; + padding-inline-end: 2px; +} + +.splitToolbarButton { + margin: 2px; + display: inline-block; +} +.splitToolbarButton > .toolbarButton { + float: var(--inline-start); +} + +.toolbarButton, +.secondaryToolbarButton, +.dialogButton { + border: none; + background: none; + width: 28px; + height: 28px; + outline: none; +} + +.dialogButton:hover, +.dialogButton:focus-visible { + background-color: var(--dialog-button-hover-bg-color); +} + +.dialogButton:hover > span, +.dialogButton:focus-visible > span { + color: var(--dialog-button-hover-color); +} + +.toolbarButton > span { + display: inline-block; + width: 0; + height: 0; + overflow: hidden; +} + +.toolbarButton[disabled], +.secondaryToolbarButton[disabled], +.dialogButton[disabled] { + opacity: 0.5; +} + +.splitToolbarButton > .toolbarButton:hover, +.splitToolbarButton > .toolbarButton:focus-visible, +.dropdownToolbarButton:hover { + background-color: var(--button-hover-color); +} +.splitToolbarButton > .toolbarButton { + position: relative; + margin: 0; +} +#toolbarSidebar .splitToolbarButton > .toolbarButton { + -webkit-margin-end: 2px; + margin-inline-end: 2px; +} + +.splitToolbarButtonSeparator { + float: var(--inline-start); + margin: 4px 0; + width: 1px; + height: 20px; + background-color: var(--separator-color); +} + +.toolbarButton, +.dropdownToolbarButton, +.secondaryToolbarButton, +.dialogButton { + min-width: 16px; + margin: 2px 1px; + padding: 2px 6px 0; + border: none; + border-radius: 2px; + color: var(--main-color); + font-size: 12px; + line-height: 14px; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + cursor: default; + box-sizing: border-box; +} + +.toolbarButton:hover, +.toolbarButton:focus-visible { + background-color: var(--button-hover-color); +} +.secondaryToolbarButton:hover, +.secondaryToolbarButton:focus-visible { + background-color: var(--doorhanger-hover-bg-color); + color: var(--doorhanger-hover-color); +} + +.toolbarButton.toggled, +.splitToolbarButton.toggled > .toolbarButton.toggled, +.secondaryToolbarButton.toggled { + background-color: var(--toggled-btn-bg-color); + color: var(--toggled-btn-color); +} + +.toolbarButton.toggled::before, +.secondaryToolbarButton.toggled::before { + background-color: var(--toggled-btn-color); +} + +.toolbarButton.toggled:hover:active, +.splitToolbarButton.toggled > .toolbarButton.toggled:hover:active, +.secondaryToolbarButton.toggled:hover:active { + background-color: var(--toggled-hover-active-btn-color); +} + +.dropdownToolbarButton { + /* Define this variable here, and not in :root, to avoid reflowing the + entire viewer when updating the width. */ + --scale-select-width: 140px; + + width: var(--scale-select-width); + padding: 0; + background-color: var(--dropdown-btn-bg-color); + border: var(--dropdown-btn-border); +} +.dropdownToolbarButton::after { + top: 6px; + inset-inline-end: 6px; + pointer-events: none; + -webkit-mask-image: var(--toolbarButton-menuArrow-icon); + mask-image: var(--toolbarButton-menuArrow-icon); +} + +.dropdownToolbarButton > select { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + width: inherit; + height: 28px; + font-size: 12px; + color: var(--main-color); + margin: 0; + padding: 1px 0 2px; + -webkit-padding-start: 6px; + padding-inline-start: 6px; + border: none; + background-color: var(--dropdown-btn-bg-color); +} +.dropdownToolbarButton > select:hover, +.dropdownToolbarButton > select:focus-visible { + background-color: var(--button-hover-color); + color: var(--toggled-btn-color); +} +.dropdownToolbarButton > select > option { + background: var(--doorhanger-bg-color); + color: var(--main-color); +} + +.toolbarButtonSpacer { + width: 30px; + display: inline-block; + height: 1px; +} + +.toolbarButton::before, +.secondaryToolbarButton::before, +.dropdownToolbarButton::after, +.treeItemToggler::before { + /* All matching images have a size of 16x16 + * All relevant containers have a size of 28x28 */ + position: absolute; + display: inline-block; + width: 16px; + height: 16px; + + content: ""; + background-color: var(--toolbar-icon-bg-color); + -webkit-mask-size: cover; + mask-size: cover; +} + +.dropdownToolbarButton:hover::after, +.dropdownToolbarButton:focus-visible::after, +.dropdownToolbarButton:active::after { + background-color: var(--toolbar-icon-hover-bg-color); +} + +.toolbarButton::before { + opacity: var(--toolbar-icon-opacity); + top: 6px; + left: 6px; +} + +.toolbarButton:hover::before, +.toolbarButton:focus-visible::before, +.secondaryToolbarButton:hover::before, +.secondaryToolbarButton:focus-visible::before { + background-color: var(--toolbar-icon-hover-bg-color); +} + +.secondaryToolbarButton::before { + opacity: var(--doorhanger-icon-opacity); + top: 5px; + inset-inline-start: 12px; +} + +#sidebarToggle::before { + -webkit-mask-image: var(--toolbarButton-sidebarToggle-icon); + mask-image: var(--toolbarButton-sidebarToggle-icon); + transform: scaleX(var(--dir-factor)); +} + +#secondaryToolbarToggle::before { + -webkit-mask-image: var(--toolbarButton-secondaryToolbarToggle-icon); + mask-image: var(--toolbarButton-secondaryToolbarToggle-icon); + transform: scaleX(var(--dir-factor)); +} + +#findPrevious::before { + -webkit-mask-image: var(--findbarButton-previous-icon); + mask-image: var(--findbarButton-previous-icon); +} + +#findNext::before { + -webkit-mask-image: var(--findbarButton-next-icon); + mask-image: var(--findbarButton-next-icon); +} + +#previous::before { + -webkit-mask-image: var(--toolbarButton-pageUp-icon); + mask-image: var(--toolbarButton-pageUp-icon); +} + +#next::before { + -webkit-mask-image: var(--toolbarButton-pageDown-icon); + mask-image: var(--toolbarButton-pageDown-icon); +} + +#zoomOut::before { + -webkit-mask-image: var(--toolbarButton-zoomOut-icon); + mask-image: var(--toolbarButton-zoomOut-icon); +} + +#zoomIn::before { + -webkit-mask-image: var(--toolbarButton-zoomIn-icon); + mask-image: var(--toolbarButton-zoomIn-icon); +} + +#presentationMode::before { + -webkit-mask-image: var(--toolbarButton-presentationMode-icon); + mask-image: var(--toolbarButton-presentationMode-icon); +} + +#editorFreeText::before { + -webkit-mask-image: var(--toolbarButton-editorFreeText-icon); + mask-image: var(--toolbarButton-editorFreeText-icon); +} + +#editorInk::before { + -webkit-mask-image: var(--toolbarButton-editorInk-icon); + mask-image: var(--toolbarButton-editorInk-icon); +} + +#print::before, +#secondaryPrint::before { + -webkit-mask-image: var(--toolbarButton-print-icon); + mask-image: var(--toolbarButton-print-icon); +} + +#openFile::before, +#secondaryOpenFile::before { + -webkit-mask-image: var(--toolbarButton-openFile-icon); + mask-image: var(--toolbarButton-openFile-icon); +} + +#download::before, +#secondaryDownload::before { + -webkit-mask-image: var(--toolbarButton-download-icon); + mask-image: var(--toolbarButton-download-icon); +} + +a.secondaryToolbarButton { + padding-top: 5px; + text-decoration: none; +} +a.toolbarButton[href="#"], +a.secondaryToolbarButton[href="#"] { + opacity: 0.5; + pointer-events: none; +} + +#viewBookmark::before { + -webkit-mask-image: var(--toolbarButton-bookmark-icon); + mask-image: var(--toolbarButton-bookmark-icon); +} + +#viewThumbnail::before { + -webkit-mask-image: var(--toolbarButton-viewThumbnail-icon); + mask-image: var(--toolbarButton-viewThumbnail-icon); +} + +#viewOutline::before { + -webkit-mask-image: var(--toolbarButton-viewOutline-icon); + mask-image: var(--toolbarButton-viewOutline-icon); + transform: scaleX(var(--dir-factor)); +} + +#viewAttachments::before { + -webkit-mask-image: var(--toolbarButton-viewAttachments-icon); + mask-image: var(--toolbarButton-viewAttachments-icon); +} + +#viewLayers::before { + -webkit-mask-image: var(--toolbarButton-viewLayers-icon); + mask-image: var(--toolbarButton-viewLayers-icon); +} + +#currentOutlineItem::before { + -webkit-mask-image: var(--toolbarButton-currentOutlineItem-icon); + mask-image: var(--toolbarButton-currentOutlineItem-icon); + transform: scaleX(var(--dir-factor)); +} + +#viewFind::before { + -webkit-mask-image: var(--toolbarButton-search-icon); + mask-image: var(--toolbarButton-search-icon); +} + +.pdfSidebarNotification::after { + position: absolute; + display: inline-block; + top: 2px; + inset-inline-end: 2px; + /* Create a filled circle, with a diameter of 9 pixels, using only CSS: */ + content: ""; + background-color: rgba(112, 219, 85, 1); + height: 9px; + width: 9px; + border-radius: 50%; +} + +.secondaryToolbarButton { + position: relative; + margin: 0; + padding: 0 0 1px; + -webkit-padding-start: 36px; + padding-inline-start: 36px; + height: auto; + min-height: 26px; + width: auto; + min-width: 100%; + text-align: start; + white-space: normal; + border-radius: 0; + box-sizing: border-box; + display: inline-block; +} +.secondaryToolbarButton > span { + -webkit-padding-end: 4px; + padding-inline-end: 4px; +} + +#firstPage::before { + -webkit-mask-image: var(--secondaryToolbarButton-firstPage-icon); + mask-image: var(--secondaryToolbarButton-firstPage-icon); +} + +#lastPage::before { + -webkit-mask-image: var(--secondaryToolbarButton-lastPage-icon); + mask-image: var(--secondaryToolbarButton-lastPage-icon); +} + +#pageRotateCcw::before { + -webkit-mask-image: var(--secondaryToolbarButton-rotateCcw-icon); + mask-image: var(--secondaryToolbarButton-rotateCcw-icon); +} + +#pageRotateCw::before { + -webkit-mask-image: var(--secondaryToolbarButton-rotateCw-icon); + mask-image: var(--secondaryToolbarButton-rotateCw-icon); +} + +#cursorSelectTool::before { + -webkit-mask-image: var(--secondaryToolbarButton-selectTool-icon); + mask-image: var(--secondaryToolbarButton-selectTool-icon); +} + +#cursorHandTool::before { + -webkit-mask-image: var(--secondaryToolbarButton-handTool-icon); + mask-image: var(--secondaryToolbarButton-handTool-icon); +} + +#scrollPage::before { + -webkit-mask-image: var(--secondaryToolbarButton-scrollPage-icon); + mask-image: var(--secondaryToolbarButton-scrollPage-icon); +} + +#scrollVertical::before { + -webkit-mask-image: var(--secondaryToolbarButton-scrollVertical-icon); + mask-image: var(--secondaryToolbarButton-scrollVertical-icon); +} + +#scrollHorizontal::before { + -webkit-mask-image: var(--secondaryToolbarButton-scrollHorizontal-icon); + mask-image: var(--secondaryToolbarButton-scrollHorizontal-icon); +} + +#scrollWrapped::before { + -webkit-mask-image: var(--secondaryToolbarButton-scrollWrapped-icon); + mask-image: var(--secondaryToolbarButton-scrollWrapped-icon); +} + +#spreadNone::before { + -webkit-mask-image: var(--secondaryToolbarButton-spreadNone-icon); + mask-image: var(--secondaryToolbarButton-spreadNone-icon); +} + +#spreadOdd::before { + -webkit-mask-image: var(--secondaryToolbarButton-spreadOdd-icon); + mask-image: var(--secondaryToolbarButton-spreadOdd-icon); +} + +#spreadEven::before { + -webkit-mask-image: var(--secondaryToolbarButton-spreadEven-icon); + mask-image: var(--secondaryToolbarButton-spreadEven-icon); +} + +#documentProperties::before { + -webkit-mask-image: var(--secondaryToolbarButton-documentProperties-icon); + mask-image: var(--secondaryToolbarButton-documentProperties-icon); +} + +.verticalToolbarSeparator { + display: block; + margin: 5px 2px; + width: 1px; + height: 22px; + background-color: var(--separator-color); +} +.horizontalToolbarSeparator { + display: block; + margin: 6px 0; + height: 1px; + width: 100%; + background-color: var(--doorhanger-separator-color); +} + +.toolbarField { + padding: 4px 7px; + margin: 3px 0; + border-radius: 2px; + background-color: var(--field-bg-color); + background-clip: padding-box; + border: 1px solid var(--field-border-color); + box-shadow: none; + color: var(--field-color); + font-size: 12px; + line-height: 16px; + outline: none; +} + +.toolbarField[type="checkbox"] { + opacity: 0; + position: absolute !important; + left: 0; + margin: 10px 0 3px; + -webkit-margin-start: 7px; + margin-inline-start: 7px; +} + +#pageNumber { + -moz-appearance: textfield; /* hides the spinner in moz */ + text-align: right; + width: 40px; + background-size: 0 0; + transition-property: none; +} +#pageNumber.visiblePageIsLoading { + background-image: var(--loading-icon); + background-repeat: no-repeat; + background-position: 3px; + background-size: 16px 16px; + /* Using a delay with background-image doesn't work, + consequently we use background-size. */ + transition-property: background-size; + transition-delay: var(--loading-icon-delay); +} +#pageNumber::-webkit-inner-spin-button { + -webkit-appearance: none; +} + +.toolbarField:focus { + border-color: #0a84ff; +} + +.toolbarLabel { + min-width: 16px; + padding: 7px; + margin: 2px; + border-radius: 2px; + color: var(--main-color); + font-size: 12px; + line-height: 14px; + text-align: left; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + cursor: default; +} + +#numPages.toolbarLabel { + -webkit-padding-start: 3px; + padding-inline-start: 3px; +} + +#thumbnailView, +#outlineView, +#attachmentsView, +#layersView { + position: absolute; + width: calc(100% - 8px); + inset-block: 0; + padding: 4px 4px 0; + overflow: auto; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +#thumbnailView { + width: calc(100% - 60px); + padding: 10px 30px 0; +} + +#thumbnailView > a:active, +#thumbnailView > a:focus { + outline: 0; +} + +.thumbnail { + float: var(--inline-start); + margin: 0 10px 5px; +} + +#thumbnailView > a:last-of-type > .thumbnail { + margin-bottom: 10px; +} +#thumbnailView > a:last-of-type > .thumbnail:not([data-loaded]) { + margin-bottom: 9px; +} + +.thumbnail:not([data-loaded]) { + border: 1px dashed rgba(132, 132, 132, 1); + margin: -1px 9px 4px; +} + +.thumbnailImage { + border: 1px solid rgba(0, 0, 0, 0); + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.5), 0 2px 8px rgba(0, 0, 0, 0.3); + opacity: 0.8; + z-index: 99; + background-color: rgba(255, 255, 255, 1); + background-clip: content-box; +} + +.thumbnailSelectionRing { + border-radius: 2px; + padding: 7px; +} + +a:focus > .thumbnail > .thumbnailSelectionRing > .thumbnailImage, +.thumbnail:hover > .thumbnailSelectionRing > .thumbnailImage { + opacity: 0.9; +} + +a:focus > .thumbnail > .thumbnailSelectionRing, +.thumbnail:hover > .thumbnailSelectionRing { + background-color: var(--sidebaritem-bg-color); + background-clip: padding-box; + color: rgba(255, 255, 255, 0.9); +} + +.thumbnail.selected > .thumbnailSelectionRing > .thumbnailImage { + opacity: 1; +} + +.thumbnail.selected > .thumbnailSelectionRing { + background-color: var(--sidebaritem-bg-color); + background-clip: padding-box; + color: rgba(255, 255, 255, 1); +} + +.treeWithDeepNesting > .treeItem, +.treeItem > .treeItems { + -webkit-margin-start: 20px; + margin-inline-start: 20px; +} + +.treeItem > a { + text-decoration: none; + display: inline-block; + /* Subtract the right padding (left, in RTL mode) of the container: */ + min-width: calc(100% - 4px); + height: auto; + margin-bottom: 1px; + padding: 2px 0 5px; + -webkit-padding-start: 4px; + padding-inline-start: 4px; + border-radius: 2px; + color: var(--treeitem-color); + font-size: 13px; + line-height: 15px; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + white-space: normal; + cursor: pointer; +} + +#layersView .treeItem > a * { + cursor: pointer; +} +#layersView .treeItem > a > label { + -webkit-padding-start: 4px; + padding-inline-start: 4px; +} +#layersView .treeItem > a > label > input { + float: var(--inline-start); + margin-top: 1px; +} + +.treeItemToggler { + position: relative; + float: var(--inline-start); + height: 0; + width: 0; + color: rgba(255, 255, 255, 0.5); +} +.treeItemToggler::before { + inset-inline-end: 4px; + -webkit-mask-image: var(--treeitem-expanded-icon); + mask-image: var(--treeitem-expanded-icon); +} +.treeItemToggler.treeItemsHidden::before { + -webkit-mask-image: var(--treeitem-collapsed-icon); + mask-image: var(--treeitem-collapsed-icon); + transform: scaleX(var(--dir-factor)); +} +.treeItemToggler.treeItemsHidden ~ .treeItems { + display: none; +} + +.treeItem.selected > a { + background-color: var(--treeitem-selected-bg-color); + color: var(--treeitem-selected-color); +} + +.treeItemToggler:hover, +.treeItemToggler:hover + a, +.treeItemToggler:hover ~ .treeItems, +.treeItem > a:hover { + background-color: var(--sidebaritem-bg-color); + background-clip: padding-box; + border-radius: 2px; + color: var(--treeitem-hover-color); +} + +.dialogButton { + width: auto; + margin: 3px 4px 2px !important; + padding: 2px 11px; + color: var(--main-color); + background-color: var(--dialog-button-bg-color); + border: var(--dialog-button-border) !important; +} + +dialog { + margin: auto; + padding: 15px; + border-spacing: 4px; + color: var(--main-color); + font: message-box; + font-size: 12px; + line-height: 14px; + background-color: var(--doorhanger-bg-color); + border: 1px solid rgba(0, 0, 0, 0.5); + border-radius: 4px; + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); +} +dialog::-webkit-backdrop { + background-color: rgba(0, 0, 0, 0.2); +} +dialog::backdrop { + background-color: rgba(0, 0, 0, 0.2); +} + +dialog > .row { + display: table-row; +} + +dialog > .row > * { + display: table-cell; +} + +dialog .toolbarField { + margin: 5px 0; +} + +dialog .separator { + display: block; + margin: 4px 0; + height: 1px; + width: 100%; + background-color: var(--separator-color); +} + +dialog .buttonRow { + text-align: center; + vertical-align: middle; +} + +dialog :link { + color: rgba(255, 255, 255, 1); +} + +#passwordDialog { + text-align: center; +} +#passwordDialog .toolbarField { + width: 200px; +} + +#documentPropertiesDialog { + text-align: left; +} +#documentPropertiesDialog .row > * { + min-width: 100px; + text-align: start; +} +#documentPropertiesDialog .row > span { + width: 125px; + word-wrap: break-word; +} +#documentPropertiesDialog .row > p { + max-width: 225px; + word-wrap: break-word; +} +#documentPropertiesDialog .buttonRow { + margin-top: 10px; +} + +.grab-to-pan-grab { + cursor: grab !important; +} +.grab-to-pan-grab + *:not(input):not(textarea):not(button):not(select):not(:link) { + cursor: inherit !important; +} +.grab-to-pan-grab:active, +.grab-to-pan-grabbing { + cursor: grabbing !important; + position: fixed; + background: rgba(0, 0, 0, 0); + display: block; + inset: 0; + overflow: hidden; + z-index: 50000; /* should be higher than anything else in PDF.js! */ +} + +@page { + margin: 0; +} + +#printContainer { + display: none; +} + +@media print { + body { + background: rgba(0, 0, 0, 0) none; + } + body[data-pdfjsprinting] #outerContainer { + display: none; + } + body[data-pdfjsprinting] #printContainer { + display: block; + } + #printContainer { + height: 100%; + } + /* wrapper around (scaled) print canvas elements */ + #printContainer > .printedPage { + page-break-after: always; + page-break-inside: avoid; + + /* The wrapper always cover the whole page. */ + height: 100%; + width: 100%; + + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + } + + #printContainer > .xfaPrintedPage .xfaPage { + position: absolute; + } + + #printContainer > .xfaPrintedPage { + page-break-after: always; + page-break-inside: avoid; + width: 100%; + height: 100%; + position: relative; + } + + #printContainer > .printedPage canvas, + #printContainer > .printedPage img { + /* The intrinsic canvas / image size will make sure that we fit the page. */ + max-width: 100%; + max-height: 100%; + + direction: ltr; + display: block; + } +} + +.visibleLargeView, +.visibleMediumView { + display: none; +} + +@media all and (max-width: 900px) { + #toolbarViewerMiddle { + display: table; + margin: auto; + left: auto; + position: inherit; + transform: none; + } +} + +@media all and (max-width: 840px) { + #sidebarContainer { + background-color: var(--sidebar-narrow-bg-color); + } + #outerContainer.sidebarOpen #viewerContainer { + inset-inline-start: 0 !important; + } +} + +@media all and (max-width: 820px) { + #outerContainer .hiddenLargeView { + display: none; + } + #outerContainer .visibleLargeView { + display: inherit; + } +} + +@media all and (max-width: 750px) { + #outerContainer .hiddenMediumView { + display: none; + } + #outerContainer .visibleMediumView { + display: inherit; + } +} + +@media all and (max-width: 690px) { + .hiddenSmallView, + .hiddenSmallView * { + display: none; + } + .toolbarButtonSpacer { + width: 0; + } + .findbar { + inset-inline-start: 34px; + } +} + +@media all and (max-width: 560px) { + #scaleSelectContainer { + display: none; + } +} diff --git a/www/include/vendor/pdfjs/web/viewer.html b/www/include/vendor/pdfjs/web/viewer.html new file mode 100644 index 0000000..e3dcf04 --- /dev/null +++ b/www/include/vendor/pdfjs/web/viewer.html @@ -0,0 +1,432 @@ + + + + + + + + PDF.js viewer + + + + + + + + + + + +
+ +
+
+
+
+ + + + +
+
+ +
+ +
+
+
+
+
+ + + +
+
+
+ +
+ + + + + + + + +
+
+
+
+ +
+ +
+ +
+ +
+ + +
+
+ + + + + + +
+ +
+ + +
+ +
+ + +
+
+
+ +
+ +
+ + + +
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+ +
+ +
+ +
+
+ +
+
+ + +
+
+ +
+ File name: +

-

+
+
+ File size: +

-

+
+
+
+ Title: +

-

+
+
+ Author: +

-

+
+
+ Subject: +

-

+
+
+ Keywords: +

-

+
+
+ Creation Date: +

-

+
+
+ Modification Date: +

-

+
+
+ Creator: +

-

+
+
+
+ PDF Producer: +

-

+
+
+ PDF Version: +

-

+
+
+ Page Count: +

-

+
+
+ Page Size: +

-

+
+
+
+ Fast Web View: +

-

+
+
+ +
+
+ +
+ Preparing document for printing… +
+
+ + 0% +
+
+ +
+
+
+ +
+
+ + + + diff --git a/www/include/vendor/pdfjs/web/viewer.js b/www/include/vendor/pdfjs/web/viewer.js new file mode 100644 index 0000000..33062c4 --- /dev/null +++ b/www/include/vendor/pdfjs/web/viewer.js @@ -0,0 +1,13898 @@ +/** + * @licstart The following is the entire license notice for the + * JavaScript code in this page + * + * Copyright 2023 Mozilla Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @licend The above is the entire license notice for the + * JavaScript code in this page + */ + +/******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ([ +/* 0 */, +/* 1 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.GenericCom = void 0; +var _app = __webpack_require__(2); +var _preferences = __webpack_require__(42); +var _download_manager = __webpack_require__(43); +var _genericl10n = __webpack_require__(44); +var _generic_scripting = __webpack_require__(46); +; +const GenericCom = {}; +exports.GenericCom = GenericCom; +class GenericPreferences extends _preferences.BasePreferences { + async _writeToStorage(prefObj) { + localStorage.setItem("pdfjs.preferences", JSON.stringify(prefObj)); + } + async _readFromStorage(prefObj) { + return JSON.parse(localStorage.getItem("pdfjs.preferences")); + } +} +class GenericExternalServices extends _app.DefaultExternalServices { + static createDownloadManager() { + return new _download_manager.DownloadManager(); + } + static createPreferences() { + return new GenericPreferences(); + } + static createL10n({ + locale = "en-US" + }) { + return new _genericl10n.GenericL10n(locale); + } + static createScripting({ + sandboxBundleSrc + }) { + return new _generic_scripting.GenericScripting(sandboxBundleSrc); + } +} +_app.PDFViewerApplication.externalServices = GenericExternalServices; + +/***/ }), +/* 2 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFViewerApplication = exports.PDFPrintServiceFactory = exports.DefaultExternalServices = void 0; +var _ui_utils = __webpack_require__(3); +var _pdfjsLib = __webpack_require__(4); +var _app_options = __webpack_require__(5); +var _event_utils = __webpack_require__(6); +var _pdf_link_service = __webpack_require__(7); +var _webAnnotation_editor_params = __webpack_require__(8); +var _overlay_manager = __webpack_require__(9); +var _password_prompt = __webpack_require__(10); +var _webPdf_attachment_viewer = __webpack_require__(11); +var _webPdf_cursor_tools = __webpack_require__(13); +var _webPdf_document_properties = __webpack_require__(15); +var _webPdf_find_bar = __webpack_require__(16); +var _pdf_find_controller = __webpack_require__(17); +var _pdf_history = __webpack_require__(19); +var _webPdf_layer_viewer = __webpack_require__(20); +var _webPdf_outline_viewer = __webpack_require__(21); +var _webPdf_presentation_mode = __webpack_require__(22); +var _pdf_rendering_queue = __webpack_require__(23); +var _pdf_scripting_manager = __webpack_require__(24); +var _webPdf_sidebar = __webpack_require__(25); +var _webPdf_sidebar_resizer = __webpack_require__(26); +var _webPdf_thumbnail_viewer = __webpack_require__(27); +var _pdf_viewer = __webpack_require__(29); +var _webSecondary_toolbar = __webpack_require__(39); +var _webToolbar = __webpack_require__(40); +var _view_history = __webpack_require__(41); +const FORCE_PAGES_LOADED_TIMEOUT = 10000; +const WHEEL_ZOOM_DISABLED_TIMEOUT = 1000; +const ViewOnLoad = { + UNKNOWN: -1, + PREVIOUS: 0, + INITIAL: 1 +}; +const ViewerCssTheme = { + AUTOMATIC: 0, + LIGHT: 1, + DARK: 2 +}; +class DefaultExternalServices { + constructor() { + throw new Error("Cannot initialize DefaultExternalServices."); + } + static updateFindControlState(data) {} + static updateFindMatchesCount(data) {} + static initPassiveLoading(callbacks) {} + static reportTelemetry(data) {} + static createDownloadManager() { + throw new Error("Not implemented: createDownloadManager"); + } + static createPreferences() { + throw new Error("Not implemented: createPreferences"); + } + static createL10n(options) { + throw new Error("Not implemented: createL10n"); + } + static createScripting(options) { + throw new Error("Not implemented: createScripting"); + } + static get supportsPinchToZoom() { + return (0, _pdfjsLib.shadow)(this, "supportsPinchToZoom", true); + } + static get supportsIntegratedFind() { + return (0, _pdfjsLib.shadow)(this, "supportsIntegratedFind", false); + } + static get supportsDocumentFonts() { + return (0, _pdfjsLib.shadow)(this, "supportsDocumentFonts", true); + } + static get supportedMouseWheelZoomModifierKeys() { + return (0, _pdfjsLib.shadow)(this, "supportedMouseWheelZoomModifierKeys", { + ctrlKey: true, + metaKey: true + }); + } + static get isInAutomation() { + return (0, _pdfjsLib.shadow)(this, "isInAutomation", false); + } + static updateEditorStates(data) { + throw new Error("Not implemented: updateEditorStates"); + } + static get canvasMaxAreaInBytes() { + return (0, _pdfjsLib.shadow)(this, "canvasMaxAreaInBytes", -1); + } +} +exports.DefaultExternalServices = DefaultExternalServices; +const PDFViewerApplication = { + initialBookmark: document.location.hash.substring(1), + _initializedCapability: (0, _pdfjsLib.createPromiseCapability)(), + appConfig: null, + pdfDocument: null, + pdfLoadingTask: null, + printService: null, + pdfViewer: null, + pdfThumbnailViewer: null, + pdfRenderingQueue: null, + pdfPresentationMode: null, + pdfDocumentProperties: null, + pdfLinkService: null, + pdfHistory: null, + pdfSidebar: null, + pdfSidebarResizer: null, + pdfOutlineViewer: null, + pdfAttachmentViewer: null, + pdfLayerViewer: null, + pdfCursorTools: null, + pdfScriptingManager: null, + store: null, + downloadManager: null, + overlayManager: null, + preferences: null, + toolbar: null, + secondaryToolbar: null, + eventBus: null, + l10n: null, + annotationEditorParams: null, + isInitialViewSet: false, + downloadComplete: false, + isViewerEmbedded: window.parent !== window, + url: "", + baseUrl: "", + _downloadUrl: "", + externalServices: DefaultExternalServices, + _boundEvents: Object.create(null), + documentInfo: null, + metadata: null, + _contentDispositionFilename: null, + _contentLength: null, + _saveInProgress: false, + _wheelUnusedTicks: 0, + _wheelUnusedFactor: 1, + _touchUnusedTicks: 0, + _touchUnusedFactor: 1, + _PDFBug: null, + _hasAnnotationEditors: false, + _title: document.title, + _printAnnotationStoragePromise: null, + _touchInfo: null, + _isCtrlKeyDown: false, + async initialize(appConfig) { + this.preferences = this.externalServices.createPreferences(); + this.appConfig = appConfig; + await this._initializeOptions(); + this._forceCssTheme(); + await this._initializeL10n(); + if (this.isViewerEmbedded && _app_options.AppOptions.get("externalLinkTarget") === _pdf_link_service.LinkTarget.NONE) { + _app_options.AppOptions.set("externalLinkTarget", _pdf_link_service.LinkTarget.TOP); + } + await this._initializeViewerComponents(); + this.bindEvents(); + this.bindWindowEvents(); + const appContainer = appConfig.appContainer || document.documentElement; + this.l10n.translate(appContainer).then(() => { + this.eventBus.dispatch("localized", { + source: this + }); + }); + this._initializedCapability.resolve(); + }, + async _initializeOptions() { + if (_app_options.AppOptions.get("disablePreferences")) { + if (_app_options.AppOptions.get("pdfBugEnabled")) { + await this._parseHashParams(); + } + return; + } + if (_app_options.AppOptions._hasUserOptions()) { + console.warn("_initializeOptions: The Preferences may override manually set AppOptions; " + 'please use the "disablePreferences"-option in order to prevent that.'); + } + try { + _app_options.AppOptions.setAll(await this.preferences.getAll()); + } catch (reason) { + console.error(`_initializeOptions: "${reason.message}".`); + } + if (_app_options.AppOptions.get("pdfBugEnabled")) { + await this._parseHashParams(); + } + }, + async _parseHashParams() { + const hash = document.location.hash.substring(1); + if (!hash) { + return; + } + const { + mainContainer, + viewerContainer + } = this.appConfig, + params = (0, _ui_utils.parseQueryString)(hash); + if (params.get("disableworker") === "true") { + try { + await loadFakeWorker(); + } catch (ex) { + console.error(`_parseHashParams: "${ex.message}".`); + } + } + if (params.has("disablerange")) { + _app_options.AppOptions.set("disableRange", params.get("disablerange") === "true"); + } + if (params.has("disablestream")) { + _app_options.AppOptions.set("disableStream", params.get("disablestream") === "true"); + } + if (params.has("disableautofetch")) { + _app_options.AppOptions.set("disableAutoFetch", params.get("disableautofetch") === "true"); + } + if (params.has("disablefontface")) { + _app_options.AppOptions.set("disableFontFace", params.get("disablefontface") === "true"); + } + if (params.has("disablehistory")) { + _app_options.AppOptions.set("disableHistory", params.get("disablehistory") === "true"); + } + if (params.has("verbosity")) { + _app_options.AppOptions.set("verbosity", params.get("verbosity") | 0); + } + if (params.has("textlayer")) { + switch (params.get("textlayer")) { + case "off": + _app_options.AppOptions.set("textLayerMode", _ui_utils.TextLayerMode.DISABLE); + break; + case "visible": + case "shadow": + case "hover": + viewerContainer.classList.add(`textLayer-${params.get("textlayer")}`); + try { + await loadPDFBug(this); + this._PDFBug.loadCSS(); + } catch (ex) { + console.error(`_parseHashParams: "${ex.message}".`); + } + break; + } + } + if (params.has("pdfbug")) { + _app_options.AppOptions.set("pdfBug", true); + _app_options.AppOptions.set("fontExtraProperties", true); + const enabled = params.get("pdfbug").split(","); + try { + await loadPDFBug(this); + this._PDFBug.init({ + OPS: _pdfjsLib.OPS + }, mainContainer, enabled); + } catch (ex) { + console.error(`_parseHashParams: "${ex.message}".`); + } + } + if (params.has("locale")) { + _app_options.AppOptions.set("locale", params.get("locale")); + } + }, + async _initializeL10n() { + this.l10n = this.externalServices.createL10n({ + locale: _app_options.AppOptions.get("locale") + }); + const dir = await this.l10n.getDirection(); + document.getElementsByTagName("html")[0].dir = dir; + }, + _forceCssTheme() { + const cssTheme = _app_options.AppOptions.get("viewerCssTheme"); + if (cssTheme === ViewerCssTheme.AUTOMATIC || !Object.values(ViewerCssTheme).includes(cssTheme)) { + return; + } + try { + const styleSheet = document.styleSheets[0]; + const cssRules = styleSheet?.cssRules || []; + for (let i = 0, ii = cssRules.length; i < ii; i++) { + const rule = cssRules[i]; + if (rule instanceof CSSMediaRule && rule.media?.[0] === "(prefers-color-scheme: dark)") { + if (cssTheme === ViewerCssTheme.LIGHT) { + styleSheet.deleteRule(i); + return; + } + const darkRules = /^@media \(prefers-color-scheme: dark\) {\n\s*([\w\s-.,:;/\\{}()]+)\n}$/.exec(rule.cssText); + if (darkRules?.[1]) { + styleSheet.deleteRule(i); + styleSheet.insertRule(darkRules[1], i); + } + return; + } + } + } catch (reason) { + console.error(`_forceCssTheme: "${reason?.message}".`); + } + }, + async _initializeViewerComponents() { + const { + appConfig, + externalServices + } = this; + const eventBus = externalServices.isInAutomation ? new _event_utils.AutomationEventBus() : new _event_utils.EventBus(); + this.eventBus = eventBus; + this.overlayManager = new _overlay_manager.OverlayManager(); + const pdfRenderingQueue = new _pdf_rendering_queue.PDFRenderingQueue(); + pdfRenderingQueue.onIdle = this._cleanup.bind(this); + this.pdfRenderingQueue = pdfRenderingQueue; + const pdfLinkService = new _pdf_link_service.PDFLinkService({ + eventBus, + externalLinkTarget: _app_options.AppOptions.get("externalLinkTarget"), + externalLinkRel: _app_options.AppOptions.get("externalLinkRel"), + ignoreDestinationZoom: _app_options.AppOptions.get("ignoreDestinationZoom") + }); + this.pdfLinkService = pdfLinkService; + const downloadManager = externalServices.createDownloadManager(); + this.downloadManager = downloadManager; + const findController = new _pdf_find_controller.PDFFindController({ + linkService: pdfLinkService, + eventBus, + updateMatchesCountOnProgress: true + }); + this.findController = findController; + const pdfScriptingManager = new _pdf_scripting_manager.PDFScriptingManager({ + eventBus, + sandboxBundleSrc: _app_options.AppOptions.get("sandboxBundleSrc"), + scriptingFactory: externalServices, + docPropertiesLookup: this._scriptingDocProperties.bind(this) + }); + this.pdfScriptingManager = pdfScriptingManager; + const container = appConfig.mainContainer, + viewer = appConfig.viewerContainer; + const annotationEditorMode = _app_options.AppOptions.get("annotationEditorMode"); + const pageColors = _app_options.AppOptions.get("forcePageColors") || window.matchMedia("(forced-colors: active)").matches ? { + background: _app_options.AppOptions.get("pageColorsBackground"), + foreground: _app_options.AppOptions.get("pageColorsForeground") + } : null; + this.pdfViewer = new _pdf_viewer.PDFViewer({ + container, + viewer, + eventBus, + renderingQueue: pdfRenderingQueue, + linkService: pdfLinkService, + downloadManager, + findController, + scriptingManager: _app_options.AppOptions.get("enableScripting") && pdfScriptingManager, + renderer: _app_options.AppOptions.get("renderer"), + l10n: this.l10n, + textLayerMode: _app_options.AppOptions.get("textLayerMode"), + annotationMode: _app_options.AppOptions.get("annotationMode"), + annotationEditorMode, + imageResourcesPath: _app_options.AppOptions.get("imageResourcesPath"), + enablePrintAutoRotate: _app_options.AppOptions.get("enablePrintAutoRotate"), + useOnlyCssZoom: _app_options.AppOptions.get("useOnlyCssZoom"), + isOffscreenCanvasSupported: _app_options.AppOptions.get("isOffscreenCanvasSupported"), + maxCanvasPixels: _app_options.AppOptions.get("maxCanvasPixels"), + enablePermissions: _app_options.AppOptions.get("enablePermissions"), + pageColors + }); + pdfRenderingQueue.setViewer(this.pdfViewer); + pdfLinkService.setViewer(this.pdfViewer); + pdfScriptingManager.setViewer(this.pdfViewer); + if (appConfig.sidebar?.thumbnailView) { + this.pdfThumbnailViewer = new _webPdf_thumbnail_viewer.PDFThumbnailViewer({ + container: appConfig.sidebar.thumbnailView, + renderingQueue: pdfRenderingQueue, + linkService: pdfLinkService, + l10n: this.l10n, + pageColors + }); + pdfRenderingQueue.setThumbnailViewer(this.pdfThumbnailViewer); + } + if (!this.isViewerEmbedded && !_app_options.AppOptions.get("disableHistory")) { + this.pdfHistory = new _pdf_history.PDFHistory({ + linkService: pdfLinkService, + eventBus + }); + pdfLinkService.setHistory(this.pdfHistory); + } + if (!this.supportsIntegratedFind && appConfig.findBar) { + this.findBar = new _webPdf_find_bar.PDFFindBar(appConfig.findBar, eventBus, this.l10n); + } + if (appConfig.annotationEditorParams) { + if (annotationEditorMode !== _pdfjsLib.AnnotationEditorType.DISABLE) { + this.annotationEditorParams = new _webAnnotation_editor_params.AnnotationEditorParams(appConfig.annotationEditorParams, eventBus); + } else { + for (const id of ["editorModeButtons", "editorModeSeparator"]) { + document.getElementById(id)?.classList.add("hidden"); + } + } + } + if (appConfig.documentProperties) { + this.pdfDocumentProperties = new _webPdf_document_properties.PDFDocumentProperties(appConfig.documentProperties, this.overlayManager, eventBus, this.l10n, () => { + return this._docFilename; + }); + } + if (appConfig.secondaryToolbar?.cursorHandToolButton) { + this.pdfCursorTools = new _webPdf_cursor_tools.PDFCursorTools({ + container, + eventBus, + cursorToolOnLoad: _app_options.AppOptions.get("cursorToolOnLoad") + }); + } + if (appConfig.toolbar) { + this.toolbar = new _webToolbar.Toolbar(appConfig.toolbar, eventBus, this.l10n); + } + if (appConfig.secondaryToolbar) { + this.secondaryToolbar = new _webSecondary_toolbar.SecondaryToolbar(appConfig.secondaryToolbar, eventBus, this.externalServices); + } + if (this.supportsFullscreen && appConfig.secondaryToolbar?.presentationModeButton) { + this.pdfPresentationMode = new _webPdf_presentation_mode.PDFPresentationMode({ + container, + pdfViewer: this.pdfViewer, + eventBus + }); + } + if (appConfig.passwordOverlay) { + this.passwordPrompt = new _password_prompt.PasswordPrompt(appConfig.passwordOverlay, this.overlayManager, this.l10n, this.isViewerEmbedded); + } + if (appConfig.sidebar?.outlineView) { + this.pdfOutlineViewer = new _webPdf_outline_viewer.PDFOutlineViewer({ + container: appConfig.sidebar.outlineView, + eventBus, + linkService: pdfLinkService, + downloadManager + }); + } + if (appConfig.sidebar?.attachmentsView) { + this.pdfAttachmentViewer = new _webPdf_attachment_viewer.PDFAttachmentViewer({ + container: appConfig.sidebar.attachmentsView, + eventBus, + downloadManager + }); + } + if (appConfig.sidebar?.layersView) { + this.pdfLayerViewer = new _webPdf_layer_viewer.PDFLayerViewer({ + container: appConfig.sidebar.layersView, + eventBus, + l10n: this.l10n + }); + } + if (appConfig.sidebar) { + this.pdfSidebar = new _webPdf_sidebar.PDFSidebar({ + elements: appConfig.sidebar, + pdfViewer: this.pdfViewer, + pdfThumbnailViewer: this.pdfThumbnailViewer, + eventBus, + l10n: this.l10n + }); + this.pdfSidebar.onToggled = this.forceRendering.bind(this); + this.pdfSidebarResizer = new _webPdf_sidebar_resizer.PDFSidebarResizer(appConfig.sidebarResizer, eventBus, this.l10n); + } + }, + run(config) { + this.initialize(config).then(webViewerInitialized); + }, + get initialized() { + return this._initializedCapability.settled; + }, + get initializedPromise() { + return this._initializedCapability.promise; + }, + zoomIn(steps, scaleFactor) { + if (this.pdfViewer.isInPresentationMode) { + return; + } + this.pdfViewer.increaseScale({ + drawingDelay: _app_options.AppOptions.get("defaultZoomDelay"), + steps, + scaleFactor + }); + }, + zoomOut(steps, scaleFactor) { + if (this.pdfViewer.isInPresentationMode) { + return; + } + this.pdfViewer.decreaseScale({ + drawingDelay: _app_options.AppOptions.get("defaultZoomDelay"), + steps, + scaleFactor + }); + }, + zoomReset() { + if (this.pdfViewer.isInPresentationMode) { + return; + } + this.pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; + }, + get pagesCount() { + return this.pdfDocument ? this.pdfDocument.numPages : 0; + }, + get page() { + return this.pdfViewer.currentPageNumber; + }, + set page(val) { + this.pdfViewer.currentPageNumber = val; + }, + get supportsPrinting() { + return PDFPrintServiceFactory.instance.supportsPrinting; + }, + get supportsFullscreen() { + return (0, _pdfjsLib.shadow)(this, "supportsFullscreen", document.fullscreenEnabled); + }, + get supportsPinchToZoom() { + return this.externalServices.supportsPinchToZoom; + }, + get supportsIntegratedFind() { + return this.externalServices.supportsIntegratedFind; + }, + get supportsDocumentFonts() { + return this.externalServices.supportsDocumentFonts; + }, + get loadingBar() { + const barElement = document.getElementById("loadingBar"); + const bar = barElement ? new _ui_utils.ProgressBar(barElement) : null; + return (0, _pdfjsLib.shadow)(this, "loadingBar", bar); + }, + get supportedMouseWheelZoomModifierKeys() { + return this.externalServices.supportedMouseWheelZoomModifierKeys; + }, + initPassiveLoading() { + throw new Error("Not implemented: initPassiveLoading"); + }, + setTitleUsingUrl(url = "", downloadUrl = null) { + this.url = url; + this.baseUrl = url.split("#")[0]; + if (downloadUrl) { + this._downloadUrl = downloadUrl === url ? this.baseUrl : downloadUrl.split("#")[0]; + } + if ((0, _pdfjsLib.isDataScheme)(url)) { + this._hideViewBookmark(); + } + let title = (0, _pdfjsLib.getPdfFilenameFromUrl)(url, ""); + if (!title) { + try { + title = decodeURIComponent((0, _pdfjsLib.getFilenameFromUrl)(url)) || url; + } catch (ex) { + title = url; + } + } + this.setTitle(title); + }, + setTitle(title = this._title) { + this._title = title; + if (this.isViewerEmbedded) { + return; + } + const editorIndicator = this._hasAnnotationEditors && !this.pdfRenderingQueue.printing; + document.title = `${editorIndicator ? "* " : ""}${title}`; + }, + get _docFilename() { + return this._contentDispositionFilename || (0, _pdfjsLib.getPdfFilenameFromUrl)(this.url); + }, + _hideViewBookmark() { + const { + secondaryToolbar + } = this.appConfig; + secondaryToolbar?.viewBookmarkButton.classList.add("hidden"); + if (secondaryToolbar?.presentationModeButton.classList.contains("hidden")) { + document.getElementById("viewBookmarkSeparator")?.classList.add("hidden"); + } + }, + async close() { + this._unblockDocumentLoadEvent(); + this._hideViewBookmark(); + if (!this.pdfLoadingTask) { + return; + } + if (this.pdfDocument?.annotationStorage.size > 0 && this._annotationStorageModified) { + try { + await this.save(); + } catch (reason) {} + } + const promises = []; + promises.push(this.pdfLoadingTask.destroy()); + this.pdfLoadingTask = null; + if (this.pdfDocument) { + this.pdfDocument = null; + this.pdfThumbnailViewer?.setDocument(null); + this.pdfViewer.setDocument(null); + this.pdfLinkService.setDocument(null); + this.pdfDocumentProperties?.setDocument(null); + } + this.pdfLinkService.externalLinkEnabled = true; + this.store = null; + this.isInitialViewSet = false; + this.downloadComplete = false; + this.url = ""; + this.baseUrl = ""; + this._downloadUrl = ""; + this.documentInfo = null; + this.metadata = null; + this._contentDispositionFilename = null; + this._contentLength = null; + this._saveInProgress = false; + this._hasAnnotationEditors = false; + promises.push(this.pdfScriptingManager.destroyPromise); + this.setTitle(); + this.pdfSidebar?.reset(); + this.pdfOutlineViewer?.reset(); + this.pdfAttachmentViewer?.reset(); + this.pdfLayerViewer?.reset(); + this.pdfHistory?.reset(); + this.findBar?.reset(); + this.toolbar?.reset(); + this.secondaryToolbar?.reset(); + this._PDFBug?.cleanup(); + await Promise.all(promises); + }, + async open(args) { + let deprecatedArgs = false; + if (typeof args === "string") { + args = { + url: args + }; + deprecatedArgs = true; + } else if (args?.byteLength) { + args = { + data: args + }; + deprecatedArgs = true; + } + if (deprecatedArgs) { + console.error("The `PDFViewerApplication.open` signature was updated, please use an object instead."); + } + if (this.pdfLoadingTask) { + await this.close(); + } + const workerParams = _app_options.AppOptions.getAll(_app_options.OptionKind.WORKER); + Object.assign(_pdfjsLib.GlobalWorkerOptions, workerParams); + if (args.url) { + this.setTitleUsingUrl(args.originalUrl || args.url, args.url); + } + const apiParams = _app_options.AppOptions.getAll(_app_options.OptionKind.API); + const params = { + canvasMaxAreaInBytes: this.externalServices.canvasMaxAreaInBytes, + ...apiParams, + ...args + }; + const loadingTask = (0, _pdfjsLib.getDocument)(params); + this.pdfLoadingTask = loadingTask; + loadingTask.onPassword = (updateCallback, reason) => { + if (this.isViewerEmbedded) { + this._unblockDocumentLoadEvent(); + } + this.pdfLinkService.externalLinkEnabled = false; + this.passwordPrompt.setUpdateCallback(updateCallback, reason); + this.passwordPrompt.open(); + }; + loadingTask.onProgress = ({ + loaded, + total + }) => { + this.progress(loaded / total); + }; + return loadingTask.promise.then(pdfDocument => { + this.load(pdfDocument); + }, reason => { + if (loadingTask !== this.pdfLoadingTask) { + return undefined; + } + let key = "loading_error"; + if (reason instanceof _pdfjsLib.InvalidPDFException) { + key = "invalid_file_error"; + } else if (reason instanceof _pdfjsLib.MissingPDFException) { + key = "missing_file_error"; + } else if (reason instanceof _pdfjsLib.UnexpectedResponseException) { + key = "unexpected_response_error"; + } + return this.l10n.get(key).then(msg => { + this._documentError(msg, { + message: reason?.message + }); + throw reason; + }); + }); + }, + _ensureDownloadComplete() { + if (this.pdfDocument && this.downloadComplete) { + return; + } + throw new Error("PDF document not downloaded."); + }, + async download() { + const url = this._downloadUrl, + filename = this._docFilename; + try { + this._ensureDownloadComplete(); + const data = await this.pdfDocument.getData(); + const blob = new Blob([data], { + type: "application/pdf" + }); + await this.downloadManager.download(blob, url, filename); + } catch (reason) { + await this.downloadManager.downloadUrl(url, filename); + } + }, + async save() { + if (this._saveInProgress) { + return; + } + this._saveInProgress = true; + await this.pdfScriptingManager.dispatchWillSave(); + const url = this._downloadUrl, + filename = this._docFilename; + try { + this._ensureDownloadComplete(); + const data = await this.pdfDocument.saveDocument(); + const blob = new Blob([data], { + type: "application/pdf" + }); + await this.downloadManager.download(blob, url, filename); + } catch (reason) { + console.error(`Error when saving the document: ${reason.message}`); + await this.download(); + } finally { + await this.pdfScriptingManager.dispatchDidSave(); + this._saveInProgress = false; + } + if (this._hasAnnotationEditors) { + this.externalServices.reportTelemetry({ + type: "editing", + data: { + type: "save" + } + }); + } + }, + downloadOrSave() { + if (this.pdfDocument?.annotationStorage.size > 0) { + this.save(); + } else { + this.download(); + } + }, + _documentError(message, moreInfo = null) { + this._unblockDocumentLoadEvent(); + this._otherError(message, moreInfo); + this.eventBus.dispatch("documenterror", { + source: this, + message, + reason: moreInfo?.message ?? null + }); + }, + _otherError(message, moreInfo = null) { + const moreInfoText = [`PDF.js v${_pdfjsLib.version || "?"} (build: ${_pdfjsLib.build || "?"})`]; + if (moreInfo) { + moreInfoText.push(`Message: ${moreInfo.message}`); + if (moreInfo.stack) { + moreInfoText.push(`Stack: ${moreInfo.stack}`); + } else { + if (moreInfo.filename) { + moreInfoText.push(`File: ${moreInfo.filename}`); + } + if (moreInfo.lineNumber) { + moreInfoText.push(`Line: ${moreInfo.lineNumber}`); + } + } + } + console.error(`${message}\n\n${moreInfoText.join("\n")}`); + }, + progress(level) { + if (!this.loadingBar || this.downloadComplete) { + return; + } + const percent = Math.round(level * 100); + if (percent <= this.loadingBar.percent) { + return; + } + this.loadingBar.percent = percent; + if (this.pdfDocument?.loadingParams.disableAutoFetch ?? _app_options.AppOptions.get("disableAutoFetch")) { + this.loadingBar.setDisableAutoFetch(); + } + }, + load(pdfDocument) { + this.pdfDocument = pdfDocument; + pdfDocument.getDownloadInfo().then(({ + length + }) => { + this._contentLength = length; + this.downloadComplete = true; + this.loadingBar?.hide(); + firstPagePromise.then(() => { + this.eventBus.dispatch("documentloaded", { + source: this + }); + }); + }); + const pageLayoutPromise = pdfDocument.getPageLayout().catch(function () {}); + const pageModePromise = pdfDocument.getPageMode().catch(function () {}); + const openActionPromise = pdfDocument.getOpenAction().catch(function () {}); + this.toolbar?.setPagesCount(pdfDocument.numPages, false); + this.secondaryToolbar?.setPagesCount(pdfDocument.numPages); + this.pdfLinkService.setDocument(pdfDocument); + this.pdfDocumentProperties?.setDocument(pdfDocument); + const pdfViewer = this.pdfViewer; + pdfViewer.setDocument(pdfDocument); + const { + firstPagePromise, + onePageRendered, + pagesPromise + } = pdfViewer; + this.pdfThumbnailViewer?.setDocument(pdfDocument); + const storedPromise = (this.store = new _view_history.ViewHistory(pdfDocument.fingerprints[0])).getMultiple({ + page: null, + zoom: _ui_utils.DEFAULT_SCALE_VALUE, + scrollLeft: "0", + scrollTop: "0", + rotation: null, + sidebarView: _ui_utils.SidebarView.UNKNOWN, + scrollMode: _ui_utils.ScrollMode.UNKNOWN, + spreadMode: _ui_utils.SpreadMode.UNKNOWN + }).catch(() => { + return Object.create(null); + }); + firstPagePromise.then(pdfPage => { + this.loadingBar?.setWidth(this.appConfig.viewerContainer); + this._initializeAnnotationStorageCallbacks(pdfDocument); + Promise.all([_ui_utils.animationStarted, storedPromise, pageLayoutPromise, pageModePromise, openActionPromise]).then(async ([timeStamp, stored, pageLayout, pageMode, openAction]) => { + const viewOnLoad = _app_options.AppOptions.get("viewOnLoad"); + this._initializePdfHistory({ + fingerprint: pdfDocument.fingerprints[0], + viewOnLoad, + initialDest: openAction?.dest + }); + const initialBookmark = this.initialBookmark; + const zoom = _app_options.AppOptions.get("defaultZoomValue"); + let hash = zoom ? `zoom=${zoom}` : null; + let rotation = null; + let sidebarView = _app_options.AppOptions.get("sidebarViewOnLoad"); + let scrollMode = _app_options.AppOptions.get("scrollModeOnLoad"); + let spreadMode = _app_options.AppOptions.get("spreadModeOnLoad"); + if (stored.page && viewOnLoad !== ViewOnLoad.INITIAL) { + hash = `page=${stored.page}&zoom=${zoom || stored.zoom},` + `${stored.scrollLeft},${stored.scrollTop}`; + rotation = parseInt(stored.rotation, 10); + if (sidebarView === _ui_utils.SidebarView.UNKNOWN) { + sidebarView = stored.sidebarView | 0; + } + if (scrollMode === _ui_utils.ScrollMode.UNKNOWN) { + scrollMode = stored.scrollMode | 0; + } + if (spreadMode === _ui_utils.SpreadMode.UNKNOWN) { + spreadMode = stored.spreadMode | 0; + } + } + if (pageMode && sidebarView === _ui_utils.SidebarView.UNKNOWN) { + sidebarView = (0, _ui_utils.apiPageModeToSidebarView)(pageMode); + } + if (pageLayout && scrollMode === _ui_utils.ScrollMode.UNKNOWN && spreadMode === _ui_utils.SpreadMode.UNKNOWN) { + const modes = (0, _ui_utils.apiPageLayoutToViewerModes)(pageLayout); + spreadMode = modes.spreadMode; + } + this.setInitialView(hash, { + rotation, + sidebarView, + scrollMode, + spreadMode + }); + this.eventBus.dispatch("documentinit", { + source: this + }); + if (!this.isViewerEmbedded) { + pdfViewer.focus(); + } + await Promise.race([pagesPromise, new Promise(resolve => { + setTimeout(resolve, FORCE_PAGES_LOADED_TIMEOUT); + })]); + if (!initialBookmark && !hash) { + return; + } + if (pdfViewer.hasEqualPageSizes) { + return; + } + this.initialBookmark = initialBookmark; + pdfViewer.currentScaleValue = pdfViewer.currentScaleValue; + this.setInitialView(hash); + }).catch(() => { + this.setInitialView(); + }).then(function () { + pdfViewer.update(); + }); + }); + pagesPromise.then(() => { + this._unblockDocumentLoadEvent(); + this._initializeAutoPrint(pdfDocument, openActionPromise); + }, reason => { + this.l10n.get("loading_error").then(msg => { + this._documentError(msg, { + message: reason?.message + }); + }); + }); + onePageRendered.then(data => { + this.externalServices.reportTelemetry({ + type: "pageInfo", + timestamp: data.timestamp + }); + if (this.pdfOutlineViewer) { + pdfDocument.getOutline().then(outline => { + if (pdfDocument !== this.pdfDocument) { + return; + } + this.pdfOutlineViewer.render({ + outline, + pdfDocument + }); + }); + } + if (this.pdfAttachmentViewer) { + pdfDocument.getAttachments().then(attachments => { + if (pdfDocument !== this.pdfDocument) { + return; + } + this.pdfAttachmentViewer.render({ + attachments + }); + }); + } + if (this.pdfLayerViewer) { + pdfViewer.optionalContentConfigPromise.then(optionalContentConfig => { + if (pdfDocument !== this.pdfDocument) { + return; + } + this.pdfLayerViewer.render({ + optionalContentConfig, + pdfDocument + }); + }); + } + }); + this._initializePageLabels(pdfDocument); + this._initializeMetadata(pdfDocument); + }, + async _scriptingDocProperties(pdfDocument) { + if (!this.documentInfo) { + await new Promise(resolve => { + this.eventBus._on("metadataloaded", resolve, { + once: true + }); + }); + if (pdfDocument !== this.pdfDocument) { + return null; + } + } + if (!this._contentLength) { + await new Promise(resolve => { + this.eventBus._on("documentloaded", resolve, { + once: true + }); + }); + if (pdfDocument !== this.pdfDocument) { + return null; + } + } + return { + ...this.documentInfo, + baseURL: this.baseUrl, + filesize: this._contentLength, + filename: this._docFilename, + metadata: this.metadata?.getRaw(), + authors: this.metadata?.get("dc:creator"), + numPages: this.pagesCount, + URL: this.url + }; + }, + async _initializeAutoPrint(pdfDocument, openActionPromise) { + const [openAction, javaScript] = await Promise.all([openActionPromise, !this.pdfViewer.enableScripting ? pdfDocument.getJavaScript() : null]); + if (pdfDocument !== this.pdfDocument) { + return; + } + let triggerAutoPrint = false; + if (openAction?.action === "Print") { + triggerAutoPrint = true; + } + if (javaScript) { + javaScript.some(js => { + if (!js) { + return false; + } + console.warn("Warning: JavaScript support is not enabled"); + return true; + }); + if (!triggerAutoPrint) { + for (const js of javaScript) { + if (js && _ui_utils.AutoPrintRegExp.test(js)) { + triggerAutoPrint = true; + break; + } + } + } + } + if (triggerAutoPrint) { + this.triggerPrinting(); + } + }, + async _initializeMetadata(pdfDocument) { + const { + info, + metadata, + contentDispositionFilename, + contentLength + } = await pdfDocument.getMetadata(); + if (pdfDocument !== this.pdfDocument) { + return; + } + this.documentInfo = info; + this.metadata = metadata; + this._contentDispositionFilename ??= contentDispositionFilename; + this._contentLength ??= contentLength; + console.log(`PDF ${pdfDocument.fingerprints[0]} [${info.PDFFormatVersion} ` + `${(info.Producer || "-").trim()} / ${(info.Creator || "-").trim()}] ` + `(PDF.js: ${_pdfjsLib.version || "?"} [${_pdfjsLib.build || "?"}])`); + let pdfTitle = info.Title; + const metadataTitle = metadata?.get("dc:title"); + if (metadataTitle) { + if (metadataTitle !== "Untitled" && !/[\uFFF0-\uFFFF]/g.test(metadataTitle)) { + pdfTitle = metadataTitle; + } + } + if (pdfTitle) { + this.setTitle(`${pdfTitle} - ${this._contentDispositionFilename || this._title}`); + } else if (this._contentDispositionFilename) { + this.setTitle(this._contentDispositionFilename); + } + if (info.IsXFAPresent && !info.IsAcroFormPresent && !pdfDocument.isPureXfa) { + if (pdfDocument.loadingParams.enableXfa) { + console.warn("Warning: XFA Foreground documents are not supported"); + } else { + console.warn("Warning: XFA support is not enabled"); + } + } else if ((info.IsAcroFormPresent || info.IsXFAPresent) && !this.pdfViewer.renderForms) { + console.warn("Warning: Interactive form support is not enabled"); + } + if (info.IsSignaturesPresent) { + console.warn("Warning: Digital signatures validation is not supported"); + } + this.eventBus.dispatch("metadataloaded", { + source: this + }); + }, + async _initializePageLabels(pdfDocument) { + const labels = await pdfDocument.getPageLabels(); + if (pdfDocument !== this.pdfDocument) { + return; + } + if (!labels || _app_options.AppOptions.get("disablePageLabels")) { + return; + } + const numLabels = labels.length; + let standardLabels = 0, + emptyLabels = 0; + for (let i = 0; i < numLabels; i++) { + const label = labels[i]; + if (label === (i + 1).toString()) { + standardLabels++; + } else if (label === "") { + emptyLabels++; + } else { + break; + } + } + if (standardLabels >= numLabels || emptyLabels >= numLabels) { + return; + } + const { + pdfViewer, + pdfThumbnailViewer, + toolbar + } = this; + pdfViewer.setPageLabels(labels); + pdfThumbnailViewer?.setPageLabels(labels); + toolbar?.setPagesCount(numLabels, true); + toolbar?.setPageNumber(pdfViewer.currentPageNumber, pdfViewer.currentPageLabel); + }, + _initializePdfHistory({ + fingerprint, + viewOnLoad, + initialDest = null + }) { + if (!this.pdfHistory) { + return; + } + this.pdfHistory.initialize({ + fingerprint, + resetHistory: viewOnLoad === ViewOnLoad.INITIAL, + updateUrl: _app_options.AppOptions.get("historyUpdateUrl") + }); + if (this.pdfHistory.initialBookmark) { + this.initialBookmark = this.pdfHistory.initialBookmark; + this.initialRotation = this.pdfHistory.initialRotation; + } + if (initialDest && !this.initialBookmark && viewOnLoad === ViewOnLoad.UNKNOWN) { + this.initialBookmark = JSON.stringify(initialDest); + this.pdfHistory.push({ + explicitDest: initialDest, + pageNumber: null + }); + } + }, + _initializeAnnotationStorageCallbacks(pdfDocument) { + if (pdfDocument !== this.pdfDocument) { + return; + } + const { + annotationStorage + } = pdfDocument; + annotationStorage.onSetModified = () => { + window.addEventListener("beforeunload", beforeUnload); + this._annotationStorageModified = true; + }; + annotationStorage.onResetModified = () => { + window.removeEventListener("beforeunload", beforeUnload); + delete this._annotationStorageModified; + }; + annotationStorage.onAnnotationEditor = typeStr => { + this._hasAnnotationEditors = !!typeStr; + this.setTitle(); + if (typeStr) { + this.externalServices.reportTelemetry({ + type: "editing", + data: { + type: typeStr + } + }); + } + }; + }, + setInitialView(storedHash, { + rotation, + sidebarView, + scrollMode, + spreadMode + } = {}) { + const setRotation = angle => { + if ((0, _ui_utils.isValidRotation)(angle)) { + this.pdfViewer.pagesRotation = angle; + } + }; + const setViewerModes = (scroll, spread) => { + if ((0, _ui_utils.isValidScrollMode)(scroll)) { + this.pdfViewer.scrollMode = scroll; + } + if ((0, _ui_utils.isValidSpreadMode)(spread)) { + this.pdfViewer.spreadMode = spread; + } + }; + this.isInitialViewSet = true; + this.pdfSidebar?.setInitialView(sidebarView); + setViewerModes(scrollMode, spreadMode); + if (this.initialBookmark) { + setRotation(this.initialRotation); + delete this.initialRotation; + this.pdfLinkService.setHash(this.initialBookmark); + this.initialBookmark = null; + } else if (storedHash) { + setRotation(rotation); + this.pdfLinkService.setHash(storedHash); + } + this.toolbar?.setPageNumber(this.pdfViewer.currentPageNumber, this.pdfViewer.currentPageLabel); + this.secondaryToolbar?.setPageNumber(this.pdfViewer.currentPageNumber); + if (!this.pdfViewer.currentScaleValue) { + this.pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; + } + }, + _cleanup() { + if (!this.pdfDocument) { + return; + } + this.pdfViewer.cleanup(); + this.pdfThumbnailViewer?.cleanup(); + this.pdfDocument.cleanup(this.pdfViewer.renderer === _ui_utils.RendererType.SVG); + }, + forceRendering() { + this.pdfRenderingQueue.printing = !!this.printService; + this.pdfRenderingQueue.isThumbnailViewEnabled = this.pdfSidebar?.visibleView === _ui_utils.SidebarView.THUMBS; + this.pdfRenderingQueue.renderHighestPriority(); + }, + beforePrint() { + this._printAnnotationStoragePromise = this.pdfScriptingManager.dispatchWillPrint().catch(() => {}).then(() => { + return this.pdfDocument?.annotationStorage.print; + }); + if (this.printService) { + return; + } + if (!this.supportsPrinting) { + this.l10n.get("printing_not_supported").then(msg => { + this._otherError(msg); + }); + return; + } + if (!this.pdfViewer.pageViewsReady) { + this.l10n.get("printing_not_ready").then(msg => { + window.alert(msg); + }); + return; + } + const pagesOverview = this.pdfViewer.getPagesOverview(); + const printContainer = this.appConfig.printContainer; + const printResolution = _app_options.AppOptions.get("printResolution"); + const optionalContentConfigPromise = this.pdfViewer.optionalContentConfigPromise; + const printService = PDFPrintServiceFactory.instance.createPrintService(this.pdfDocument, pagesOverview, printContainer, printResolution, optionalContentConfigPromise, this._printAnnotationStoragePromise, this.l10n); + this.printService = printService; + this.forceRendering(); + this.setTitle(); + printService.layout(); + if (this._hasAnnotationEditors) { + this.externalServices.reportTelemetry({ + type: "editing", + data: { + type: "print" + } + }); + } + }, + afterPrint() { + if (this._printAnnotationStoragePromise) { + this._printAnnotationStoragePromise.then(() => { + this.pdfScriptingManager.dispatchDidPrint(); + }); + this._printAnnotationStoragePromise = null; + } + if (this.printService) { + this.printService.destroy(); + this.printService = null; + this.pdfDocument?.annotationStorage.resetModified(); + } + this.forceRendering(); + this.setTitle(); + }, + rotatePages(delta) { + this.pdfViewer.pagesRotation += delta; + }, + requestPresentationMode() { + this.pdfPresentationMode?.request(); + }, + triggerPrinting() { + if (!this.supportsPrinting) { + return; + } + window.print(); + }, + bindEvents() { + const { + eventBus, + _boundEvents + } = this; + _boundEvents.beforePrint = this.beforePrint.bind(this); + _boundEvents.afterPrint = this.afterPrint.bind(this); + eventBus._on("resize", webViewerResize); + eventBus._on("hashchange", webViewerHashchange); + eventBus._on("beforeprint", _boundEvents.beforePrint); + eventBus._on("afterprint", _boundEvents.afterPrint); + eventBus._on("pagerender", webViewerPageRender); + eventBus._on("pagerendered", webViewerPageRendered); + eventBus._on("updateviewarea", webViewerUpdateViewarea); + eventBus._on("pagechanging", webViewerPageChanging); + eventBus._on("scalechanging", webViewerScaleChanging); + eventBus._on("rotationchanging", webViewerRotationChanging); + eventBus._on("sidebarviewchanged", webViewerSidebarViewChanged); + eventBus._on("pagemode", webViewerPageMode); + eventBus._on("namedaction", webViewerNamedAction); + eventBus._on("presentationmodechanged", webViewerPresentationModeChanged); + eventBus._on("presentationmode", webViewerPresentationMode); + eventBus._on("switchannotationeditormode", webViewerSwitchAnnotationEditorMode); + eventBus._on("switchannotationeditorparams", webViewerSwitchAnnotationEditorParams); + eventBus._on("print", webViewerPrint); + eventBus._on("download", webViewerDownload); + eventBus._on("firstpage", webViewerFirstPage); + eventBus._on("lastpage", webViewerLastPage); + eventBus._on("nextpage", webViewerNextPage); + eventBus._on("previouspage", webViewerPreviousPage); + eventBus._on("zoomin", webViewerZoomIn); + eventBus._on("zoomout", webViewerZoomOut); + eventBus._on("zoomreset", webViewerZoomReset); + eventBus._on("pagenumberchanged", webViewerPageNumberChanged); + eventBus._on("scalechanged", webViewerScaleChanged); + eventBus._on("rotatecw", webViewerRotateCw); + eventBus._on("rotateccw", webViewerRotateCcw); + eventBus._on("optionalcontentconfig", webViewerOptionalContentConfig); + eventBus._on("switchscrollmode", webViewerSwitchScrollMode); + eventBus._on("scrollmodechanged", webViewerScrollModeChanged); + eventBus._on("switchspreadmode", webViewerSwitchSpreadMode); + eventBus._on("spreadmodechanged", webViewerSpreadModeChanged); + eventBus._on("documentproperties", webViewerDocumentProperties); + eventBus._on("findfromurlhash", webViewerFindFromUrlHash); + eventBus._on("updatefindmatchescount", webViewerUpdateFindMatchesCount); + eventBus._on("updatefindcontrolstate", webViewerUpdateFindControlState); + if (_app_options.AppOptions.get("pdfBug")) { + _boundEvents.reportPageStatsPDFBug = reportPageStatsPDFBug; + eventBus._on("pagerendered", _boundEvents.reportPageStatsPDFBug); + eventBus._on("pagechanging", _boundEvents.reportPageStatsPDFBug); + } + eventBus._on("fileinputchange", webViewerFileInputChange); + eventBus._on("openfile", webViewerOpenFile); + }, + bindWindowEvents() { + const { + eventBus, + _boundEvents + } = this; + function addWindowResolutionChange(evt = null) { + if (evt) { + webViewerResolutionChange(evt); + } + const mediaQueryList = window.matchMedia(`(resolution: ${window.devicePixelRatio || 1}dppx)`); + mediaQueryList.addEventListener("change", addWindowResolutionChange, { + once: true + }); + _boundEvents.removeWindowResolutionChange ||= function () { + mediaQueryList.removeEventListener("change", addWindowResolutionChange); + _boundEvents.removeWindowResolutionChange = null; + }; + } + addWindowResolutionChange(); + _boundEvents.windowResize = () => { + eventBus.dispatch("resize", { + source: window + }); + }; + _boundEvents.windowHashChange = () => { + eventBus.dispatch("hashchange", { + source: window, + hash: document.location.hash.substring(1) + }); + }; + _boundEvents.windowBeforePrint = () => { + eventBus.dispatch("beforeprint", { + source: window + }); + }; + _boundEvents.windowAfterPrint = () => { + eventBus.dispatch("afterprint", { + source: window + }); + }; + _boundEvents.windowUpdateFromSandbox = event => { + eventBus.dispatch("updatefromsandbox", { + source: window, + detail: event.detail + }); + }; + window.addEventListener("visibilitychange", webViewerVisibilityChange); + window.addEventListener("wheel", webViewerWheel, { + passive: false + }); + window.addEventListener("touchstart", webViewerTouchStart, { + passive: false + }); + window.addEventListener("touchmove", webViewerTouchMove, { + passive: false + }); + window.addEventListener("touchend", webViewerTouchEnd, { + passive: false + }); + window.addEventListener("click", webViewerClick); + window.addEventListener("keydown", webViewerKeyDown); + window.addEventListener("keyup", webViewerKeyUp); + window.addEventListener("resize", _boundEvents.windowResize); + window.addEventListener("hashchange", _boundEvents.windowHashChange); + window.addEventListener("beforeprint", _boundEvents.windowBeforePrint); + window.addEventListener("afterprint", _boundEvents.windowAfterPrint); + window.addEventListener("updatefromsandbox", _boundEvents.windowUpdateFromSandbox); + }, + unbindEvents() { + const { + eventBus, + _boundEvents + } = this; + eventBus._off("resize", webViewerResize); + eventBus._off("hashchange", webViewerHashchange); + eventBus._off("beforeprint", _boundEvents.beforePrint); + eventBus._off("afterprint", _boundEvents.afterPrint); + eventBus._off("pagerender", webViewerPageRender); + eventBus._off("pagerendered", webViewerPageRendered); + eventBus._off("updateviewarea", webViewerUpdateViewarea); + eventBus._off("pagechanging", webViewerPageChanging); + eventBus._off("scalechanging", webViewerScaleChanging); + eventBus._off("rotationchanging", webViewerRotationChanging); + eventBus._off("sidebarviewchanged", webViewerSidebarViewChanged); + eventBus._off("pagemode", webViewerPageMode); + eventBus._off("namedaction", webViewerNamedAction); + eventBus._off("presentationmodechanged", webViewerPresentationModeChanged); + eventBus._off("presentationmode", webViewerPresentationMode); + eventBus._off("print", webViewerPrint); + eventBus._off("download", webViewerDownload); + eventBus._off("firstpage", webViewerFirstPage); + eventBus._off("lastpage", webViewerLastPage); + eventBus._off("nextpage", webViewerNextPage); + eventBus._off("previouspage", webViewerPreviousPage); + eventBus._off("zoomin", webViewerZoomIn); + eventBus._off("zoomout", webViewerZoomOut); + eventBus._off("zoomreset", webViewerZoomReset); + eventBus._off("pagenumberchanged", webViewerPageNumberChanged); + eventBus._off("scalechanged", webViewerScaleChanged); + eventBus._off("rotatecw", webViewerRotateCw); + eventBus._off("rotateccw", webViewerRotateCcw); + eventBus._off("optionalcontentconfig", webViewerOptionalContentConfig); + eventBus._off("switchscrollmode", webViewerSwitchScrollMode); + eventBus._off("scrollmodechanged", webViewerScrollModeChanged); + eventBus._off("switchspreadmode", webViewerSwitchSpreadMode); + eventBus._off("spreadmodechanged", webViewerSpreadModeChanged); + eventBus._off("documentproperties", webViewerDocumentProperties); + eventBus._off("findfromurlhash", webViewerFindFromUrlHash); + eventBus._off("updatefindmatchescount", webViewerUpdateFindMatchesCount); + eventBus._off("updatefindcontrolstate", webViewerUpdateFindControlState); + if (_boundEvents.reportPageStatsPDFBug) { + eventBus._off("pagerendered", _boundEvents.reportPageStatsPDFBug); + eventBus._off("pagechanging", _boundEvents.reportPageStatsPDFBug); + _boundEvents.reportPageStatsPDFBug = null; + } + eventBus._off("fileinputchange", webViewerFileInputChange); + eventBus._off("openfile", webViewerOpenFile); + _boundEvents.beforePrint = null; + _boundEvents.afterPrint = null; + }, + unbindWindowEvents() { + const { + _boundEvents + } = this; + window.removeEventListener("visibilitychange", webViewerVisibilityChange); + window.removeEventListener("wheel", webViewerWheel, { + passive: false + }); + window.removeEventListener("touchstart", webViewerTouchStart, { + passive: false + }); + window.removeEventListener("touchmove", webViewerTouchMove, { + passive: false + }); + window.removeEventListener("touchend", webViewerTouchEnd, { + passive: false + }); + window.removeEventListener("click", webViewerClick); + window.removeEventListener("keydown", webViewerKeyDown); + window.removeEventListener("keyup", webViewerKeyUp); + window.removeEventListener("resize", _boundEvents.windowResize); + window.removeEventListener("hashchange", _boundEvents.windowHashChange); + window.removeEventListener("beforeprint", _boundEvents.windowBeforePrint); + window.removeEventListener("afterprint", _boundEvents.windowAfterPrint); + window.removeEventListener("updatefromsandbox", _boundEvents.windowUpdateFromSandbox); + _boundEvents.removeWindowResolutionChange?.(); + _boundEvents.windowResize = null; + _boundEvents.windowHashChange = null; + _boundEvents.windowBeforePrint = null; + _boundEvents.windowAfterPrint = null; + _boundEvents.windowUpdateFromSandbox = null; + }, + _accumulateTicks(ticks, prop) { + if (this[prop] > 0 && ticks < 0 || this[prop] < 0 && ticks > 0) { + this[prop] = 0; + } + this[prop] += ticks; + const wholeTicks = Math.trunc(this[prop]); + this[prop] -= wholeTicks; + return wholeTicks; + }, + _accumulateFactor(previousScale, factor, prop) { + if (factor === 1) { + return 1; + } + if (this[prop] > 1 && factor < 1 || this[prop] < 1 && factor > 1) { + this[prop] = 1; + } + const newFactor = Math.floor(previousScale * factor * this[prop] * 100) / (100 * previousScale); + this[prop] = factor / newFactor; + return newFactor; + }, + _centerAtPos(previousScale, x, y) { + const { + pdfViewer + } = this; + const scaleDiff = pdfViewer.currentScale / previousScale - 1; + if (scaleDiff !== 0) { + const [top, left] = pdfViewer.containerTopLeft; + pdfViewer.container.scrollLeft += (x - left) * scaleDiff; + pdfViewer.container.scrollTop += (y - top) * scaleDiff; + } + }, + _unblockDocumentLoadEvent() { + document.blockUnblockOnload?.(false); + this._unblockDocumentLoadEvent = () => {}; + }, + get scriptingReady() { + return this.pdfScriptingManager.ready; + } +}; +exports.PDFViewerApplication = PDFViewerApplication; +{ + const HOSTED_VIEWER_ORIGINS = ["null", "http://mozilla.github.io", "https://mozilla.github.io"]; + var validateFileURL = function (file) { + if (!file) { + return; + } + try { + const viewerOrigin = new URL(window.location.href).origin || "null"; + if (HOSTED_VIEWER_ORIGINS.includes(viewerOrigin)) { + return; + } + const fileOrigin = new URL(file, window.location.href).origin; + if (fileOrigin !== viewerOrigin) { + throw new Error("file origin does not match viewer's"); + } + } catch (ex) { + PDFViewerApplication.l10n.get("loading_error").then(msg => { + PDFViewerApplication._documentError(msg, { + message: ex?.message + }); + }); + throw ex; + } + }; +} +async function loadFakeWorker() { + _pdfjsLib.GlobalWorkerOptions.workerSrc ||= _app_options.AppOptions.get("workerSrc"); + await (0, _pdfjsLib.loadScript)(_pdfjsLib.PDFWorker.workerSrc); +} +async function loadPDFBug(self) { + const { + debuggerScriptPath + } = self.appConfig; + const { + PDFBug + } = await import(debuggerScriptPath); + self._PDFBug = PDFBug; +} +function reportPageStatsPDFBug({ + pageNumber +}) { + if (!globalThis.Stats?.enabled) { + return; + } + const pageView = PDFViewerApplication.pdfViewer.getPageView(pageNumber - 1); + globalThis.Stats.add(pageNumber, pageView?.pdfPage?.stats); +} +function webViewerInitialized() { + const { + appConfig, + eventBus, + l10n + } = PDFViewerApplication; + let file; + const queryString = document.location.search.substring(1); + const params = (0, _ui_utils.parseQueryString)(queryString); + file = params.get("file") ?? _app_options.AppOptions.get("defaultUrl"); + validateFileURL(file); + const fileInput = appConfig.openFileInput; + fileInput.value = null; + fileInput.addEventListener("change", function (evt) { + const { + files + } = evt.target; + if (!files || files.length === 0) { + return; + } + eventBus.dispatch("fileinputchange", { + source: this, + fileInput: evt.target + }); + }); + appConfig.mainContainer.addEventListener("dragover", function (evt) { + evt.preventDefault(); + evt.dataTransfer.dropEffect = evt.dataTransfer.effectAllowed === "copy" ? "copy" : "move"; + }); + appConfig.mainContainer.addEventListener("drop", function (evt) { + evt.preventDefault(); + const { + files + } = evt.dataTransfer; + if (!files || files.length === 0) { + return; + } + eventBus.dispatch("fileinputchange", { + source: this, + fileInput: evt.dataTransfer + }); + }); + if (!PDFViewerApplication.supportsDocumentFonts) { + _app_options.AppOptions.set("disableFontFace", true); + l10n.get("web_fonts_disabled").then(msg => { + console.warn(msg); + }); + } + if (!PDFViewerApplication.supportsPrinting) { + appConfig.toolbar?.print.classList.add("hidden"); + appConfig.secondaryToolbar?.printButton.classList.add("hidden"); + } + if (!PDFViewerApplication.supportsFullscreen) { + appConfig.secondaryToolbar?.presentationModeButton.classList.add("hidden"); + } + if (PDFViewerApplication.supportsIntegratedFind) { + appConfig.toolbar?.viewFind.classList.add("hidden"); + } + appConfig.mainContainer.addEventListener("transitionend", function (evt) { + if (evt.target === this) { + eventBus.dispatch("resize", { + source: this + }); + } + }, true); + try { + if (file) { + PDFViewerApplication.open({ + url: file + }); + } else { + PDFViewerApplication._hideViewBookmark(); + } + } catch (reason) { + l10n.get("loading_error").then(msg => { + PDFViewerApplication._documentError(msg, reason); + }); + } +} +function webViewerPageRender({ + pageNumber +}) { + if (pageNumber === PDFViewerApplication.page) { + PDFViewerApplication.toolbar?.updateLoadingIndicatorState(true); + } +} +function webViewerPageRendered({ + pageNumber, + error +}) { + if (pageNumber === PDFViewerApplication.page) { + PDFViewerApplication.toolbar?.updateLoadingIndicatorState(false); + } + if (PDFViewerApplication.pdfSidebar?.visibleView === _ui_utils.SidebarView.THUMBS) { + const pageView = PDFViewerApplication.pdfViewer.getPageView(pageNumber - 1); + const thumbnailView = PDFViewerApplication.pdfThumbnailViewer?.getThumbnail(pageNumber - 1); + if (pageView && thumbnailView) { + thumbnailView.setImage(pageView); + } + } + if (error) { + PDFViewerApplication.l10n.get("rendering_error").then(msg => { + PDFViewerApplication._otherError(msg, error); + }); + } +} +function webViewerPageMode({ + mode +}) { + let view; + switch (mode) { + case "thumbs": + view = _ui_utils.SidebarView.THUMBS; + break; + case "bookmarks": + case "outline": + view = _ui_utils.SidebarView.OUTLINE; + break; + case "attachments": + view = _ui_utils.SidebarView.ATTACHMENTS; + break; + case "layers": + view = _ui_utils.SidebarView.LAYERS; + break; + case "none": + view = _ui_utils.SidebarView.NONE; + break; + default: + console.error('Invalid "pagemode" hash parameter: ' + mode); + return; + } + PDFViewerApplication.pdfSidebar?.switchView(view, true); +} +function webViewerNamedAction(evt) { + switch (evt.action) { + case "GoToPage": + PDFViewerApplication.appConfig.toolbar?.pageNumber.select(); + break; + case "Find": + if (!PDFViewerApplication.supportsIntegratedFind) { + PDFViewerApplication?.findBar.toggle(); + } + break; + case "Print": + PDFViewerApplication.triggerPrinting(); + break; + case "SaveAs": + PDFViewerApplication.downloadOrSave(); + break; + } +} +function webViewerPresentationModeChanged(evt) { + PDFViewerApplication.pdfViewer.presentationModeState = evt.state; +} +function webViewerSidebarViewChanged({ + view +}) { + PDFViewerApplication.pdfRenderingQueue.isThumbnailViewEnabled = view === _ui_utils.SidebarView.THUMBS; + if (PDFViewerApplication.isInitialViewSet) { + PDFViewerApplication.store?.set("sidebarView", view).catch(() => {}); + } +} +function webViewerUpdateViewarea({ + location +}) { + if (PDFViewerApplication.isInitialViewSet) { + PDFViewerApplication.store?.setMultiple({ + page: location.pageNumber, + zoom: location.scale, + scrollLeft: location.left, + scrollTop: location.top, + rotation: location.rotation + }).catch(() => {}); + } + if (PDFViewerApplication.appConfig.secondaryToolbar) { + const href = PDFViewerApplication.pdfLinkService.getAnchorUrl(location.pdfOpenParams); + PDFViewerApplication.appConfig.secondaryToolbar.viewBookmarkButton.href = href; + } +} +function webViewerScrollModeChanged(evt) { + if (PDFViewerApplication.isInitialViewSet && !PDFViewerApplication.pdfViewer.isInPresentationMode) { + PDFViewerApplication.store?.set("scrollMode", evt.mode).catch(() => {}); + } +} +function webViewerSpreadModeChanged(evt) { + if (PDFViewerApplication.isInitialViewSet && !PDFViewerApplication.pdfViewer.isInPresentationMode) { + PDFViewerApplication.store?.set("spreadMode", evt.mode).catch(() => {}); + } +} +function webViewerResize() { + const { + pdfDocument, + pdfViewer, + pdfRenderingQueue + } = PDFViewerApplication; + if (pdfRenderingQueue.printing && window.matchMedia("print").matches) { + return; + } + if (!pdfDocument) { + return; + } + const currentScaleValue = pdfViewer.currentScaleValue; + if (currentScaleValue === "auto" || currentScaleValue === "page-fit" || currentScaleValue === "page-width") { + pdfViewer.currentScaleValue = currentScaleValue; + } + pdfViewer.update(); +} +function webViewerHashchange(evt) { + const hash = evt.hash; + if (!hash) { + return; + } + if (!PDFViewerApplication.isInitialViewSet) { + PDFViewerApplication.initialBookmark = hash; + } else if (!PDFViewerApplication.pdfHistory?.popStateInProgress) { + PDFViewerApplication.pdfLinkService.setHash(hash); + } +} +{ + var webViewerFileInputChange = function (evt) { + if (PDFViewerApplication.pdfViewer?.isInPresentationMode) { + return; + } + const file = evt.fileInput.files[0]; + PDFViewerApplication.open({ + url: URL.createObjectURL(file), + originalUrl: file.name + }); + }; + var webViewerOpenFile = function (evt) { + const fileInput = PDFViewerApplication.appConfig.openFileInput; + fileInput.click(); + }; +} +function webViewerPresentationMode() { + PDFViewerApplication.requestPresentationMode(); +} +function webViewerSwitchAnnotationEditorMode(evt) { + PDFViewerApplication.pdfViewer.annotationEditorMode = evt.mode; +} +function webViewerSwitchAnnotationEditorParams(evt) { + PDFViewerApplication.pdfViewer.annotationEditorParams = evt; +} +function webViewerPrint() { + PDFViewerApplication.triggerPrinting(); +} +function webViewerDownload() { + PDFViewerApplication.downloadOrSave(); +} +function webViewerFirstPage() { + PDFViewerApplication.page = 1; +} +function webViewerLastPage() { + PDFViewerApplication.page = PDFViewerApplication.pagesCount; +} +function webViewerNextPage() { + PDFViewerApplication.pdfViewer.nextPage(); +} +function webViewerPreviousPage() { + PDFViewerApplication.pdfViewer.previousPage(); +} +function webViewerZoomIn() { + PDFViewerApplication.zoomIn(); +} +function webViewerZoomOut() { + PDFViewerApplication.zoomOut(); +} +function webViewerZoomReset() { + PDFViewerApplication.zoomReset(); +} +function webViewerPageNumberChanged(evt) { + const pdfViewer = PDFViewerApplication.pdfViewer; + if (evt.value !== "") { + PDFViewerApplication.pdfLinkService.goToPage(evt.value); + } + if (evt.value !== pdfViewer.currentPageNumber.toString() && evt.value !== pdfViewer.currentPageLabel) { + PDFViewerApplication.toolbar?.setPageNumber(pdfViewer.currentPageNumber, pdfViewer.currentPageLabel); + } +} +function webViewerScaleChanged(evt) { + PDFViewerApplication.pdfViewer.currentScaleValue = evt.value; +} +function webViewerRotateCw() { + PDFViewerApplication.rotatePages(90); +} +function webViewerRotateCcw() { + PDFViewerApplication.rotatePages(-90); +} +function webViewerOptionalContentConfig(evt) { + PDFViewerApplication.pdfViewer.optionalContentConfigPromise = evt.promise; +} +function webViewerSwitchScrollMode(evt) { + PDFViewerApplication.pdfViewer.scrollMode = evt.mode; +} +function webViewerSwitchSpreadMode(evt) { + PDFViewerApplication.pdfViewer.spreadMode = evt.mode; +} +function webViewerDocumentProperties() { + PDFViewerApplication.pdfDocumentProperties?.open(); +} +function webViewerFindFromUrlHash(evt) { + PDFViewerApplication.eventBus.dispatch("find", { + source: evt.source, + type: "", + query: evt.query, + phraseSearch: evt.phraseSearch, + caseSensitive: false, + entireWord: false, + highlightAll: true, + findPrevious: false, + matchDiacritics: true + }); +} +function webViewerUpdateFindMatchesCount({ + matchesCount +}) { + if (PDFViewerApplication.supportsIntegratedFind) { + PDFViewerApplication.externalServices.updateFindMatchesCount(matchesCount); + } else { + PDFViewerApplication.findBar.updateResultsCount(matchesCount); + } +} +function webViewerUpdateFindControlState({ + state, + previous, + matchesCount, + rawQuery +}) { + if (PDFViewerApplication.supportsIntegratedFind) { + PDFViewerApplication.externalServices.updateFindControlState({ + result: state, + findPrevious: previous, + matchesCount, + rawQuery + }); + } else { + PDFViewerApplication.findBar?.updateUIState(state, previous, matchesCount); + } +} +function webViewerScaleChanging(evt) { + PDFViewerApplication.toolbar?.setPageScale(evt.presetValue, evt.scale); + PDFViewerApplication.pdfViewer.update(); +} +function webViewerRotationChanging(evt) { + if (PDFViewerApplication.pdfThumbnailViewer) { + PDFViewerApplication.pdfThumbnailViewer.pagesRotation = evt.pagesRotation; + } + PDFViewerApplication.forceRendering(); + PDFViewerApplication.pdfViewer.currentPageNumber = evt.pageNumber; +} +function webViewerPageChanging({ + pageNumber, + pageLabel +}) { + PDFViewerApplication.toolbar?.setPageNumber(pageNumber, pageLabel); + PDFViewerApplication.secondaryToolbar?.setPageNumber(pageNumber); + if (PDFViewerApplication.pdfSidebar?.visibleView === _ui_utils.SidebarView.THUMBS) { + PDFViewerApplication.pdfThumbnailViewer?.scrollThumbnailIntoView(pageNumber); + } + const currentPage = PDFViewerApplication.pdfViewer.getPageView(pageNumber - 1); + PDFViewerApplication.toolbar?.updateLoadingIndicatorState(currentPage?.renderingState === _ui_utils.RenderingStates.RUNNING); +} +function webViewerResolutionChange(evt) { + PDFViewerApplication.pdfViewer.refresh(); +} +function webViewerVisibilityChange(evt) { + if (document.visibilityState === "visible") { + setZoomDisabledTimeout(); + } +} +let zoomDisabledTimeout = null; +function setZoomDisabledTimeout() { + if (zoomDisabledTimeout) { + clearTimeout(zoomDisabledTimeout); + } + zoomDisabledTimeout = setTimeout(function () { + zoomDisabledTimeout = null; + }, WHEEL_ZOOM_DISABLED_TIMEOUT); +} +function webViewerWheel(evt) { + const { + pdfViewer, + supportedMouseWheelZoomModifierKeys, + supportsPinchToZoom + } = PDFViewerApplication; + if (pdfViewer.isInPresentationMode) { + return; + } + const deltaMode = evt.deltaMode; + let scaleFactor = Math.exp(-evt.deltaY / 100); + const isBuiltInMac = false; + const isPinchToZoom = evt.ctrlKey && !PDFViewerApplication._isCtrlKeyDown && deltaMode === WheelEvent.DOM_DELTA_PIXEL && evt.deltaX === 0 && (Math.abs(scaleFactor - 1) < 0.05 || isBuiltInMac) && evt.deltaZ === 0; + if (isPinchToZoom || evt.ctrlKey && supportedMouseWheelZoomModifierKeys.ctrlKey || evt.metaKey && supportedMouseWheelZoomModifierKeys.metaKey) { + evt.preventDefault(); + if (zoomDisabledTimeout || document.visibilityState === "hidden") { + return; + } + const previousScale = pdfViewer.currentScale; + if (isPinchToZoom && supportsPinchToZoom) { + scaleFactor = PDFViewerApplication._accumulateFactor(previousScale, scaleFactor, "_wheelUnusedFactor"); + if (scaleFactor < 1) { + PDFViewerApplication.zoomOut(null, scaleFactor); + } else if (scaleFactor > 1) { + PDFViewerApplication.zoomIn(null, scaleFactor); + } else { + return; + } + } else { + const delta = (0, _ui_utils.normalizeWheelEventDirection)(evt); + let ticks = 0; + if (deltaMode === WheelEvent.DOM_DELTA_LINE || deltaMode === WheelEvent.DOM_DELTA_PAGE) { + if (Math.abs(delta) >= 1) { + ticks = Math.sign(delta); + } else { + ticks = PDFViewerApplication._accumulateTicks(delta, "_wheelUnusedTicks"); + } + } else { + const PIXELS_PER_LINE_SCALE = 30; + ticks = PDFViewerApplication._accumulateTicks(delta / PIXELS_PER_LINE_SCALE, "_wheelUnusedTicks"); + } + if (ticks < 0) { + PDFViewerApplication.zoomOut(-ticks); + } else if (ticks > 0) { + PDFViewerApplication.zoomIn(ticks); + } else { + return; + } + } + PDFViewerApplication._centerAtPos(previousScale, evt.clientX, evt.clientY); + } else { + setZoomDisabledTimeout(); + } +} +function webViewerTouchStart(evt) { + if (PDFViewerApplication.pdfViewer.isInPresentationMode || evt.touches.length < 2) { + return; + } + evt.preventDefault(); + if (evt.touches.length !== 2) { + PDFViewerApplication._touchInfo = null; + return; + } + let [touch0, touch1] = evt.touches; + if (touch0.identifier > touch1.identifier) { + [touch0, touch1] = [touch1, touch0]; + } + PDFViewerApplication._touchInfo = { + touch0X: touch0.pageX, + touch0Y: touch0.pageY, + touch1X: touch1.pageX, + touch1Y: touch1.pageY + }; +} +function webViewerTouchMove(evt) { + if (!PDFViewerApplication._touchInfo || evt.touches.length !== 2) { + return; + } + const { + pdfViewer, + _touchInfo, + supportsPinchToZoom + } = PDFViewerApplication; + let [touch0, touch1] = evt.touches; + if (touch0.identifier > touch1.identifier) { + [touch0, touch1] = [touch1, touch0]; + } + const { + pageX: page0X, + pageY: page0Y + } = touch0; + const { + pageX: page1X, + pageY: page1Y + } = touch1; + const { + touch0X: pTouch0X, + touch0Y: pTouch0Y, + touch1X: pTouch1X, + touch1Y: pTouch1Y + } = _touchInfo; + if (Math.abs(pTouch0X - page0X) <= 1 && Math.abs(pTouch0Y - page0Y) <= 1 && Math.abs(pTouch1X - page1X) <= 1 && Math.abs(pTouch1Y - page1Y) <= 1) { + return; + } + _touchInfo.touch0X = page0X; + _touchInfo.touch0Y = page0Y; + _touchInfo.touch1X = page1X; + _touchInfo.touch1Y = page1Y; + if (pTouch0X === page0X && pTouch0Y === page0Y) { + const v1X = pTouch1X - page0X; + const v1Y = pTouch1Y - page0Y; + const v2X = page1X - page0X; + const v2Y = page1Y - page0Y; + const det = v1X * v2Y - v1Y * v2X; + if (Math.abs(det) > 0.02 * Math.hypot(v1X, v1Y) * Math.hypot(v2X, v2Y)) { + return; + } + } else if (pTouch1X === page1X && pTouch1Y === page1Y) { + const v1X = pTouch0X - page1X; + const v1Y = pTouch0Y - page1Y; + const v2X = page0X - page1X; + const v2Y = page0Y - page1Y; + const det = v1X * v2Y - v1Y * v2X; + if (Math.abs(det) > 0.02 * Math.hypot(v1X, v1Y) * Math.hypot(v2X, v2Y)) { + return; + } + } else { + const diff0X = page0X - pTouch0X; + const diff1X = page1X - pTouch1X; + const diff0Y = page0Y - pTouch0Y; + const diff1Y = page1Y - pTouch1Y; + const dotProduct = diff0X * diff1X + diff0Y * diff1Y; + if (dotProduct >= 0) { + return; + } + } + evt.preventDefault(); + const distance = Math.hypot(page0X - page1X, page0Y - page1Y) || 1; + const pDistance = Math.hypot(pTouch0X - pTouch1X, pTouch0Y - pTouch1Y) || 1; + const previousScale = pdfViewer.currentScale; + if (supportsPinchToZoom) { + const newScaleFactor = PDFViewerApplication._accumulateFactor(previousScale, distance / pDistance, "_touchUnusedFactor"); + if (newScaleFactor < 1) { + PDFViewerApplication.zoomOut(null, newScaleFactor); + } else if (newScaleFactor > 1) { + PDFViewerApplication.zoomIn(null, newScaleFactor); + } else { + return; + } + } else { + const PIXELS_PER_LINE_SCALE = 30; + const ticks = PDFViewerApplication._accumulateTicks((distance - pDistance) / PIXELS_PER_LINE_SCALE, "_touchUnusedTicks"); + if (ticks < 0) { + PDFViewerApplication.zoomOut(-ticks); + } else if (ticks > 0) { + PDFViewerApplication.zoomIn(ticks); + } else { + return; + } + } + PDFViewerApplication._centerAtPos(previousScale, (page0X + page1X) / 2, (page0Y + page1Y) / 2); +} +function webViewerTouchEnd(evt) { + if (!PDFViewerApplication._touchInfo) { + return; + } + evt.preventDefault(); + PDFViewerApplication._touchInfo = null; + PDFViewerApplication._touchUnusedTicks = 0; + PDFViewerApplication._touchUnusedFactor = 1; +} +function webViewerClick(evt) { + if (!PDFViewerApplication.secondaryToolbar?.isOpen) { + return; + } + const appConfig = PDFViewerApplication.appConfig; + if (PDFViewerApplication.pdfViewer.containsElement(evt.target) || appConfig.toolbar?.container.contains(evt.target) && evt.target !== appConfig.secondaryToolbar?.toggleButton) { + PDFViewerApplication.secondaryToolbar.close(); + } +} +function webViewerKeyUp(evt) { + if (evt.key === "Control") { + PDFViewerApplication._isCtrlKeyDown = false; + } +} +function webViewerKeyDown(evt) { + PDFViewerApplication._isCtrlKeyDown = evt.key === "Control"; + if (PDFViewerApplication.overlayManager.active) { + return; + } + const { + eventBus, + pdfViewer + } = PDFViewerApplication; + const isViewerInPresentationMode = pdfViewer.isInPresentationMode; + let handled = false, + ensureViewerFocused = false; + const cmd = (evt.ctrlKey ? 1 : 0) | (evt.altKey ? 2 : 0) | (evt.shiftKey ? 4 : 0) | (evt.metaKey ? 8 : 0); + if (cmd === 1 || cmd === 8 || cmd === 5 || cmd === 12) { + switch (evt.keyCode) { + case 70: + if (!PDFViewerApplication.supportsIntegratedFind && !evt.shiftKey) { + PDFViewerApplication.findBar?.open(); + handled = true; + } + break; + case 71: + if (!PDFViewerApplication.supportsIntegratedFind) { + const { + state + } = PDFViewerApplication.findController; + if (state) { + const newState = { + source: window, + type: "again", + findPrevious: cmd === 5 || cmd === 12 + }; + eventBus.dispatch("find", { + ...state, + ...newState + }); + } + handled = true; + } + break; + case 61: + case 107: + case 187: + case 171: + PDFViewerApplication.zoomIn(); + handled = true; + break; + case 173: + case 109: + case 189: + PDFViewerApplication.zoomOut(); + handled = true; + break; + case 48: + case 96: + if (!isViewerInPresentationMode) { + setTimeout(function () { + PDFViewerApplication.zoomReset(); + }); + handled = false; + } + break; + case 38: + if (isViewerInPresentationMode || PDFViewerApplication.page > 1) { + PDFViewerApplication.page = 1; + handled = true; + ensureViewerFocused = true; + } + break; + case 40: + if (isViewerInPresentationMode || PDFViewerApplication.page < PDFViewerApplication.pagesCount) { + PDFViewerApplication.page = PDFViewerApplication.pagesCount; + handled = true; + ensureViewerFocused = true; + } + break; + } + } + if (cmd === 1 || cmd === 8) { + switch (evt.keyCode) { + case 83: + eventBus.dispatch("download", { + source: window + }); + handled = true; + break; + case 79: + { + eventBus.dispatch("openfile", { + source: window + }); + handled = true; + } + break; + } + } + if (cmd === 3 || cmd === 10) { + switch (evt.keyCode) { + case 80: + PDFViewerApplication.requestPresentationMode(); + handled = true; + PDFViewerApplication.externalServices.reportTelemetry({ + type: "buttons", + data: { + id: "presentationModeKeyboard" + } + }); + break; + case 71: + if (PDFViewerApplication.appConfig.toolbar) { + PDFViewerApplication.appConfig.toolbar.pageNumber.select(); + handled = true; + } + break; + } + } + if (handled) { + if (ensureViewerFocused && !isViewerInPresentationMode) { + pdfViewer.focus(); + } + evt.preventDefault(); + return; + } + const curElement = (0, _ui_utils.getActiveOrFocusedElement)(); + const curElementTagName = curElement?.tagName.toUpperCase(); + if (curElementTagName === "INPUT" || curElementTagName === "TEXTAREA" || curElementTagName === "SELECT" || curElement?.isContentEditable) { + if (evt.keyCode !== 27) { + return; + } + } + if (cmd === 0) { + let turnPage = 0, + turnOnlyIfPageFit = false; + switch (evt.keyCode) { + case 38: + case 33: + if (pdfViewer.isVerticalScrollbarEnabled) { + turnOnlyIfPageFit = true; + } + turnPage = -1; + break; + case 8: + if (!isViewerInPresentationMode) { + turnOnlyIfPageFit = true; + } + turnPage = -1; + break; + case 37: + if (pdfViewer.isHorizontalScrollbarEnabled) { + turnOnlyIfPageFit = true; + } + case 75: + case 80: + turnPage = -1; + break; + case 27: + if (PDFViewerApplication.secondaryToolbar?.isOpen) { + PDFViewerApplication.secondaryToolbar.close(); + handled = true; + } + if (!PDFViewerApplication.supportsIntegratedFind && PDFViewerApplication.findBar?.opened) { + PDFViewerApplication.findBar.close(); + handled = true; + } + break; + case 40: + case 34: + if (pdfViewer.isVerticalScrollbarEnabled) { + turnOnlyIfPageFit = true; + } + turnPage = 1; + break; + case 13: + case 32: + if (!isViewerInPresentationMode) { + turnOnlyIfPageFit = true; + } + turnPage = 1; + break; + case 39: + if (pdfViewer.isHorizontalScrollbarEnabled) { + turnOnlyIfPageFit = true; + } + case 74: + case 78: + turnPage = 1; + break; + case 36: + if (isViewerInPresentationMode || PDFViewerApplication.page > 1) { + PDFViewerApplication.page = 1; + handled = true; + ensureViewerFocused = true; + } + break; + case 35: + if (isViewerInPresentationMode || PDFViewerApplication.page < PDFViewerApplication.pagesCount) { + PDFViewerApplication.page = PDFViewerApplication.pagesCount; + handled = true; + ensureViewerFocused = true; + } + break; + case 83: + PDFViewerApplication.pdfCursorTools?.switchTool(_ui_utils.CursorTool.SELECT); + break; + case 72: + PDFViewerApplication.pdfCursorTools?.switchTool(_ui_utils.CursorTool.HAND); + break; + case 82: + PDFViewerApplication.rotatePages(90); + break; + case 115: + PDFViewerApplication.pdfSidebar?.toggle(); + break; + } + if (turnPage !== 0 && (!turnOnlyIfPageFit || pdfViewer.currentScaleValue === "page-fit")) { + if (turnPage > 0) { + pdfViewer.nextPage(); + } else { + pdfViewer.previousPage(); + } + handled = true; + } + } + if (cmd === 4) { + switch (evt.keyCode) { + case 13: + case 32: + if (!isViewerInPresentationMode && pdfViewer.currentScaleValue !== "page-fit") { + break; + } + pdfViewer.previousPage(); + handled = true; + break; + case 82: + PDFViewerApplication.rotatePages(-90); + break; + } + } + if (!handled && !isViewerInPresentationMode) { + if (evt.keyCode >= 33 && evt.keyCode <= 40 || evt.keyCode === 32 && curElementTagName !== "BUTTON") { + ensureViewerFocused = true; + } + } + if (ensureViewerFocused && !pdfViewer.containsElement(curElement)) { + pdfViewer.focus(); + } + if (handled) { + evt.preventDefault(); + } +} +function beforeUnload(evt) { + evt.preventDefault(); + evt.returnValue = ""; + return false; +} +function webViewerAnnotationEditorStatesChanged(data) { + PDFViewerApplication.externalServices.updateEditorStates(data); +} +const PDFPrintServiceFactory = { + instance: { + supportsPrinting: false, + createPrintService() { + throw new Error("Not implemented: createPrintService"); + } + } +}; +exports.PDFPrintServiceFactory = PDFPrintServiceFactory; + +/***/ }), +/* 3 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.animationStarted = exports.VERTICAL_PADDING = exports.UNKNOWN_SCALE = exports.TextLayerMode = exports.SpreadMode = exports.SidebarView = exports.ScrollMode = exports.SCROLLBAR_PADDING = exports.RenderingStates = exports.RendererType = exports.ProgressBar = exports.PresentationModeState = exports.OutputScale = exports.MIN_SCALE = exports.MAX_SCALE = exports.MAX_AUTO_SCALE = exports.DEFAULT_SCALE_VALUE = exports.DEFAULT_SCALE_DELTA = exports.DEFAULT_SCALE = exports.CursorTool = exports.AutoPrintRegExp = void 0; +exports.apiPageLayoutToViewerModes = apiPageLayoutToViewerModes; +exports.apiPageModeToSidebarView = apiPageModeToSidebarView; +exports.approximateFraction = approximateFraction; +exports.backtrackBeforeAllVisibleElements = backtrackBeforeAllVisibleElements; +exports.binarySearchFirstItem = binarySearchFirstItem; +exports.docStyle = void 0; +exports.getActiveOrFocusedElement = getActiveOrFocusedElement; +exports.getPageSizeInches = getPageSizeInches; +exports.getVisibleElements = getVisibleElements; +exports.isPortraitOrientation = isPortraitOrientation; +exports.isValidRotation = isValidRotation; +exports.isValidScrollMode = isValidScrollMode; +exports.isValidSpreadMode = isValidSpreadMode; +exports.noContextMenuHandler = noContextMenuHandler; +exports.normalizeWheelEventDelta = normalizeWheelEventDelta; +exports.normalizeWheelEventDirection = normalizeWheelEventDirection; +exports.parseQueryString = parseQueryString; +exports.removeNullCharacters = removeNullCharacters; +exports.roundToDivide = roundToDivide; +exports.scrollIntoView = scrollIntoView; +exports.watchScroll = watchScroll; +const DEFAULT_SCALE_VALUE = "auto"; +exports.DEFAULT_SCALE_VALUE = DEFAULT_SCALE_VALUE; +const DEFAULT_SCALE = 1.0; +exports.DEFAULT_SCALE = DEFAULT_SCALE; +const DEFAULT_SCALE_DELTA = 1.1; +exports.DEFAULT_SCALE_DELTA = DEFAULT_SCALE_DELTA; +const MIN_SCALE = 0.1; +exports.MIN_SCALE = MIN_SCALE; +const MAX_SCALE = 10.0; +exports.MAX_SCALE = MAX_SCALE; +const UNKNOWN_SCALE = 0; +exports.UNKNOWN_SCALE = UNKNOWN_SCALE; +const MAX_AUTO_SCALE = 1.25; +exports.MAX_AUTO_SCALE = MAX_AUTO_SCALE; +const SCROLLBAR_PADDING = 40; +exports.SCROLLBAR_PADDING = SCROLLBAR_PADDING; +const VERTICAL_PADDING = 5; +exports.VERTICAL_PADDING = VERTICAL_PADDING; +const RenderingStates = { + INITIAL: 0, + RUNNING: 1, + PAUSED: 2, + FINISHED: 3 +}; +exports.RenderingStates = RenderingStates; +const PresentationModeState = { + UNKNOWN: 0, + NORMAL: 1, + CHANGING: 2, + FULLSCREEN: 3 +}; +exports.PresentationModeState = PresentationModeState; +const SidebarView = { + UNKNOWN: -1, + NONE: 0, + THUMBS: 1, + OUTLINE: 2, + ATTACHMENTS: 3, + LAYERS: 4 +}; +exports.SidebarView = SidebarView; +const RendererType = { + CANVAS: "canvas", + SVG: "svg" +}; +exports.RendererType = RendererType; +const TextLayerMode = { + DISABLE: 0, + ENABLE: 1 +}; +exports.TextLayerMode = TextLayerMode; +const ScrollMode = { + UNKNOWN: -1, + VERTICAL: 0, + HORIZONTAL: 1, + WRAPPED: 2, + PAGE: 3 +}; +exports.ScrollMode = ScrollMode; +const SpreadMode = { + UNKNOWN: -1, + NONE: 0, + ODD: 1, + EVEN: 2 +}; +exports.SpreadMode = SpreadMode; +const CursorTool = { + SELECT: 0, + HAND: 1, + ZOOM: 2 +}; +exports.CursorTool = CursorTool; +const AutoPrintRegExp = /\bprint\s*\(/; +exports.AutoPrintRegExp = AutoPrintRegExp; +class OutputScale { + constructor() { + const pixelRatio = window.devicePixelRatio || 1; + this.sx = pixelRatio; + this.sy = pixelRatio; + } + get scaled() { + return this.sx !== 1 || this.sy !== 1; + } +} +exports.OutputScale = OutputScale; +function scrollIntoView(element, spot, scrollMatches = false) { + let parent = element.offsetParent; + if (!parent) { + console.error("offsetParent is not set -- cannot scroll"); + return; + } + let offsetY = element.offsetTop + element.clientTop; + let offsetX = element.offsetLeft + element.clientLeft; + while (parent.clientHeight === parent.scrollHeight && parent.clientWidth === parent.scrollWidth || scrollMatches && (parent.classList.contains("markedContent") || getComputedStyle(parent).overflow === "hidden")) { + offsetY += parent.offsetTop; + offsetX += parent.offsetLeft; + parent = parent.offsetParent; + if (!parent) { + return; + } + } + if (spot) { + if (spot.top !== undefined) { + offsetY += spot.top; + } + if (spot.left !== undefined) { + offsetX += spot.left; + parent.scrollLeft = offsetX; + } + } + parent.scrollTop = offsetY; +} +function watchScroll(viewAreaElement, callback) { + const debounceScroll = function (evt) { + if (rAF) { + return; + } + rAF = window.requestAnimationFrame(function viewAreaElementScrolled() { + rAF = null; + const currentX = viewAreaElement.scrollLeft; + const lastX = state.lastX; + if (currentX !== lastX) { + state.right = currentX > lastX; + } + state.lastX = currentX; + const currentY = viewAreaElement.scrollTop; + const lastY = state.lastY; + if (currentY !== lastY) { + state.down = currentY > lastY; + } + state.lastY = currentY; + callback(state); + }); + }; + const state = { + right: true, + down: true, + lastX: viewAreaElement.scrollLeft, + lastY: viewAreaElement.scrollTop, + _eventHandler: debounceScroll + }; + let rAF = null; + viewAreaElement.addEventListener("scroll", debounceScroll, true); + return state; +} +function parseQueryString(query) { + const params = new Map(); + for (const [key, value] of new URLSearchParams(query)) { + params.set(key.toLowerCase(), value); + } + return params; +} +const InvisibleCharactersRegExp = /[\x01-\x1F]/g; +function removeNullCharacters(str, replaceInvisible = false) { + if (typeof str !== "string") { + console.error(`The argument must be a string.`); + return str; + } + if (replaceInvisible) { + str = str.replaceAll(InvisibleCharactersRegExp, " "); + } + return str.replaceAll("\x00", ""); +} +function binarySearchFirstItem(items, condition, start = 0) { + let minIndex = start; + let maxIndex = items.length - 1; + if (maxIndex < 0 || !condition(items[maxIndex])) { + return items.length; + } + if (condition(items[minIndex])) { + return minIndex; + } + while (minIndex < maxIndex) { + const currentIndex = minIndex + maxIndex >> 1; + const currentItem = items[currentIndex]; + if (condition(currentItem)) { + maxIndex = currentIndex; + } else { + minIndex = currentIndex + 1; + } + } + return minIndex; +} +function approximateFraction(x) { + if (Math.floor(x) === x) { + return [x, 1]; + } + const xinv = 1 / x; + const limit = 8; + if (xinv > limit) { + return [1, limit]; + } else if (Math.floor(xinv) === xinv) { + return [1, xinv]; + } + const x_ = x > 1 ? xinv : x; + let a = 0, + b = 1, + c = 1, + d = 1; + while (true) { + const p = a + c, + q = b + d; + if (q > limit) { + break; + } + if (x_ <= p / q) { + c = p; + d = q; + } else { + a = p; + b = q; + } + } + let result; + if (x_ - a / b < c / d - x_) { + result = x_ === x ? [a, b] : [b, a]; + } else { + result = x_ === x ? [c, d] : [d, c]; + } + return result; +} +function roundToDivide(x, div) { + const r = x % div; + return r === 0 ? x : Math.round(x - r + div); +} +function getPageSizeInches({ + view, + userUnit, + rotate +}) { + const [x1, y1, x2, y2] = view; + const changeOrientation = rotate % 180 !== 0; + const width = (x2 - x1) / 72 * userUnit; + const height = (y2 - y1) / 72 * userUnit; + return { + width: changeOrientation ? height : width, + height: changeOrientation ? width : height + }; +} +function backtrackBeforeAllVisibleElements(index, views, top) { + if (index < 2) { + return index; + } + let elt = views[index].div; + let pageTop = elt.offsetTop + elt.clientTop; + if (pageTop >= top) { + elt = views[index - 1].div; + pageTop = elt.offsetTop + elt.clientTop; + } + for (let i = index - 2; i >= 0; --i) { + elt = views[i].div; + if (elt.offsetTop + elt.clientTop + elt.clientHeight <= pageTop) { + break; + } + index = i; + } + return index; +} +function getVisibleElements({ + scrollEl, + views, + sortByVisibility = false, + horizontal = false, + rtl = false +}) { + const top = scrollEl.scrollTop, + bottom = top + scrollEl.clientHeight; + const left = scrollEl.scrollLeft, + right = left + scrollEl.clientWidth; + function isElementBottomAfterViewTop(view) { + const element = view.div; + const elementBottom = element.offsetTop + element.clientTop + element.clientHeight; + return elementBottom > top; + } + function isElementNextAfterViewHorizontally(view) { + const element = view.div; + const elementLeft = element.offsetLeft + element.clientLeft; + const elementRight = elementLeft + element.clientWidth; + return rtl ? elementLeft < right : elementRight > left; + } + const visible = [], + ids = new Set(), + numViews = views.length; + let firstVisibleElementInd = binarySearchFirstItem(views, horizontal ? isElementNextAfterViewHorizontally : isElementBottomAfterViewTop); + if (firstVisibleElementInd > 0 && firstVisibleElementInd < numViews && !horizontal) { + firstVisibleElementInd = backtrackBeforeAllVisibleElements(firstVisibleElementInd, views, top); + } + let lastEdge = horizontal ? right : -1; + for (let i = firstVisibleElementInd; i < numViews; i++) { + const view = views[i], + element = view.div; + const currentWidth = element.offsetLeft + element.clientLeft; + const currentHeight = element.offsetTop + element.clientTop; + const viewWidth = element.clientWidth, + viewHeight = element.clientHeight; + const viewRight = currentWidth + viewWidth; + const viewBottom = currentHeight + viewHeight; + if (lastEdge === -1) { + if (viewBottom >= bottom) { + lastEdge = viewBottom; + } + } else if ((horizontal ? currentWidth : currentHeight) > lastEdge) { + break; + } + if (viewBottom <= top || currentHeight >= bottom || viewRight <= left || currentWidth >= right) { + continue; + } + const hiddenHeight = Math.max(0, top - currentHeight) + Math.max(0, viewBottom - bottom); + const hiddenWidth = Math.max(0, left - currentWidth) + Math.max(0, viewRight - right); + const fractionHeight = (viewHeight - hiddenHeight) / viewHeight, + fractionWidth = (viewWidth - hiddenWidth) / viewWidth; + const percent = fractionHeight * fractionWidth * 100 | 0; + visible.push({ + id: view.id, + x: currentWidth, + y: currentHeight, + view, + percent, + widthPercent: fractionWidth * 100 | 0 + }); + ids.add(view.id); + } + const first = visible[0], + last = visible.at(-1); + if (sortByVisibility) { + visible.sort(function (a, b) { + const pc = a.percent - b.percent; + if (Math.abs(pc) > 0.001) { + return -pc; + } + return a.id - b.id; + }); + } + return { + first, + last, + views: visible, + ids + }; +} +function noContextMenuHandler(evt) { + evt.preventDefault(); +} +function normalizeWheelEventDirection(evt) { + let delta = Math.hypot(evt.deltaX, evt.deltaY); + const angle = Math.atan2(evt.deltaY, evt.deltaX); + if (-0.25 * Math.PI < angle && angle < 0.75 * Math.PI) { + delta = -delta; + } + return delta; +} +function normalizeWheelEventDelta(evt) { + const deltaMode = evt.deltaMode; + let delta = normalizeWheelEventDirection(evt); + const MOUSE_PIXELS_PER_LINE = 30; + const MOUSE_LINES_PER_PAGE = 30; + if (deltaMode === WheelEvent.DOM_DELTA_PIXEL) { + delta /= MOUSE_PIXELS_PER_LINE * MOUSE_LINES_PER_PAGE; + } else if (deltaMode === WheelEvent.DOM_DELTA_LINE) { + delta /= MOUSE_LINES_PER_PAGE; + } + return delta; +} +function isValidRotation(angle) { + return Number.isInteger(angle) && angle % 90 === 0; +} +function isValidScrollMode(mode) { + return Number.isInteger(mode) && Object.values(ScrollMode).includes(mode) && mode !== ScrollMode.UNKNOWN; +} +function isValidSpreadMode(mode) { + return Number.isInteger(mode) && Object.values(SpreadMode).includes(mode) && mode !== SpreadMode.UNKNOWN; +} +function isPortraitOrientation(size) { + return size.width <= size.height; +} +const animationStarted = new Promise(function (resolve) { + window.requestAnimationFrame(resolve); +}); +exports.animationStarted = animationStarted; +const docStyle = document.documentElement.style; +exports.docStyle = docStyle; +function clamp(v, min, max) { + return Math.min(Math.max(v, min), max); +} +class ProgressBar { + #classList = null; + #disableAutoFetchTimeout = null; + #percent = 0; + #style = null; + #visible = true; + constructor(bar) { + this.#classList = bar.classList; + this.#style = bar.style; + } + get percent() { + return this.#percent; + } + set percent(val) { + this.#percent = clamp(val, 0, 100); + if (isNaN(val)) { + this.#classList.add("indeterminate"); + return; + } + this.#classList.remove("indeterminate"); + this.#style.setProperty("--progressBar-percent", `${this.#percent}%`); + } + setWidth(viewer) { + if (!viewer) { + return; + } + const container = viewer.parentNode; + const scrollbarWidth = container.offsetWidth - viewer.offsetWidth; + if (scrollbarWidth > 0) { + this.#style.setProperty("--progressBar-end-offset", `${scrollbarWidth}px`); + } + } + setDisableAutoFetch(delay = 5000) { + if (isNaN(this.#percent)) { + return; + } + if (this.#disableAutoFetchTimeout) { + clearTimeout(this.#disableAutoFetchTimeout); + } + this.show(); + this.#disableAutoFetchTimeout = setTimeout(() => { + this.#disableAutoFetchTimeout = null; + this.hide(); + }, delay); + } + hide() { + if (!this.#visible) { + return; + } + this.#visible = false; + this.#classList.add("hidden"); + } + show() { + if (this.#visible) { + return; + } + this.#visible = true; + this.#classList.remove("hidden"); + } +} +exports.ProgressBar = ProgressBar; +function getActiveOrFocusedElement() { + let curRoot = document; + let curActiveOrFocused = curRoot.activeElement || curRoot.querySelector(":focus"); + while (curActiveOrFocused?.shadowRoot) { + curRoot = curActiveOrFocused.shadowRoot; + curActiveOrFocused = curRoot.activeElement || curRoot.querySelector(":focus"); + } + return curActiveOrFocused; +} +function apiPageLayoutToViewerModes(layout) { + let scrollMode = ScrollMode.VERTICAL, + spreadMode = SpreadMode.NONE; + switch (layout) { + case "SinglePage": + scrollMode = ScrollMode.PAGE; + break; + case "OneColumn": + break; + case "TwoPageLeft": + scrollMode = ScrollMode.PAGE; + case "TwoColumnLeft": + spreadMode = SpreadMode.ODD; + break; + case "TwoPageRight": + scrollMode = ScrollMode.PAGE; + case "TwoColumnRight": + spreadMode = SpreadMode.EVEN; + break; + } + return { + scrollMode, + spreadMode + }; +} +function apiPageModeToSidebarView(mode) { + switch (mode) { + case "UseNone": + return SidebarView.NONE; + case "UseThumbs": + return SidebarView.THUMBS; + case "UseOutlines": + return SidebarView.OUTLINE; + case "UseAttachments": + return SidebarView.ATTACHMENTS; + case "UseOC": + return SidebarView.LAYERS; + } + return SidebarView.NONE; +} + +/***/ }), +/* 4 */ +/***/ ((module) => { + + + +let pdfjsLib; +if (typeof window !== "undefined" && window["pdfjs-dist/build/pdf"]) { + pdfjsLib = window["pdfjs-dist/build/pdf"]; +} else { + pdfjsLib = require("../build/pdf.js"); +} +module.exports = pdfjsLib; + +/***/ }), +/* 5 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.compatibilityParams = exports.OptionKind = exports.AppOptions = void 0; +const compatibilityParams = Object.create(null); +exports.compatibilityParams = compatibilityParams; +{ + const userAgent = navigator.userAgent || ""; + const platform = navigator.platform || ""; + const maxTouchPoints = navigator.maxTouchPoints || 1; + const isAndroid = /Android/.test(userAgent); + const isIOS = /\b(iPad|iPhone|iPod)(?=;)/.test(userAgent) || platform === "MacIntel" && maxTouchPoints > 1; + (function checkCanvasSizeLimitation() { + if (isIOS || isAndroid) { + compatibilityParams.maxCanvasPixels = 5242880; + } + })(); +} +const OptionKind = { + VIEWER: 0x02, + API: 0x04, + WORKER: 0x08, + PREFERENCE: 0x80 +}; +exports.OptionKind = OptionKind; +const defaultOptions = { + annotationEditorMode: { + value: 0, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + annotationMode: { + value: 2, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + cursorToolOnLoad: { + value: 0, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + defaultZoomDelay: { + value: 400, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + defaultZoomValue: { + value: "", + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + disableHistory: { + value: false, + kind: OptionKind.VIEWER + }, + disablePageLabels: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + enablePermissions: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + enablePrintAutoRotate: { + value: true, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + enableScripting: { + value: true, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + externalLinkRel: { + value: "noopener noreferrer nofollow", + kind: OptionKind.VIEWER + }, + externalLinkTarget: { + value: 0, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + historyUpdateUrl: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + ignoreDestinationZoom: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + imageResourcesPath: { + value: "./images/", + kind: OptionKind.VIEWER + }, + maxCanvasPixels: { + value: 16777216, + kind: OptionKind.VIEWER + }, + forcePageColors: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + pageColorsBackground: { + value: "Canvas", + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + pageColorsForeground: { + value: "CanvasText", + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + pdfBugEnabled: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + printResolution: { + value: 150, + kind: OptionKind.VIEWER + }, + sidebarViewOnLoad: { + value: -1, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + scrollModeOnLoad: { + value: -1, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + spreadModeOnLoad: { + value: -1, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + textLayerMode: { + value: 1, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + useOnlyCssZoom: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + viewerCssTheme: { + value: 0, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + viewOnLoad: { + value: 0, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + cMapPacked: { + value: true, + kind: OptionKind.API + }, + cMapUrl: { + value: "../web/cmaps/", + kind: OptionKind.API + }, + disableAutoFetch: { + value: false, + kind: OptionKind.API + OptionKind.PREFERENCE + }, + disableFontFace: { + value: false, + kind: OptionKind.API + OptionKind.PREFERENCE + }, + disableRange: { + value: false, + kind: OptionKind.API + OptionKind.PREFERENCE + }, + disableStream: { + value: false, + kind: OptionKind.API + OptionKind.PREFERENCE + }, + docBaseUrl: { + value: "", + kind: OptionKind.API + }, + enableXfa: { + value: true, + kind: OptionKind.API + OptionKind.PREFERENCE + }, + fontExtraProperties: { + value: false, + kind: OptionKind.API + }, + isEvalSupported: { + value: true, + kind: OptionKind.API + }, + isOffscreenCanvasSupported: { + value: true, + kind: OptionKind.API + }, + maxImageSize: { + value: -1, + kind: OptionKind.API + }, + pdfBug: { + value: false, + kind: OptionKind.API + }, + standardFontDataUrl: { + value: "../web/standard_fonts/", + kind: OptionKind.API + }, + verbosity: { + value: 1, + kind: OptionKind.API + }, + workerPort: { + value: null, + kind: OptionKind.WORKER + }, + workerSrc: { + value: "../build/pdf.worker.js", + kind: OptionKind.WORKER + } +}; +{ + defaultOptions.defaultUrl = { + value: "compressed.tracemonkey-pldi-09.pdf", + kind: OptionKind.VIEWER + }; + defaultOptions.disablePreferences = { + value: false, + kind: OptionKind.VIEWER + }; + defaultOptions.locale = { + value: navigator.language || "en-US", + kind: OptionKind.VIEWER + }; + defaultOptions.renderer = { + value: "canvas", + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }; + defaultOptions.sandboxBundleSrc = { + value: "../build/pdf.sandbox.js", + kind: OptionKind.VIEWER + }; +} +const userOptions = Object.create(null); +class AppOptions { + constructor() { + throw new Error("Cannot initialize AppOptions."); + } + static get(name) { + const userOption = userOptions[name]; + if (userOption !== undefined) { + return userOption; + } + const defaultOption = defaultOptions[name]; + if (defaultOption !== undefined) { + return compatibilityParams[name] ?? defaultOption.value; + } + return undefined; + } + static getAll(kind = null) { + const options = Object.create(null); + for (const name in defaultOptions) { + const defaultOption = defaultOptions[name]; + if (kind) { + if ((kind & defaultOption.kind) === 0) { + continue; + } + if (kind === OptionKind.PREFERENCE) { + const value = defaultOption.value, + valueType = typeof value; + if (valueType === "boolean" || valueType === "string" || valueType === "number" && Number.isInteger(value)) { + options[name] = value; + continue; + } + throw new Error(`Invalid type for preference: ${name}`); + } + } + const userOption = userOptions[name]; + options[name] = userOption !== undefined ? userOption : compatibilityParams[name] ?? defaultOption.value; + } + return options; + } + static set(name, value) { + userOptions[name] = value; + } + static setAll(options) { + for (const name in options) { + userOptions[name] = options[name]; + } + } + static remove(name) { + delete userOptions[name]; + } +} +exports.AppOptions = AppOptions; +{ + AppOptions._hasUserOptions = function () { + return Object.keys(userOptions).length > 0; + }; +} + +/***/ }), +/* 6 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.WaitOnType = exports.EventBus = exports.AutomationEventBus = void 0; +exports.waitOnEventOrTimeout = waitOnEventOrTimeout; +const WaitOnType = { + EVENT: "event", + TIMEOUT: "timeout" +}; +exports.WaitOnType = WaitOnType; +function waitOnEventOrTimeout({ + target, + name, + delay = 0 +}) { + return new Promise(function (resolve, reject) { + if (typeof target !== "object" || !(name && typeof name === "string") || !(Number.isInteger(delay) && delay >= 0)) { + throw new Error("waitOnEventOrTimeout - invalid parameters."); + } + function handler(type) { + if (target instanceof EventBus) { + target._off(name, eventHandler); + } else { + target.removeEventListener(name, eventHandler); + } + if (timeout) { + clearTimeout(timeout); + } + resolve(type); + } + const eventHandler = handler.bind(null, WaitOnType.EVENT); + if (target instanceof EventBus) { + target._on(name, eventHandler); + } else { + target.addEventListener(name, eventHandler); + } + const timeoutHandler = handler.bind(null, WaitOnType.TIMEOUT); + const timeout = setTimeout(timeoutHandler, delay); + }); +} +class EventBus { + #listeners = Object.create(null); + on(eventName, listener, options = null) { + this._on(eventName, listener, { + external: true, + once: options?.once + }); + } + off(eventName, listener, options = null) { + this._off(eventName, listener, { + external: true, + once: options?.once + }); + } + dispatch(eventName, data) { + const eventListeners = this.#listeners[eventName]; + if (!eventListeners || eventListeners.length === 0) { + return; + } + let externalListeners; + for (const { + listener, + external, + once + } of eventListeners.slice(0)) { + if (once) { + this._off(eventName, listener); + } + if (external) { + (externalListeners ||= []).push(listener); + continue; + } + listener(data); + } + if (externalListeners) { + for (const listener of externalListeners) { + listener(data); + } + externalListeners = null; + } + } + _on(eventName, listener, options = null) { + const eventListeners = this.#listeners[eventName] ||= []; + eventListeners.push({ + listener, + external: options?.external === true, + once: options?.once === true + }); + } + _off(eventName, listener, options = null) { + const eventListeners = this.#listeners[eventName]; + if (!eventListeners) { + return; + } + for (let i = 0, ii = eventListeners.length; i < ii; i++) { + if (eventListeners[i].listener === listener) { + eventListeners.splice(i, 1); + return; + } + } + } +} +exports.EventBus = EventBus; +class AutomationEventBus extends EventBus { + dispatch(eventName, data) { + throw new Error("Not implemented: AutomationEventBus.dispatch"); + } +} +exports.AutomationEventBus = AutomationEventBus; + +/***/ }), +/* 7 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SimpleLinkService = exports.PDFLinkService = exports.LinkTarget = void 0; +var _ui_utils = __webpack_require__(3); +const DEFAULT_LINK_REL = "noopener noreferrer nofollow"; +const LinkTarget = { + NONE: 0, + SELF: 1, + BLANK: 2, + PARENT: 3, + TOP: 4 +}; +exports.LinkTarget = LinkTarget; +function addLinkAttributes(link, { + url, + target, + rel, + enabled = true +} = {}) { + if (!url || typeof url !== "string") { + throw new Error('A valid "url" parameter must provided.'); + } + const urlNullRemoved = (0, _ui_utils.removeNullCharacters)(url); + if (enabled) { + link.href = link.title = urlNullRemoved; + } else { + link.href = ""; + link.title = `Disabled: ${urlNullRemoved}`; + link.onclick = () => { + return false; + }; + } + let targetStr = ""; + switch (target) { + case LinkTarget.NONE: + break; + case LinkTarget.SELF: + targetStr = "_self"; + break; + case LinkTarget.BLANK: + targetStr = "_blank"; + break; + case LinkTarget.PARENT: + targetStr = "_parent"; + break; + case LinkTarget.TOP: + targetStr = "_top"; + break; + } + link.target = targetStr; + link.rel = typeof rel === "string" ? rel : DEFAULT_LINK_REL; +} +class PDFLinkService { + #pagesRefCache = new Map(); + constructor({ + eventBus, + externalLinkTarget = null, + externalLinkRel = null, + ignoreDestinationZoom = false + } = {}) { + this.eventBus = eventBus; + this.externalLinkTarget = externalLinkTarget; + this.externalLinkRel = externalLinkRel; + this.externalLinkEnabled = true; + this._ignoreDestinationZoom = ignoreDestinationZoom; + this.baseUrl = null; + this.pdfDocument = null; + this.pdfViewer = null; + this.pdfHistory = null; + } + setDocument(pdfDocument, baseUrl = null) { + this.baseUrl = baseUrl; + this.pdfDocument = pdfDocument; + this.#pagesRefCache.clear(); + } + setViewer(pdfViewer) { + this.pdfViewer = pdfViewer; + } + setHistory(pdfHistory) { + this.pdfHistory = pdfHistory; + } + get pagesCount() { + return this.pdfDocument ? this.pdfDocument.numPages : 0; + } + get page() { + return this.pdfViewer.currentPageNumber; + } + set page(value) { + this.pdfViewer.currentPageNumber = value; + } + get rotation() { + return this.pdfViewer.pagesRotation; + } + set rotation(value) { + this.pdfViewer.pagesRotation = value; + } + get isInPresentationMode() { + return this.pdfViewer.isInPresentationMode; + } + #goToDestinationHelper(rawDest, namedDest = null, explicitDest) { + const destRef = explicitDest[0]; + let pageNumber; + if (typeof destRef === "object" && destRef !== null) { + pageNumber = this._cachedPageNumber(destRef); + if (!pageNumber) { + this.pdfDocument.getPageIndex(destRef).then(pageIndex => { + this.cachePageRef(pageIndex + 1, destRef); + this.#goToDestinationHelper(rawDest, namedDest, explicitDest); + }).catch(() => { + console.error(`PDFLinkService.#goToDestinationHelper: "${destRef}" is not ` + `a valid page reference, for dest="${rawDest}".`); + }); + return; + } + } else if (Number.isInteger(destRef)) { + pageNumber = destRef + 1; + } else { + console.error(`PDFLinkService.#goToDestinationHelper: "${destRef}" is not ` + `a valid destination reference, for dest="${rawDest}".`); + return; + } + if (!pageNumber || pageNumber < 1 || pageNumber > this.pagesCount) { + console.error(`PDFLinkService.#goToDestinationHelper: "${pageNumber}" is not ` + `a valid page number, for dest="${rawDest}".`); + return; + } + if (this.pdfHistory) { + this.pdfHistory.pushCurrentPosition(); + this.pdfHistory.push({ + namedDest, + explicitDest, + pageNumber + }); + } + this.pdfViewer.scrollPageIntoView({ + pageNumber, + destArray: explicitDest, + ignoreDestinationZoom: this._ignoreDestinationZoom + }); + } + async goToDestination(dest) { + if (!this.pdfDocument) { + return; + } + let namedDest, explicitDest; + if (typeof dest === "string") { + namedDest = dest; + explicitDest = await this.pdfDocument.getDestination(dest); + } else { + namedDest = null; + explicitDest = await dest; + } + if (!Array.isArray(explicitDest)) { + console.error(`PDFLinkService.goToDestination: "${explicitDest}" is not ` + `a valid destination array, for dest="${dest}".`); + return; + } + this.#goToDestinationHelper(dest, namedDest, explicitDest); + } + goToPage(val) { + if (!this.pdfDocument) { + return; + } + const pageNumber = typeof val === "string" && this.pdfViewer.pageLabelToPageNumber(val) || val | 0; + if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) { + console.error(`PDFLinkService.goToPage: "${val}" is not a valid page.`); + return; + } + if (this.pdfHistory) { + this.pdfHistory.pushCurrentPosition(); + this.pdfHistory.pushPage(pageNumber); + } + this.pdfViewer.scrollPageIntoView({ + pageNumber + }); + } + addLinkAttributes(link, url, newWindow = false) { + addLinkAttributes(link, { + url, + target: newWindow ? LinkTarget.BLANK : this.externalLinkTarget, + rel: this.externalLinkRel, + enabled: this.externalLinkEnabled + }); + } + getDestinationHash(dest) { + if (typeof dest === "string") { + if (dest.length > 0) { + return this.getAnchorUrl("#" + escape(dest)); + } + } else if (Array.isArray(dest)) { + const str = JSON.stringify(dest); + if (str.length > 0) { + return this.getAnchorUrl("#" + escape(str)); + } + } + return this.getAnchorUrl(""); + } + getAnchorUrl(anchor) { + return this.baseUrl ? this.baseUrl + anchor : anchor; + } + setHash(hash) { + if (!this.pdfDocument) { + return; + } + let pageNumber, dest; + if (hash.includes("=")) { + const params = (0, _ui_utils.parseQueryString)(hash); + if (params.has("search")) { + this.eventBus.dispatch("findfromurlhash", { + source: this, + query: params.get("search").replaceAll('"', ""), + phraseSearch: params.get("phrase") === "true" + }); + } + if (params.has("page")) { + pageNumber = params.get("page") | 0 || 1; + } + if (params.has("zoom")) { + const zoomArgs = params.get("zoom").split(","); + const zoomArg = zoomArgs[0]; + const zoomArgNumber = parseFloat(zoomArg); + if (!zoomArg.includes("Fit")) { + dest = [null, { + name: "XYZ" + }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null, zoomArgs.length > 2 ? zoomArgs[2] | 0 : null, zoomArgNumber ? zoomArgNumber / 100 : zoomArg]; + } else { + if (zoomArg === "Fit" || zoomArg === "FitB") { + dest = [null, { + name: zoomArg + }]; + } else if (zoomArg === "FitH" || zoomArg === "FitBH" || zoomArg === "FitV" || zoomArg === "FitBV") { + dest = [null, { + name: zoomArg + }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null]; + } else if (zoomArg === "FitR") { + if (zoomArgs.length !== 5) { + console.error('PDFLinkService.setHash: Not enough parameters for "FitR".'); + } else { + dest = [null, { + name: zoomArg + }, zoomArgs[1] | 0, zoomArgs[2] | 0, zoomArgs[3] | 0, zoomArgs[4] | 0]; + } + } else { + console.error(`PDFLinkService.setHash: "${zoomArg}" is not a valid zoom value.`); + } + } + } + if (dest) { + this.pdfViewer.scrollPageIntoView({ + pageNumber: pageNumber || this.page, + destArray: dest, + allowNegativeOffset: true + }); + } else if (pageNumber) { + this.page = pageNumber; + } + if (params.has("pagemode")) { + this.eventBus.dispatch("pagemode", { + source: this, + mode: params.get("pagemode") + }); + } + if (params.has("nameddest")) { + this.goToDestination(params.get("nameddest")); + } + } else { + dest = unescape(hash); + try { + dest = JSON.parse(dest); + if (!Array.isArray(dest)) { + dest = dest.toString(); + } + } catch (ex) {} + if (typeof dest === "string" || PDFLinkService.#isValidExplicitDestination(dest)) { + this.goToDestination(dest); + return; + } + console.error(`PDFLinkService.setHash: "${unescape(hash)}" is not a valid destination.`); + } + } + executeNamedAction(action) { + switch (action) { + case "GoBack": + this.pdfHistory?.back(); + break; + case "GoForward": + this.pdfHistory?.forward(); + break; + case "NextPage": + this.pdfViewer.nextPage(); + break; + case "PrevPage": + this.pdfViewer.previousPage(); + break; + case "LastPage": + this.page = this.pagesCount; + break; + case "FirstPage": + this.page = 1; + break; + default: + break; + } + this.eventBus.dispatch("namedaction", { + source: this, + action + }); + } + async executeSetOCGState(action) { + const pdfDocument = this.pdfDocument; + const optionalContentConfig = await this.pdfViewer.optionalContentConfigPromise; + if (pdfDocument !== this.pdfDocument) { + return; + } + let operator; + for (const elem of action.state) { + switch (elem) { + case "ON": + case "OFF": + case "Toggle": + operator = elem; + continue; + } + switch (operator) { + case "ON": + optionalContentConfig.setVisibility(elem, true); + break; + case "OFF": + optionalContentConfig.setVisibility(elem, false); + break; + case "Toggle": + const group = optionalContentConfig.getGroup(elem); + if (group) { + optionalContentConfig.setVisibility(elem, !group.visible); + } + break; + } + } + this.pdfViewer.optionalContentConfigPromise = Promise.resolve(optionalContentConfig); + } + cachePageRef(pageNum, pageRef) { + if (!pageRef) { + return; + } + const refStr = pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`; + this.#pagesRefCache.set(refStr, pageNum); + } + _cachedPageNumber(pageRef) { + if (!pageRef) { + return null; + } + const refStr = pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`; + return this.#pagesRefCache.get(refStr) || null; + } + isPageVisible(pageNumber) { + return this.pdfViewer.isPageVisible(pageNumber); + } + isPageCached(pageNumber) { + return this.pdfViewer.isPageCached(pageNumber); + } + static #isValidExplicitDestination(dest) { + if (!Array.isArray(dest)) { + return false; + } + const destLength = dest.length; + if (destLength < 2) { + return false; + } + const page = dest[0]; + if (!(typeof page === "object" && Number.isInteger(page.num) && Number.isInteger(page.gen)) && !(Number.isInteger(page) && page >= 0)) { + return false; + } + const zoom = dest[1]; + if (!(typeof zoom === "object" && typeof zoom.name === "string")) { + return false; + } + let allowNull = true; + switch (zoom.name) { + case "XYZ": + if (destLength !== 5) { + return false; + } + break; + case "Fit": + case "FitB": + return destLength === 2; + case "FitH": + case "FitBH": + case "FitV": + case "FitBV": + if (destLength !== 3) { + return false; + } + break; + case "FitR": + if (destLength !== 6) { + return false; + } + allowNull = false; + break; + default: + return false; + } + for (let i = 2; i < destLength; i++) { + const param = dest[i]; + if (!(typeof param === "number" || allowNull && param === null)) { + return false; + } + } + return true; + } +} +exports.PDFLinkService = PDFLinkService; +class SimpleLinkService { + constructor() { + this.externalLinkEnabled = true; + } + get pagesCount() { + return 0; + } + get page() { + return 0; + } + set page(value) {} + get rotation() { + return 0; + } + set rotation(value) {} + get isInPresentationMode() { + return false; + } + async goToDestination(dest) {} + goToPage(val) {} + addLinkAttributes(link, url, newWindow = false) { + addLinkAttributes(link, { + url, + enabled: this.externalLinkEnabled + }); + } + getDestinationHash(dest) { + return "#"; + } + getAnchorUrl(hash) { + return "#"; + } + setHash(hash) {} + executeNamedAction(action) {} + executeSetOCGState(action) {} + cachePageRef(pageNum, pageRef) {} + isPageVisible(pageNumber) { + return true; + } + isPageCached(pageNumber) { + return true; + } +} +exports.SimpleLinkService = SimpleLinkService; + +/***/ }), +/* 8 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnnotationEditorParams = void 0; +var _pdfjsLib = __webpack_require__(4); +class AnnotationEditorParams { + constructor(options, eventBus) { + this.eventBus = eventBus; + this.#bindListeners(options); + } + #bindListeners({ + editorFreeTextFontSize, + editorFreeTextColor, + editorInkColor, + editorInkThickness, + editorInkOpacity + }) { + editorFreeTextFontSize.addEventListener("input", evt => { + this.eventBus.dispatch("switchannotationeditorparams", { + source: this, + type: _pdfjsLib.AnnotationEditorParamsType.FREETEXT_SIZE, + value: editorFreeTextFontSize.valueAsNumber + }); + }); + editorFreeTextColor.addEventListener("input", evt => { + this.eventBus.dispatch("switchannotationeditorparams", { + source: this, + type: _pdfjsLib.AnnotationEditorParamsType.FREETEXT_COLOR, + value: editorFreeTextColor.value + }); + }); + editorInkColor.addEventListener("input", evt => { + this.eventBus.dispatch("switchannotationeditorparams", { + source: this, + type: _pdfjsLib.AnnotationEditorParamsType.INK_COLOR, + value: editorInkColor.value + }); + }); + editorInkThickness.addEventListener("input", evt => { + this.eventBus.dispatch("switchannotationeditorparams", { + source: this, + type: _pdfjsLib.AnnotationEditorParamsType.INK_THICKNESS, + value: editorInkThickness.valueAsNumber + }); + }); + editorInkOpacity.addEventListener("input", evt => { + this.eventBus.dispatch("switchannotationeditorparams", { + source: this, + type: _pdfjsLib.AnnotationEditorParamsType.INK_OPACITY, + value: editorInkOpacity.valueAsNumber + }); + }); + this.eventBus._on("annotationeditorparamschanged", evt => { + for (const [type, value] of evt.details) { + switch (type) { + case _pdfjsLib.AnnotationEditorParamsType.FREETEXT_SIZE: + editorFreeTextFontSize.value = value; + break; + case _pdfjsLib.AnnotationEditorParamsType.FREETEXT_COLOR: + editorFreeTextColor.value = value; + break; + case _pdfjsLib.AnnotationEditorParamsType.INK_COLOR: + editorInkColor.value = value; + break; + case _pdfjsLib.AnnotationEditorParamsType.INK_THICKNESS: + editorInkThickness.value = value; + break; + case _pdfjsLib.AnnotationEditorParamsType.INK_OPACITY: + editorInkOpacity.value = value; + break; + } + } + }); + } +} +exports.AnnotationEditorParams = AnnotationEditorParams; + +/***/ }), +/* 9 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.OverlayManager = void 0; +class OverlayManager { + #overlays = new WeakMap(); + #active = null; + get active() { + return this.#active; + } + async register(dialog, canForceClose = false) { + if (typeof dialog !== "object") { + throw new Error("Not enough parameters."); + } else if (this.#overlays.has(dialog)) { + throw new Error("The overlay is already registered."); + } + this.#overlays.set(dialog, { + canForceClose + }); + dialog.addEventListener("cancel", evt => { + this.#active = null; + }); + } + async unregister(dialog) { + if (!this.#overlays.has(dialog)) { + throw new Error("The overlay does not exist."); + } else if (this.#active === dialog) { + throw new Error("The overlay cannot be removed while it is active."); + } + this.#overlays.delete(dialog); + } + async open(dialog) { + if (!this.#overlays.has(dialog)) { + throw new Error("The overlay does not exist."); + } else if (this.#active) { + if (this.#active === dialog) { + throw new Error("The overlay is already active."); + } else if (this.#overlays.get(dialog).canForceClose) { + await this.close(); + } else { + throw new Error("Another overlay is currently active."); + } + } + this.#active = dialog; + dialog.showModal(); + } + async close(dialog = this.#active) { + if (!this.#overlays.has(dialog)) { + throw new Error("The overlay does not exist."); + } else if (!this.#active) { + throw new Error("The overlay is currently not active."); + } else if (this.#active !== dialog) { + throw new Error("Another overlay is currently active."); + } + dialog.close(); + this.#active = null; + } +} +exports.OverlayManager = OverlayManager; + +/***/ }), +/* 10 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PasswordPrompt = void 0; +var _pdfjsLib = __webpack_require__(4); +class PasswordPrompt { + #activeCapability = null; + #updateCallback = null; + #reason = null; + constructor(options, overlayManager, l10n, isViewerEmbedded = false) { + this.dialog = options.dialog; + this.label = options.label; + this.input = options.input; + this.submitButton = options.submitButton; + this.cancelButton = options.cancelButton; + this.overlayManager = overlayManager; + this.l10n = l10n; + this._isViewerEmbedded = isViewerEmbedded; + this.submitButton.addEventListener("click", this.#verify.bind(this)); + this.cancelButton.addEventListener("click", this.close.bind(this)); + this.input.addEventListener("keydown", e => { + if (e.keyCode === 13) { + this.#verify(); + } + }); + this.overlayManager.register(this.dialog, true); + this.dialog.addEventListener("close", this.#cancel.bind(this)); + } + async open() { + if (this.#activeCapability) { + await this.#activeCapability.promise; + } + this.#activeCapability = (0, _pdfjsLib.createPromiseCapability)(); + try { + await this.overlayManager.open(this.dialog); + } catch (ex) { + this.#activeCapability = null; + throw ex; + } + const passwordIncorrect = this.#reason === _pdfjsLib.PasswordResponses.INCORRECT_PASSWORD; + if (!this._isViewerEmbedded || passwordIncorrect) { + this.input.focus(); + } + this.label.textContent = await this.l10n.get(`password_${passwordIncorrect ? "invalid" : "label"}`); + } + async close() { + if (this.overlayManager.active === this.dialog) { + this.overlayManager.close(this.dialog); + } + } + #verify() { + const password = this.input.value; + if (password?.length > 0) { + this.#invokeCallback(password); + } + } + #cancel() { + this.#invokeCallback(new Error("PasswordPrompt cancelled.")); + this.#activeCapability.resolve(); + } + #invokeCallback(password) { + if (!this.#updateCallback) { + return; + } + this.close(); + this.input.value = ""; + this.#updateCallback(password); + this.#updateCallback = null; + } + async setUpdateCallback(updateCallback, reason) { + if (this.#activeCapability) { + await this.#activeCapability.promise; + } + this.#updateCallback = updateCallback; + this.#reason = reason; + } +} +exports.PasswordPrompt = PasswordPrompt; + +/***/ }), +/* 11 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFAttachmentViewer = void 0; +var _pdfjsLib = __webpack_require__(4); +var _base_tree_viewer = __webpack_require__(12); +var _event_utils = __webpack_require__(6); +class PDFAttachmentViewer extends _base_tree_viewer.BaseTreeViewer { + constructor(options) { + super(options); + this.downloadManager = options.downloadManager; + this.eventBus._on("fileattachmentannotation", this.#appendAttachment.bind(this)); + } + reset(keepRenderedCapability = false) { + super.reset(); + this._attachments = null; + if (!keepRenderedCapability) { + this._renderedCapability = (0, _pdfjsLib.createPromiseCapability)(); + } + this._pendingDispatchEvent = false; + } + async _dispatchEvent(attachmentsCount) { + this._renderedCapability.resolve(); + if (attachmentsCount === 0 && !this._pendingDispatchEvent) { + this._pendingDispatchEvent = true; + await (0, _event_utils.waitOnEventOrTimeout)({ + target: this.eventBus, + name: "annotationlayerrendered", + delay: 1000 + }); + if (!this._pendingDispatchEvent) { + return; + } + } + this._pendingDispatchEvent = false; + this.eventBus.dispatch("attachmentsloaded", { + source: this, + attachmentsCount + }); + } + _bindLink(element, { + content, + filename + }) { + element.onclick = () => { + this.downloadManager.openOrDownloadData(element, content, filename); + return false; + }; + } + render({ + attachments, + keepRenderedCapability = false + }) { + if (this._attachments) { + this.reset(keepRenderedCapability); + } + this._attachments = attachments || null; + if (!attachments) { + this._dispatchEvent(0); + return; + } + const names = Object.keys(attachments).sort(function (a, b) { + return a.toLowerCase().localeCompare(b.toLowerCase()); + }); + const fragment = document.createDocumentFragment(); + let attachmentsCount = 0; + for (const name of names) { + const item = attachments[name]; + const content = item.content, + filename = (0, _pdfjsLib.getFilenameFromUrl)(item.filename, true); + const div = document.createElement("div"); + div.className = "treeItem"; + const element = document.createElement("a"); + this._bindLink(element, { + content, + filename + }); + element.textContent = this._normalizeTextContent(filename); + div.append(element); + fragment.append(div); + attachmentsCount++; + } + this._finishRendering(fragment, attachmentsCount); + } + #appendAttachment({ + filename, + content + }) { + const renderedPromise = this._renderedCapability.promise; + renderedPromise.then(() => { + if (renderedPromise !== this._renderedCapability.promise) { + return; + } + const attachments = this._attachments || Object.create(null); + for (const name in attachments) { + if (filename === name) { + return; + } + } + attachments[filename] = { + filename, + content + }; + this.render({ + attachments, + keepRenderedCapability: true + }); + }); + } +} +exports.PDFAttachmentViewer = PDFAttachmentViewer; + +/***/ }), +/* 12 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.BaseTreeViewer = void 0; +var _ui_utils = __webpack_require__(3); +const TREEITEM_OFFSET_TOP = -100; +const TREEITEM_SELECTED_CLASS = "selected"; +class BaseTreeViewer { + constructor(options) { + if (this.constructor === BaseTreeViewer) { + throw new Error("Cannot initialize BaseTreeViewer."); + } + this.container = options.container; + this.eventBus = options.eventBus; + this.reset(); + } + reset() { + this._pdfDocument = null; + this._lastToggleIsShow = true; + this._currentTreeItem = null; + this.container.textContent = ""; + this.container.classList.remove("treeWithDeepNesting"); + } + _dispatchEvent(count) { + throw new Error("Not implemented: _dispatchEvent"); + } + _bindLink(element, params) { + throw new Error("Not implemented: _bindLink"); + } + _normalizeTextContent(str) { + return (0, _ui_utils.removeNullCharacters)(str, true) || "\u2013"; + } + _addToggleButton(div, hidden = false) { + const toggler = document.createElement("div"); + toggler.className = "treeItemToggler"; + if (hidden) { + toggler.classList.add("treeItemsHidden"); + } + toggler.onclick = evt => { + evt.stopPropagation(); + toggler.classList.toggle("treeItemsHidden"); + if (evt.shiftKey) { + const shouldShowAll = !toggler.classList.contains("treeItemsHidden"); + this._toggleTreeItem(div, shouldShowAll); + } + }; + div.prepend(toggler); + } + _toggleTreeItem(root, show = false) { + this._lastToggleIsShow = show; + for (const toggler of root.querySelectorAll(".treeItemToggler")) { + toggler.classList.toggle("treeItemsHidden", !show); + } + } + _toggleAllTreeItems() { + this._toggleTreeItem(this.container, !this._lastToggleIsShow); + } + _finishRendering(fragment, count, hasAnyNesting = false) { + if (hasAnyNesting) { + this.container.classList.add("treeWithDeepNesting"); + this._lastToggleIsShow = !fragment.querySelector(".treeItemsHidden"); + } + this.container.append(fragment); + this._dispatchEvent(count); + } + render(params) { + throw new Error("Not implemented: render"); + } + _updateCurrentTreeItem(treeItem = null) { + if (this._currentTreeItem) { + this._currentTreeItem.classList.remove(TREEITEM_SELECTED_CLASS); + this._currentTreeItem = null; + } + if (treeItem) { + treeItem.classList.add(TREEITEM_SELECTED_CLASS); + this._currentTreeItem = treeItem; + } + } + _scrollToCurrentTreeItem(treeItem) { + if (!treeItem) { + return; + } + let currentNode = treeItem.parentNode; + while (currentNode && currentNode !== this.container) { + if (currentNode.classList.contains("treeItem")) { + const toggler = currentNode.firstElementChild; + toggler?.classList.remove("treeItemsHidden"); + } + currentNode = currentNode.parentNode; + } + this._updateCurrentTreeItem(treeItem); + this.container.scrollTo(treeItem.offsetLeft, treeItem.offsetTop + TREEITEM_OFFSET_TOP); + } +} +exports.BaseTreeViewer = BaseTreeViewer; + +/***/ }), +/* 13 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFCursorTools = void 0; +var _ui_utils = __webpack_require__(3); +var _pdfjsLib = __webpack_require__(4); +var _grab_to_pan = __webpack_require__(14); +class PDFCursorTools { + constructor({ + container, + eventBus, + cursorToolOnLoad = _ui_utils.CursorTool.SELECT + }) { + this.container = container; + this.eventBus = eventBus; + this.active = _ui_utils.CursorTool.SELECT; + this.previouslyActive = null; + this.handTool = new _grab_to_pan.GrabToPan({ + element: this.container + }); + this.#addEventListeners(); + Promise.resolve().then(() => { + this.switchTool(cursorToolOnLoad); + }); + } + get activeTool() { + return this.active; + } + switchTool(tool) { + if (this.previouslyActive !== null) { + return; + } + if (tool === this.active) { + return; + } + const disableActiveTool = () => { + switch (this.active) { + case _ui_utils.CursorTool.SELECT: + break; + case _ui_utils.CursorTool.HAND: + this.handTool.deactivate(); + break; + case _ui_utils.CursorTool.ZOOM: + } + }; + switch (tool) { + case _ui_utils.CursorTool.SELECT: + disableActiveTool(); + break; + case _ui_utils.CursorTool.HAND: + disableActiveTool(); + this.handTool.activate(); + break; + case _ui_utils.CursorTool.ZOOM: + default: + console.error(`switchTool: "${tool}" is an unsupported value.`); + return; + } + this.active = tool; + this.#dispatchEvent(); + } + #dispatchEvent() { + this.eventBus.dispatch("cursortoolchanged", { + source: this, + tool: this.active + }); + } + #addEventListeners() { + this.eventBus._on("switchcursortool", evt => { + this.switchTool(evt.tool); + }); + let annotationEditorMode = _pdfjsLib.AnnotationEditorType.NONE, + presentationModeState = _ui_utils.PresentationModeState.NORMAL; + const disableActive = () => { + const previouslyActive = this.active; + this.switchTool(_ui_utils.CursorTool.SELECT); + this.previouslyActive ??= previouslyActive; + }; + const enableActive = () => { + const previouslyActive = this.previouslyActive; + if (previouslyActive !== null && annotationEditorMode === _pdfjsLib.AnnotationEditorType.NONE && presentationModeState === _ui_utils.PresentationModeState.NORMAL) { + this.previouslyActive = null; + this.switchTool(previouslyActive); + } + }; + this.eventBus._on("secondarytoolbarreset", evt => { + if (this.previouslyActive !== null) { + annotationEditorMode = _pdfjsLib.AnnotationEditorType.NONE; + presentationModeState = _ui_utils.PresentationModeState.NORMAL; + enableActive(); + } + }); + this.eventBus._on("annotationeditormodechanged", ({ + mode + }) => { + annotationEditorMode = mode; + if (mode === _pdfjsLib.AnnotationEditorType.NONE) { + enableActive(); + } else { + disableActive(); + } + }); + this.eventBus._on("presentationmodechanged", ({ + state + }) => { + presentationModeState = state; + if (state === _ui_utils.PresentationModeState.NORMAL) { + enableActive(); + } else if (state === _ui_utils.PresentationModeState.FULLSCREEN) { + disableActive(); + } + }); + } +} +exports.PDFCursorTools = PDFCursorTools; + +/***/ }), +/* 14 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.GrabToPan = void 0; +const CSS_CLASS_GRAB = "grab-to-pan-grab"; +class GrabToPan { + constructor(options) { + this.element = options.element; + this.document = options.element.ownerDocument; + if (typeof options.ignoreTarget === "function") { + this.ignoreTarget = options.ignoreTarget; + } + this.onActiveChanged = options.onActiveChanged; + this.activate = this.activate.bind(this); + this.deactivate = this.deactivate.bind(this); + this.toggle = this.toggle.bind(this); + this._onMouseDown = this.#onMouseDown.bind(this); + this._onMouseMove = this.#onMouseMove.bind(this); + this._endPan = this.#endPan.bind(this); + const overlay = this.overlay = document.createElement("div"); + overlay.className = "grab-to-pan-grabbing"; + } + activate() { + if (!this.active) { + this.active = true; + this.element.addEventListener("mousedown", this._onMouseDown, true); + this.element.classList.add(CSS_CLASS_GRAB); + this.onActiveChanged?.(true); + } + } + deactivate() { + if (this.active) { + this.active = false; + this.element.removeEventListener("mousedown", this._onMouseDown, true); + this._endPan(); + this.element.classList.remove(CSS_CLASS_GRAB); + this.onActiveChanged?.(false); + } + } + toggle() { + if (this.active) { + this.deactivate(); + } else { + this.activate(); + } + } + ignoreTarget(node) { + return node.matches("a[href], a[href] *, input, textarea, button, button *, select, option"); + } + #onMouseDown(event) { + if (event.button !== 0 || this.ignoreTarget(event.target)) { + return; + } + if (event.originalTarget) { + try { + event.originalTarget.tagName; + } catch (e) { + return; + } + } + this.scrollLeftStart = this.element.scrollLeft; + this.scrollTopStart = this.element.scrollTop; + this.clientXStart = event.clientX; + this.clientYStart = event.clientY; + this.document.addEventListener("mousemove", this._onMouseMove, true); + this.document.addEventListener("mouseup", this._endPan, true); + this.element.addEventListener("scroll", this._endPan, true); + event.preventDefault(); + event.stopPropagation(); + const focusedElement = document.activeElement; + if (focusedElement && !focusedElement.contains(event.target)) { + focusedElement.blur(); + } + } + #onMouseMove(event) { + this.element.removeEventListener("scroll", this._endPan, true); + if (!(event.buttons & 1)) { + this._endPan(); + return; + } + const xDiff = event.clientX - this.clientXStart; + const yDiff = event.clientY - this.clientYStart; + const scrollTop = this.scrollTopStart - yDiff; + const scrollLeft = this.scrollLeftStart - xDiff; + if (this.element.scrollTo) { + this.element.scrollTo({ + top: scrollTop, + left: scrollLeft, + behavior: "instant" + }); + } else { + this.element.scrollTop = scrollTop; + this.element.scrollLeft = scrollLeft; + } + if (!this.overlay.parentNode) { + document.body.append(this.overlay); + } + } + #endPan() { + this.element.removeEventListener("scroll", this._endPan, true); + this.document.removeEventListener("mousemove", this._onMouseMove, true); + this.document.removeEventListener("mouseup", this._endPan, true); + this.overlay.remove(); + } +} +exports.GrabToPan = GrabToPan; + +/***/ }), +/* 15 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFDocumentProperties = void 0; +var _pdfjsLib = __webpack_require__(4); +var _ui_utils = __webpack_require__(3); +const DEFAULT_FIELD_CONTENT = "-"; +const NON_METRIC_LOCALES = ["en-us", "en-lr", "my"]; +const US_PAGE_NAMES = { + "8.5x11": "Letter", + "8.5x14": "Legal" +}; +const METRIC_PAGE_NAMES = { + "297x420": "A3", + "210x297": "A4" +}; +function getPageName(size, isPortrait, pageNames) { + const width = isPortrait ? size.width : size.height; + const height = isPortrait ? size.height : size.width; + return pageNames[`${width}x${height}`]; +} +class PDFDocumentProperties { + #fieldData = null; + constructor({ + dialog, + fields, + closeButton + }, overlayManager, eventBus, l10n, fileNameLookup) { + this.dialog = dialog; + this.fields = fields; + this.overlayManager = overlayManager; + this.l10n = l10n; + this._fileNameLookup = fileNameLookup; + this.#reset(); + closeButton.addEventListener("click", this.close.bind(this)); + this.overlayManager.register(this.dialog); + eventBus._on("pagechanging", evt => { + this._currentPageNumber = evt.pageNumber; + }); + eventBus._on("rotationchanging", evt => { + this._pagesRotation = evt.pagesRotation; + }); + this._isNonMetricLocale = true; + l10n.getLanguage().then(locale => { + this._isNonMetricLocale = NON_METRIC_LOCALES.includes(locale); + }); + } + async open() { + await Promise.all([this.overlayManager.open(this.dialog), this._dataAvailableCapability.promise]); + const currentPageNumber = this._currentPageNumber; + const pagesRotation = this._pagesRotation; + if (this.#fieldData && currentPageNumber === this.#fieldData._currentPageNumber && pagesRotation === this.#fieldData._pagesRotation) { + this.#updateUI(); + return; + } + const { + info, + contentLength + } = await this.pdfDocument.getMetadata(); + const [fileName, fileSize, creationDate, modificationDate, pageSize, isLinearized] = await Promise.all([this._fileNameLookup(), this.#parseFileSize(contentLength), this.#parseDate(info.CreationDate), this.#parseDate(info.ModDate), this.pdfDocument.getPage(currentPageNumber).then(pdfPage => { + return this.#parsePageSize((0, _ui_utils.getPageSizeInches)(pdfPage), pagesRotation); + }), this.#parseLinearization(info.IsLinearized)]); + this.#fieldData = Object.freeze({ + fileName, + fileSize, + title: info.Title, + author: info.Author, + subject: info.Subject, + keywords: info.Keywords, + creationDate, + modificationDate, + creator: info.Creator, + producer: info.Producer, + version: info.PDFFormatVersion, + pageCount: this.pdfDocument.numPages, + pageSize, + linearized: isLinearized, + _currentPageNumber: currentPageNumber, + _pagesRotation: pagesRotation + }); + this.#updateUI(); + const { + length + } = await this.pdfDocument.getDownloadInfo(); + if (contentLength === length) { + return; + } + const data = Object.assign(Object.create(null), this.#fieldData); + data.fileSize = await this.#parseFileSize(length); + this.#fieldData = Object.freeze(data); + this.#updateUI(); + } + async close() { + this.overlayManager.close(this.dialog); + } + setDocument(pdfDocument) { + if (this.pdfDocument) { + this.#reset(); + this.#updateUI(true); + } + if (!pdfDocument) { + return; + } + this.pdfDocument = pdfDocument; + this._dataAvailableCapability.resolve(); + } + #reset() { + this.pdfDocument = null; + this.#fieldData = null; + this._dataAvailableCapability = (0, _pdfjsLib.createPromiseCapability)(); + this._currentPageNumber = 1; + this._pagesRotation = 0; + } + #updateUI(reset = false) { + if (reset || !this.#fieldData) { + for (const id in this.fields) { + this.fields[id].textContent = DEFAULT_FIELD_CONTENT; + } + return; + } + if (this.overlayManager.active !== this.dialog) { + return; + } + for (const id in this.fields) { + const content = this.#fieldData[id]; + this.fields[id].textContent = content || content === 0 ? content : DEFAULT_FIELD_CONTENT; + } + } + async #parseFileSize(fileSize = 0) { + const kb = fileSize / 1024, + mb = kb / 1024; + if (!kb) { + return undefined; + } + return this.l10n.get(`document_properties_${mb >= 1 ? "mb" : "kb"}`, { + size_mb: mb >= 1 && (+mb.toPrecision(3)).toLocaleString(), + size_kb: mb < 1 && (+kb.toPrecision(3)).toLocaleString(), + size_b: fileSize.toLocaleString() + }); + } + async #parsePageSize(pageSizeInches, pagesRotation) { + if (!pageSizeInches) { + return undefined; + } + if (pagesRotation % 180 !== 0) { + pageSizeInches = { + width: pageSizeInches.height, + height: pageSizeInches.width + }; + } + const isPortrait = (0, _ui_utils.isPortraitOrientation)(pageSizeInches); + let sizeInches = { + width: Math.round(pageSizeInches.width * 100) / 100, + height: Math.round(pageSizeInches.height * 100) / 100 + }; + let sizeMillimeters = { + width: Math.round(pageSizeInches.width * 25.4 * 10) / 10, + height: Math.round(pageSizeInches.height * 25.4 * 10) / 10 + }; + let rawName = getPageName(sizeInches, isPortrait, US_PAGE_NAMES) || getPageName(sizeMillimeters, isPortrait, METRIC_PAGE_NAMES); + if (!rawName && !(Number.isInteger(sizeMillimeters.width) && Number.isInteger(sizeMillimeters.height))) { + const exactMillimeters = { + width: pageSizeInches.width * 25.4, + height: pageSizeInches.height * 25.4 + }; + const intMillimeters = { + width: Math.round(sizeMillimeters.width), + height: Math.round(sizeMillimeters.height) + }; + if (Math.abs(exactMillimeters.width - intMillimeters.width) < 0.1 && Math.abs(exactMillimeters.height - intMillimeters.height) < 0.1) { + rawName = getPageName(intMillimeters, isPortrait, METRIC_PAGE_NAMES); + if (rawName) { + sizeInches = { + width: Math.round(intMillimeters.width / 25.4 * 100) / 100, + height: Math.round(intMillimeters.height / 25.4 * 100) / 100 + }; + sizeMillimeters = intMillimeters; + } + } + } + const [{ + width, + height + }, unit, name, orientation] = await Promise.all([this._isNonMetricLocale ? sizeInches : sizeMillimeters, this.l10n.get(`document_properties_page_size_unit_${this._isNonMetricLocale ? "inches" : "millimeters"}`), rawName && this.l10n.get(`document_properties_page_size_name_${rawName.toLowerCase()}`), this.l10n.get(`document_properties_page_size_orientation_${isPortrait ? "portrait" : "landscape"}`)]); + return this.l10n.get(`document_properties_page_size_dimension_${name ? "name_" : ""}string`, { + width: width.toLocaleString(), + height: height.toLocaleString(), + unit, + name, + orientation + }); + } + async #parseDate(inputDate) { + const dateObject = _pdfjsLib.PDFDateString.toDateObject(inputDate); + if (!dateObject) { + return undefined; + } + return this.l10n.get("document_properties_date_string", { + date: dateObject.toLocaleDateString(), + time: dateObject.toLocaleTimeString() + }); + } + #parseLinearization(isLinearized) { + return this.l10n.get(`document_properties_linearized_${isLinearized ? "yes" : "no"}`); + } +} +exports.PDFDocumentProperties = PDFDocumentProperties; + +/***/ }), +/* 16 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFFindBar = void 0; +var _pdf_find_controller = __webpack_require__(17); +const MATCHES_COUNT_LIMIT = 1000; +class PDFFindBar { + constructor(options, eventBus, l10n) { + this.opened = false; + this.bar = options.bar; + this.toggleButton = options.toggleButton; + this.findField = options.findField; + this.highlightAll = options.highlightAllCheckbox; + this.caseSensitive = options.caseSensitiveCheckbox; + this.matchDiacritics = options.matchDiacriticsCheckbox; + this.entireWord = options.entireWordCheckbox; + this.findMsg = options.findMsg; + this.findResultsCount = options.findResultsCount; + this.findPreviousButton = options.findPreviousButton; + this.findNextButton = options.findNextButton; + this.eventBus = eventBus; + this.l10n = l10n; + this.toggleButton.addEventListener("click", () => { + this.toggle(); + }); + this.findField.addEventListener("input", () => { + this.dispatchEvent(""); + }); + this.bar.addEventListener("keydown", e => { + switch (e.keyCode) { + case 13: + if (e.target === this.findField) { + this.dispatchEvent("again", e.shiftKey); + } + break; + case 27: + this.close(); + break; + } + }); + this.findPreviousButton.addEventListener("click", () => { + this.dispatchEvent("again", true); + }); + this.findNextButton.addEventListener("click", () => { + this.dispatchEvent("again", false); + }); + this.highlightAll.addEventListener("click", () => { + this.dispatchEvent("highlightallchange"); + }); + this.caseSensitive.addEventListener("click", () => { + this.dispatchEvent("casesensitivitychange"); + }); + this.entireWord.addEventListener("click", () => { + this.dispatchEvent("entirewordchange"); + }); + this.matchDiacritics.addEventListener("click", () => { + this.dispatchEvent("diacriticmatchingchange"); + }); + this.eventBus._on("resize", this.#adjustWidth.bind(this)); + } + reset() { + this.updateUIState(); + } + dispatchEvent(type, findPrev = false) { + this.eventBus.dispatch("find", { + source: this, + type, + query: this.findField.value, + phraseSearch: true, + caseSensitive: this.caseSensitive.checked, + entireWord: this.entireWord.checked, + highlightAll: this.highlightAll.checked, + findPrevious: findPrev, + matchDiacritics: this.matchDiacritics.checked + }); + } + updateUIState(state, previous, matchesCount) { + let findMsg = Promise.resolve(""); + let status = ""; + switch (state) { + case _pdf_find_controller.FindState.FOUND: + break; + case _pdf_find_controller.FindState.PENDING: + status = "pending"; + break; + case _pdf_find_controller.FindState.NOT_FOUND: + findMsg = this.l10n.get("find_not_found"); + status = "notFound"; + break; + case _pdf_find_controller.FindState.WRAPPED: + findMsg = this.l10n.get(`find_reached_${previous ? "top" : "bottom"}`); + break; + } + this.findField.setAttribute("data-status", status); + this.findField.setAttribute("aria-invalid", state === _pdf_find_controller.FindState.NOT_FOUND); + findMsg.then(msg => { + this.findMsg.textContent = msg; + this.#adjustWidth(); + }); + this.updateResultsCount(matchesCount); + } + updateResultsCount({ + current = 0, + total = 0 + } = {}) { + const limit = MATCHES_COUNT_LIMIT; + let matchCountMsg = Promise.resolve(""); + if (total > 0) { + if (total > limit) { + let key = "find_match_count_limit"; + matchCountMsg = this.l10n.get(key, { + limit + }); + } else { + let key = "find_match_count"; + matchCountMsg = this.l10n.get(key, { + current, + total + }); + } + } + matchCountMsg.then(msg => { + this.findResultsCount.textContent = msg; + this.#adjustWidth(); + }); + } + open() { + if (!this.opened) { + this.opened = true; + this.toggleButton.classList.add("toggled"); + this.toggleButton.setAttribute("aria-expanded", "true"); + this.bar.classList.remove("hidden"); + } + this.findField.select(); + this.findField.focus(); + this.#adjustWidth(); + } + close() { + if (!this.opened) { + return; + } + this.opened = false; + this.toggleButton.classList.remove("toggled"); + this.toggleButton.setAttribute("aria-expanded", "false"); + this.bar.classList.add("hidden"); + this.eventBus.dispatch("findbarclose", { + source: this + }); + } + toggle() { + if (this.opened) { + this.close(); + } else { + this.open(); + } + } + #adjustWidth() { + if (!this.opened) { + return; + } + this.bar.classList.remove("wrapContainers"); + const findbarHeight = this.bar.clientHeight; + const inputContainerHeight = this.bar.firstElementChild.clientHeight; + if (findbarHeight > inputContainerHeight) { + this.bar.classList.add("wrapContainers"); + } + } +} +exports.PDFFindBar = PDFFindBar; + +/***/ }), +/* 17 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFFindController = exports.FindState = void 0; +var _ui_utils = __webpack_require__(3); +var _pdfjsLib = __webpack_require__(4); +var _pdf_find_utils = __webpack_require__(18); +const FindState = { + FOUND: 0, + NOT_FOUND: 1, + WRAPPED: 2, + PENDING: 3 +}; +exports.FindState = FindState; +const FIND_TIMEOUT = 250; +const MATCH_SCROLL_OFFSET_TOP = -50; +const MATCH_SCROLL_OFFSET_LEFT = -400; +const CHARACTERS_TO_NORMALIZE = { + "\u2010": "-", + "\u2018": "'", + "\u2019": "'", + "\u201A": "'", + "\u201B": "'", + "\u201C": '"', + "\u201D": '"', + "\u201E": '"', + "\u201F": '"', + "\u00BC": "1/4", + "\u00BD": "1/2", + "\u00BE": "3/4" +}; +const DIACRITICS_EXCEPTION = new Set([0x3099, 0x309a, 0x094d, 0x09cd, 0x0a4d, 0x0acd, 0x0b4d, 0x0bcd, 0x0c4d, 0x0ccd, 0x0d3b, 0x0d3c, 0x0d4d, 0x0dca, 0x0e3a, 0x0eba, 0x0f84, 0x1039, 0x103a, 0x1714, 0x1734, 0x17d2, 0x1a60, 0x1b44, 0x1baa, 0x1bab, 0x1bf2, 0x1bf3, 0x2d7f, 0xa806, 0xa82c, 0xa8c4, 0xa953, 0xa9c0, 0xaaf6, 0xabed, 0x0c56, 0x0f71, 0x0f72, 0x0f7a, 0x0f7b, 0x0f7c, 0x0f7d, 0x0f80, 0x0f74]); +let DIACRITICS_EXCEPTION_STR; +const DIACRITICS_REG_EXP = /\p{M}+/gu; +const SPECIAL_CHARS_REG_EXP = /([.*+?^${}()|[\]\\])|(\p{P})|(\s+)|(\p{M})|(\p{L})/gu; +const NOT_DIACRITIC_FROM_END_REG_EXP = /([^\p{M}])\p{M}*$/u; +const NOT_DIACRITIC_FROM_START_REG_EXP = /^\p{M}*([^\p{M}])/u; +const SYLLABLES_REG_EXP = /[\uAC00-\uD7AF\uFA6C\uFACF-\uFAD1\uFAD5-\uFAD7]+/g; +const SYLLABLES_LENGTHS = new Map(); +const FIRST_CHAR_SYLLABLES_REG_EXP = "[\\u1100-\\u1112\\ud7a4-\\ud7af\\ud84a\\ud84c\\ud850\\ud854\\ud857\\ud85f]"; +const NFKC_CHARS_TO_NORMALIZE = new Map(); +let noSyllablesRegExp = null; +let withSyllablesRegExp = null; +function normalize(text) { + const syllablePositions = []; + let m; + while ((m = SYLLABLES_REG_EXP.exec(text)) !== null) { + let { + index + } = m; + for (const char of m[0]) { + let len = SYLLABLES_LENGTHS.get(char); + if (!len) { + len = char.normalize("NFD").length; + SYLLABLES_LENGTHS.set(char, len); + } + syllablePositions.push([len, index++]); + } + } + let normalizationRegex; + if (syllablePositions.length === 0 && noSyllablesRegExp) { + normalizationRegex = noSyllablesRegExp; + } else if (syllablePositions.length > 0 && withSyllablesRegExp) { + normalizationRegex = withSyllablesRegExp; + } else { + const replace = Object.keys(CHARACTERS_TO_NORMALIZE).join(""); + const toNormalizeWithNFKC = "\u2460-\u2473" + "\u24b6-\u24ff" + "\u3244-\u32bf" + "\u32d0-\u32fe" + "\uff00-\uffef"; + const CJK = "(?:\\p{Ideographic}|[\u3040-\u30FF])"; + const HKDiacritics = "(?:\u3099|\u309A)"; + const regexp = `([${replace}])|([${toNormalizeWithNFKC}])|(${HKDiacritics}\\n)|(\\p{M}+(?:-\\n)?)|(\\S-\\n)|(${CJK}\\n)|(\\n)`; + if (syllablePositions.length === 0) { + normalizationRegex = noSyllablesRegExp = new RegExp(regexp + "|(\\u0000)", "gum"); + } else { + normalizationRegex = withSyllablesRegExp = new RegExp(regexp + `|(${FIRST_CHAR_SYLLABLES_REG_EXP})`, "gum"); + } + } + const rawDiacriticsPositions = []; + while ((m = DIACRITICS_REG_EXP.exec(text)) !== null) { + rawDiacriticsPositions.push([m[0].length, m.index]); + } + let normalized = text.normalize("NFD"); + const positions = [[0, 0]]; + let rawDiacriticsIndex = 0; + let syllableIndex = 0; + let shift = 0; + let shiftOrigin = 0; + let eol = 0; + let hasDiacritics = false; + normalized = normalized.replace(normalizationRegex, (match, p1, p2, p3, p4, p5, p6, p7, p8, i) => { + i -= shiftOrigin; + if (p1) { + const replacement = CHARACTERS_TO_NORMALIZE[p1]; + const jj = replacement.length; + for (let j = 1; j < jj; j++) { + positions.push([i - shift + j, shift - j]); + } + shift -= jj - 1; + return replacement; + } + if (p2) { + let replacement = NFKC_CHARS_TO_NORMALIZE.get(p2); + if (!replacement) { + replacement = p2.normalize("NFKC"); + NFKC_CHARS_TO_NORMALIZE.set(p2, replacement); + } + const jj = replacement.length; + for (let j = 1; j < jj; j++) { + positions.push([i - shift + j, shift - j]); + } + shift -= jj - 1; + return replacement; + } + if (p3) { + hasDiacritics = true; + if (i + eol === rawDiacriticsPositions[rawDiacriticsIndex]?.[1]) { + ++rawDiacriticsIndex; + } else { + positions.push([i - 1 - shift + 1, shift - 1]); + shift -= 1; + shiftOrigin += 1; + } + positions.push([i - shift + 1, shift]); + shiftOrigin += 1; + eol += 1; + return p3.charAt(0); + } + if (p4) { + const hasTrailingDashEOL = p4.endsWith("\n"); + const len = hasTrailingDashEOL ? p4.length - 2 : p4.length; + hasDiacritics = true; + let jj = len; + if (i + eol === rawDiacriticsPositions[rawDiacriticsIndex]?.[1]) { + jj -= rawDiacriticsPositions[rawDiacriticsIndex][0]; + ++rawDiacriticsIndex; + } + for (let j = 1; j <= jj; j++) { + positions.push([i - 1 - shift + j, shift - j]); + } + shift -= jj; + shiftOrigin += jj; + if (hasTrailingDashEOL) { + i += len - 1; + positions.push([i - shift + 1, 1 + shift]); + shift += 1; + shiftOrigin += 1; + eol += 1; + return p4.slice(0, len); + } + return p4; + } + if (p5) { + const len = p5.length - 2; + positions.push([i - shift + len, 1 + shift]); + shift += 1; + shiftOrigin += 1; + eol += 1; + return p5.slice(0, -2); + } + if (p6) { + const len = p6.length - 1; + positions.push([i - shift + len, shift]); + shiftOrigin += 1; + eol += 1; + return p6.slice(0, -1); + } + if (p7) { + positions.push([i - shift + 1, shift - 1]); + shift -= 1; + shiftOrigin += 1; + eol += 1; + return " "; + } + if (i + eol === syllablePositions[syllableIndex]?.[1]) { + const newCharLen = syllablePositions[syllableIndex][0] - 1; + ++syllableIndex; + for (let j = 1; j <= newCharLen; j++) { + positions.push([i - (shift - j), shift - j]); + } + shift -= newCharLen; + shiftOrigin += newCharLen; + } + return p8; + }); + positions.push([normalized.length, shift]); + return [normalized, positions, hasDiacritics]; +} +function getOriginalIndex(diffs, pos, len) { + if (!diffs) { + return [pos, len]; + } + const start = pos; + const end = pos + len; + let i = (0, _ui_utils.binarySearchFirstItem)(diffs, x => x[0] >= start); + if (diffs[i][0] > start) { + --i; + } + let j = (0, _ui_utils.binarySearchFirstItem)(diffs, x => x[0] >= end, i); + if (diffs[j][0] > end) { + --j; + } + return [start + diffs[i][1], len + diffs[j][1] - diffs[i][1]]; +} +class PDFFindController { + #updateMatchesCountOnProgress = true; + #visitedPagesCount = 0; + constructor({ + linkService, + eventBus, + updateMatchesCountOnProgress = true + }) { + this._linkService = linkService; + this._eventBus = eventBus; + this.#updateMatchesCountOnProgress = updateMatchesCountOnProgress; + this.#reset(); + eventBus._on("find", this.#onFind.bind(this)); + eventBus._on("findbarclose", this.#onFindBarClose.bind(this)); + } + get highlightMatches() { + return this._highlightMatches; + } + get pageMatches() { + return this._pageMatches; + } + get pageMatchesLength() { + return this._pageMatchesLength; + } + get selected() { + return this._selected; + } + get state() { + return this._state; + } + setDocument(pdfDocument) { + if (this._pdfDocument) { + this.#reset(); + } + if (!pdfDocument) { + return; + } + this._pdfDocument = pdfDocument; + this._firstPageCapability.resolve(); + } + #onFind(state) { + if (!state) { + return; + } + const pdfDocument = this._pdfDocument; + const { + type + } = state; + if (this._state === null || this.#shouldDirtyMatch(state)) { + this._dirtyMatch = true; + } + this._state = state; + if (type !== "highlightallchange") { + this.#updateUIState(FindState.PENDING); + } + this._firstPageCapability.promise.then(() => { + if (!this._pdfDocument || pdfDocument && this._pdfDocument !== pdfDocument) { + return; + } + this.#extractText(); + const findbarClosed = !this._highlightMatches; + const pendingTimeout = !!this._findTimeout; + if (this._findTimeout) { + clearTimeout(this._findTimeout); + this._findTimeout = null; + } + if (!type) { + this._findTimeout = setTimeout(() => { + this.#nextMatch(); + this._findTimeout = null; + }, FIND_TIMEOUT); + } else if (this._dirtyMatch) { + this.#nextMatch(); + } else if (type === "again") { + this.#nextMatch(); + if (findbarClosed && this._state.highlightAll) { + this.#updateAllPages(); + } + } else if (type === "highlightallchange") { + if (pendingTimeout) { + this.#nextMatch(); + } else { + this._highlightMatches = true; + } + this.#updateAllPages(); + } else { + this.#nextMatch(); + } + }); + } + scrollMatchIntoView({ + element = null, + selectedLeft = 0, + pageIndex = -1, + matchIndex = -1 + }) { + if (!this._scrollMatches || !element) { + return; + } else if (matchIndex === -1 || matchIndex !== this._selected.matchIdx) { + return; + } else if (pageIndex === -1 || pageIndex !== this._selected.pageIdx) { + return; + } + this._scrollMatches = false; + const spot = { + top: MATCH_SCROLL_OFFSET_TOP, + left: selectedLeft + MATCH_SCROLL_OFFSET_LEFT + }; + (0, _ui_utils.scrollIntoView)(element, spot, true); + } + #reset() { + this._highlightMatches = false; + this._scrollMatches = false; + this._pdfDocument = null; + this._pageMatches = []; + this._pageMatchesLength = []; + this.#visitedPagesCount = 0; + this._state = null; + this._selected = { + pageIdx: -1, + matchIdx: -1 + }; + this._offset = { + pageIdx: null, + matchIdx: null, + wrapped: false + }; + this._extractTextPromises = []; + this._pageContents = []; + this._pageDiffs = []; + this._hasDiacritics = []; + this._matchesCountTotal = 0; + this._pagesToSearch = null; + this._pendingFindMatches = new Set(); + this._resumePageIdx = null; + this._dirtyMatch = false; + clearTimeout(this._findTimeout); + this._findTimeout = null; + this._firstPageCapability = (0, _pdfjsLib.createPromiseCapability)(); + } + get #query() { + if (this._state.query !== this._rawQuery) { + this._rawQuery = this._state.query; + [this._normalizedQuery] = normalize(this._state.query); + } + return this._normalizedQuery; + } + #shouldDirtyMatch(state) { + if (state.query !== this._state.query) { + return true; + } + switch (state.type) { + case "again": + const pageNumber = this._selected.pageIdx + 1; + const linkService = this._linkService; + if (pageNumber >= 1 && pageNumber <= linkService.pagesCount && pageNumber !== linkService.page && !linkService.isPageVisible(pageNumber)) { + return true; + } + return false; + case "highlightallchange": + return false; + } + return true; + } + #isEntireWord(content, startIdx, length) { + let match = content.slice(0, startIdx).match(NOT_DIACRITIC_FROM_END_REG_EXP); + if (match) { + const first = content.charCodeAt(startIdx); + const limit = match[1].charCodeAt(0); + if ((0, _pdf_find_utils.getCharacterType)(first) === (0, _pdf_find_utils.getCharacterType)(limit)) { + return false; + } + } + match = content.slice(startIdx + length).match(NOT_DIACRITIC_FROM_START_REG_EXP); + if (match) { + const last = content.charCodeAt(startIdx + length - 1); + const limit = match[1].charCodeAt(0); + if ((0, _pdf_find_utils.getCharacterType)(last) === (0, _pdf_find_utils.getCharacterType)(limit)) { + return false; + } + } + return true; + } + #calculateRegExpMatch(query, entireWord, pageIndex, pageContent) { + const matches = this._pageMatches[pageIndex] = []; + const matchesLength = this._pageMatchesLength[pageIndex] = []; + if (!query) { + return; + } + const diffs = this._pageDiffs[pageIndex]; + let match; + while ((match = query.exec(pageContent)) !== null) { + if (entireWord && !this.#isEntireWord(pageContent, match.index, match[0].length)) { + continue; + } + const [matchPos, matchLen] = getOriginalIndex(diffs, match.index, match[0].length); + if (matchLen) { + matches.push(matchPos); + matchesLength.push(matchLen); + } + } + } + #convertToRegExpString(query, hasDiacritics) { + const { + matchDiacritics + } = this._state; + let isUnicode = false; + query = query.replaceAll(SPECIAL_CHARS_REG_EXP, (match, p1, p2, p3, p4, p5) => { + if (p1) { + return `[ ]*\\${p1}[ ]*`; + } + if (p2) { + return `[ ]*${p2}[ ]*`; + } + if (p3) { + return "[ ]+"; + } + if (matchDiacritics) { + return p4 || p5; + } + if (p4) { + return DIACRITICS_EXCEPTION.has(p4.charCodeAt(0)) ? p4 : ""; + } + if (hasDiacritics) { + isUnicode = true; + return `${p5}\\p{M}*`; + } + return p5; + }); + const trailingSpaces = "[ ]*"; + if (query.endsWith(trailingSpaces)) { + query = query.slice(0, query.length - trailingSpaces.length); + } + if (matchDiacritics) { + if (hasDiacritics) { + DIACRITICS_EXCEPTION_STR ||= String.fromCharCode(...DIACRITICS_EXCEPTION); + isUnicode = true; + query = `${query}(?=[${DIACRITICS_EXCEPTION_STR}]|[^\\p{M}]|$)`; + } + } + return [isUnicode, query]; + } + #calculateMatch(pageIndex) { + let query = this.#query; + if (!query) { + return; + } + const { + caseSensitive, + entireWord, + phraseSearch + } = this._state; + const pageContent = this._pageContents[pageIndex]; + const hasDiacritics = this._hasDiacritics[pageIndex]; + let isUnicode = false; + if (phraseSearch) { + [isUnicode, query] = this.#convertToRegExpString(query, hasDiacritics); + } else { + const match = query.match(/\S+/g); + if (match) { + query = match.sort().reverse().map(q => { + const [isUnicodePart, queryPart] = this.#convertToRegExpString(q, hasDiacritics); + isUnicode ||= isUnicodePart; + return `(${queryPart})`; + }).join("|"); + } + } + const flags = `g${isUnicode ? "u" : ""}${caseSensitive ? "" : "i"}`; + query = query ? new RegExp(query, flags) : null; + this.#calculateRegExpMatch(query, entireWord, pageIndex, pageContent); + if (this._state.highlightAll) { + this.#updatePage(pageIndex); + } + if (this._resumePageIdx === pageIndex) { + this._resumePageIdx = null; + this.#nextPageMatch(); + } + const pageMatchesCount = this._pageMatches[pageIndex].length; + this._matchesCountTotal += pageMatchesCount; + if (this.#updateMatchesCountOnProgress) { + if (pageMatchesCount > 0) { + this.#updateUIResultsCount(); + } + } else if (++this.#visitedPagesCount === this._linkService.pagesCount) { + this.#updateUIResultsCount(); + } + } + #extractText() { + if (this._extractTextPromises.length > 0) { + return; + } + let promise = Promise.resolve(); + for (let i = 0, ii = this._linkService.pagesCount; i < ii; i++) { + const extractTextCapability = (0, _pdfjsLib.createPromiseCapability)(); + this._extractTextPromises[i] = extractTextCapability.promise; + promise = promise.then(() => { + return this._pdfDocument.getPage(i + 1).then(pdfPage => { + return pdfPage.getTextContent(); + }).then(textContent => { + const strBuf = []; + for (const textItem of textContent.items) { + strBuf.push(textItem.str); + if (textItem.hasEOL) { + strBuf.push("\n"); + } + } + [this._pageContents[i], this._pageDiffs[i], this._hasDiacritics[i]] = normalize(strBuf.join("")); + extractTextCapability.resolve(); + }, reason => { + console.error(`Unable to get text content for page ${i + 1}`, reason); + this._pageContents[i] = ""; + this._pageDiffs[i] = null; + this._hasDiacritics[i] = false; + extractTextCapability.resolve(); + }); + }); + } + } + #updatePage(index) { + if (this._scrollMatches && this._selected.pageIdx === index) { + this._linkService.page = index + 1; + } + this._eventBus.dispatch("updatetextlayermatches", { + source: this, + pageIndex: index + }); + } + #updateAllPages() { + this._eventBus.dispatch("updatetextlayermatches", { + source: this, + pageIndex: -1 + }); + } + #nextMatch() { + const previous = this._state.findPrevious; + const currentPageIndex = this._linkService.page - 1; + const numPages = this._linkService.pagesCount; + this._highlightMatches = true; + if (this._dirtyMatch) { + this._dirtyMatch = false; + this._selected.pageIdx = this._selected.matchIdx = -1; + this._offset.pageIdx = currentPageIndex; + this._offset.matchIdx = null; + this._offset.wrapped = false; + this._resumePageIdx = null; + this._pageMatches.length = 0; + this._pageMatchesLength.length = 0; + this.#visitedPagesCount = 0; + this._matchesCountTotal = 0; + this.#updateAllPages(); + for (let i = 0; i < numPages; i++) { + if (this._pendingFindMatches.has(i)) { + continue; + } + this._pendingFindMatches.add(i); + this._extractTextPromises[i].then(() => { + this._pendingFindMatches.delete(i); + this.#calculateMatch(i); + }); + } + } + if (!this.#query) { + this.#updateUIState(FindState.FOUND); + return; + } + if (this._resumePageIdx) { + return; + } + const offset = this._offset; + this._pagesToSearch = numPages; + if (offset.matchIdx !== null) { + const numPageMatches = this._pageMatches[offset.pageIdx].length; + if (!previous && offset.matchIdx + 1 < numPageMatches || previous && offset.matchIdx > 0) { + offset.matchIdx = previous ? offset.matchIdx - 1 : offset.matchIdx + 1; + this.#updateMatch(true); + return; + } + this.#advanceOffsetPage(previous); + } + this.#nextPageMatch(); + } + #matchesReady(matches) { + const offset = this._offset; + const numMatches = matches.length; + const previous = this._state.findPrevious; + if (numMatches) { + offset.matchIdx = previous ? numMatches - 1 : 0; + this.#updateMatch(true); + return true; + } + this.#advanceOffsetPage(previous); + if (offset.wrapped) { + offset.matchIdx = null; + if (this._pagesToSearch < 0) { + this.#updateMatch(false); + return true; + } + } + return false; + } + #nextPageMatch() { + if (this._resumePageIdx !== null) { + console.error("There can only be one pending page."); + } + let matches = null; + do { + const pageIdx = this._offset.pageIdx; + matches = this._pageMatches[pageIdx]; + if (!matches) { + this._resumePageIdx = pageIdx; + break; + } + } while (!this.#matchesReady(matches)); + } + #advanceOffsetPage(previous) { + const offset = this._offset; + const numPages = this._linkService.pagesCount; + offset.pageIdx = previous ? offset.pageIdx - 1 : offset.pageIdx + 1; + offset.matchIdx = null; + this._pagesToSearch--; + if (offset.pageIdx >= numPages || offset.pageIdx < 0) { + offset.pageIdx = previous ? numPages - 1 : 0; + offset.wrapped = true; + } + } + #updateMatch(found = false) { + let state = FindState.NOT_FOUND; + const wrapped = this._offset.wrapped; + this._offset.wrapped = false; + if (found) { + const previousPage = this._selected.pageIdx; + this._selected.pageIdx = this._offset.pageIdx; + this._selected.matchIdx = this._offset.matchIdx; + state = wrapped ? FindState.WRAPPED : FindState.FOUND; + if (previousPage !== -1 && previousPage !== this._selected.pageIdx) { + this.#updatePage(previousPage); + } + } + this.#updateUIState(state, this._state.findPrevious); + if (this._selected.pageIdx !== -1) { + this._scrollMatches = true; + this.#updatePage(this._selected.pageIdx); + } + } + #onFindBarClose(evt) { + const pdfDocument = this._pdfDocument; + this._firstPageCapability.promise.then(() => { + if (!this._pdfDocument || pdfDocument && this._pdfDocument !== pdfDocument) { + return; + } + if (this._findTimeout) { + clearTimeout(this._findTimeout); + this._findTimeout = null; + } + if (this._resumePageIdx) { + this._resumePageIdx = null; + this._dirtyMatch = true; + } + this.#updateUIState(FindState.FOUND); + this._highlightMatches = false; + this.#updateAllPages(); + }); + } + #requestMatchesCount() { + const { + pageIdx, + matchIdx + } = this._selected; + let current = 0, + total = this._matchesCountTotal; + if (matchIdx !== -1) { + for (let i = 0; i < pageIdx; i++) { + current += this._pageMatches[i]?.length || 0; + } + current += matchIdx + 1; + } + if (current < 1 || current > total) { + current = total = 0; + } + return { + current, + total + }; + } + #updateUIResultsCount() { + this._eventBus.dispatch("updatefindmatchescount", { + source: this, + matchesCount: this.#requestMatchesCount() + }); + } + #updateUIState(state, previous = false) { + if (!this.#updateMatchesCountOnProgress && (this.#visitedPagesCount !== this._linkService.pagesCount || state === FindState.PENDING)) { + return; + } + this._eventBus.dispatch("updatefindcontrolstate", { + source: this, + state, + previous, + matchesCount: this.#requestMatchesCount(), + rawQuery: this._state?.query ?? null + }); + } +} +exports.PDFFindController = PDFFindController; + +/***/ }), +/* 18 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.CharacterType = void 0; +exports.getCharacterType = getCharacterType; +const CharacterType = { + SPACE: 0, + ALPHA_LETTER: 1, + PUNCT: 2, + HAN_LETTER: 3, + KATAKANA_LETTER: 4, + HIRAGANA_LETTER: 5, + HALFWIDTH_KATAKANA_LETTER: 6, + THAI_LETTER: 7 +}; +exports.CharacterType = CharacterType; +function isAlphabeticalScript(charCode) { + return charCode < 0x2e80; +} +function isAscii(charCode) { + return (charCode & 0xff80) === 0; +} +function isAsciiAlpha(charCode) { + return charCode >= 0x61 && charCode <= 0x7a || charCode >= 0x41 && charCode <= 0x5a; +} +function isAsciiDigit(charCode) { + return charCode >= 0x30 && charCode <= 0x39; +} +function isAsciiSpace(charCode) { + return charCode === 0x20 || charCode === 0x09 || charCode === 0x0d || charCode === 0x0a; +} +function isHan(charCode) { + return charCode >= 0x3400 && charCode <= 0x9fff || charCode >= 0xf900 && charCode <= 0xfaff; +} +function isKatakana(charCode) { + return charCode >= 0x30a0 && charCode <= 0x30ff; +} +function isHiragana(charCode) { + return charCode >= 0x3040 && charCode <= 0x309f; +} +function isHalfwidthKatakana(charCode) { + return charCode >= 0xff60 && charCode <= 0xff9f; +} +function isThai(charCode) { + return (charCode & 0xff80) === 0x0e00; +} +function getCharacterType(charCode) { + if (isAlphabeticalScript(charCode)) { + if (isAscii(charCode)) { + if (isAsciiSpace(charCode)) { + return CharacterType.SPACE; + } else if (isAsciiAlpha(charCode) || isAsciiDigit(charCode) || charCode === 0x5f) { + return CharacterType.ALPHA_LETTER; + } + return CharacterType.PUNCT; + } else if (isThai(charCode)) { + return CharacterType.THAI_LETTER; + } else if (charCode === 0xa0) { + return CharacterType.SPACE; + } + return CharacterType.ALPHA_LETTER; + } + if (isHan(charCode)) { + return CharacterType.HAN_LETTER; + } else if (isKatakana(charCode)) { + return CharacterType.KATAKANA_LETTER; + } else if (isHiragana(charCode)) { + return CharacterType.HIRAGANA_LETTER; + } else if (isHalfwidthKatakana(charCode)) { + return CharacterType.HALFWIDTH_KATAKANA_LETTER; + } + return CharacterType.ALPHA_LETTER; +} + +/***/ }), +/* 19 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFHistory = void 0; +exports.isDestArraysEqual = isDestArraysEqual; +exports.isDestHashesEqual = isDestHashesEqual; +var _ui_utils = __webpack_require__(3); +var _event_utils = __webpack_require__(6); +const HASH_CHANGE_TIMEOUT = 1000; +const POSITION_UPDATED_THRESHOLD = 50; +const UPDATE_VIEWAREA_TIMEOUT = 1000; +function getCurrentHash() { + return document.location.hash; +} +class PDFHistory { + constructor({ + linkService, + eventBus + }) { + this.linkService = linkService; + this.eventBus = eventBus; + this._initialized = false; + this._fingerprint = ""; + this.reset(); + this._boundEvents = null; + this.eventBus._on("pagesinit", () => { + this._isPagesLoaded = false; + this.eventBus._on("pagesloaded", evt => { + this._isPagesLoaded = !!evt.pagesCount; + }, { + once: true + }); + }); + } + initialize({ + fingerprint, + resetHistory = false, + updateUrl = false + }) { + if (!fingerprint || typeof fingerprint !== "string") { + console.error('PDFHistory.initialize: The "fingerprint" must be a non-empty string.'); + return; + } + if (this._initialized) { + this.reset(); + } + const reInitialized = this._fingerprint !== "" && this._fingerprint !== fingerprint; + this._fingerprint = fingerprint; + this._updateUrl = updateUrl === true; + this._initialized = true; + this._bindEvents(); + const state = window.history.state; + this._popStateInProgress = false; + this._blockHashChange = 0; + this._currentHash = getCurrentHash(); + this._numPositionUpdates = 0; + this._uid = this._maxUid = 0; + this._destination = null; + this._position = null; + if (!this._isValidState(state, true) || resetHistory) { + const { + hash, + page, + rotation + } = this._parseCurrentHash(true); + if (!hash || reInitialized || resetHistory) { + this._pushOrReplaceState(null, true); + return; + } + this._pushOrReplaceState({ + hash, + page, + rotation + }, true); + return; + } + const destination = state.destination; + this._updateInternalState(destination, state.uid, true); + if (destination.rotation !== undefined) { + this._initialRotation = destination.rotation; + } + if (destination.dest) { + this._initialBookmark = JSON.stringify(destination.dest); + this._destination.page = null; + } else if (destination.hash) { + this._initialBookmark = destination.hash; + } else if (destination.page) { + this._initialBookmark = `page=${destination.page}`; + } + } + reset() { + if (this._initialized) { + this._pageHide(); + this._initialized = false; + this._unbindEvents(); + } + if (this._updateViewareaTimeout) { + clearTimeout(this._updateViewareaTimeout); + this._updateViewareaTimeout = null; + } + this._initialBookmark = null; + this._initialRotation = null; + } + push({ + namedDest = null, + explicitDest, + pageNumber + }) { + if (!this._initialized) { + return; + } + if (namedDest && typeof namedDest !== "string") { + console.error("PDFHistory.push: " + `"${namedDest}" is not a valid namedDest parameter.`); + return; + } else if (!Array.isArray(explicitDest)) { + console.error("PDFHistory.push: " + `"${explicitDest}" is not a valid explicitDest parameter.`); + return; + } else if (!this._isValidPage(pageNumber)) { + if (pageNumber !== null || this._destination) { + console.error("PDFHistory.push: " + `"${pageNumber}" is not a valid pageNumber parameter.`); + return; + } + } + const hash = namedDest || JSON.stringify(explicitDest); + if (!hash) { + return; + } + let forceReplace = false; + if (this._destination && (isDestHashesEqual(this._destination.hash, hash) || isDestArraysEqual(this._destination.dest, explicitDest))) { + if (this._destination.page) { + return; + } + forceReplace = true; + } + if (this._popStateInProgress && !forceReplace) { + return; + } + this._pushOrReplaceState({ + dest: explicitDest, + hash, + page: pageNumber, + rotation: this.linkService.rotation + }, forceReplace); + if (!this._popStateInProgress) { + this._popStateInProgress = true; + Promise.resolve().then(() => { + this._popStateInProgress = false; + }); + } + } + pushPage(pageNumber) { + if (!this._initialized) { + return; + } + if (!this._isValidPage(pageNumber)) { + console.error(`PDFHistory.pushPage: "${pageNumber}" is not a valid page number.`); + return; + } + if (this._destination?.page === pageNumber) { + return; + } + if (this._popStateInProgress) { + return; + } + this._pushOrReplaceState({ + dest: null, + hash: `page=${pageNumber}`, + page: pageNumber, + rotation: this.linkService.rotation + }); + if (!this._popStateInProgress) { + this._popStateInProgress = true; + Promise.resolve().then(() => { + this._popStateInProgress = false; + }); + } + } + pushCurrentPosition() { + if (!this._initialized || this._popStateInProgress) { + return; + } + this._tryPushCurrentPosition(); + } + back() { + if (!this._initialized || this._popStateInProgress) { + return; + } + const state = window.history.state; + if (this._isValidState(state) && state.uid > 0) { + window.history.back(); + } + } + forward() { + if (!this._initialized || this._popStateInProgress) { + return; + } + const state = window.history.state; + if (this._isValidState(state) && state.uid < this._maxUid) { + window.history.forward(); + } + } + get popStateInProgress() { + return this._initialized && (this._popStateInProgress || this._blockHashChange > 0); + } + get initialBookmark() { + return this._initialized ? this._initialBookmark : null; + } + get initialRotation() { + return this._initialized ? this._initialRotation : null; + } + _pushOrReplaceState(destination, forceReplace = false) { + const shouldReplace = forceReplace || !this._destination; + const newState = { + fingerprint: this._fingerprint, + uid: shouldReplace ? this._uid : this._uid + 1, + destination + }; + this._updateInternalState(destination, newState.uid); + let newUrl; + if (this._updateUrl && destination?.hash) { + const baseUrl = document.location.href.split("#")[0]; + if (!baseUrl.startsWith("file://")) { + newUrl = `${baseUrl}#${destination.hash}`; + } + } + if (shouldReplace) { + window.history.replaceState(newState, "", newUrl); + } else { + window.history.pushState(newState, "", newUrl); + } + } + _tryPushCurrentPosition(temporary = false) { + if (!this._position) { + return; + } + let position = this._position; + if (temporary) { + position = Object.assign(Object.create(null), this._position); + position.temporary = true; + } + if (!this._destination) { + this._pushOrReplaceState(position); + return; + } + if (this._destination.temporary) { + this._pushOrReplaceState(position, true); + return; + } + if (this._destination.hash === position.hash) { + return; + } + if (!this._destination.page && (POSITION_UPDATED_THRESHOLD <= 0 || this._numPositionUpdates <= POSITION_UPDATED_THRESHOLD)) { + return; + } + let forceReplace = false; + if (this._destination.page >= position.first && this._destination.page <= position.page) { + if (this._destination.dest !== undefined || !this._destination.first) { + return; + } + forceReplace = true; + } + this._pushOrReplaceState(position, forceReplace); + } + _isValidPage(val) { + return Number.isInteger(val) && val > 0 && val <= this.linkService.pagesCount; + } + _isValidState(state, checkReload = false) { + if (!state) { + return false; + } + if (state.fingerprint !== this._fingerprint) { + if (checkReload) { + if (typeof state.fingerprint !== "string" || state.fingerprint.length !== this._fingerprint.length) { + return false; + } + const [perfEntry] = performance.getEntriesByType("navigation"); + if (perfEntry?.type !== "reload") { + return false; + } + } else { + return false; + } + } + if (!Number.isInteger(state.uid) || state.uid < 0) { + return false; + } + if (state.destination === null || typeof state.destination !== "object") { + return false; + } + return true; + } + _updateInternalState(destination, uid, removeTemporary = false) { + if (this._updateViewareaTimeout) { + clearTimeout(this._updateViewareaTimeout); + this._updateViewareaTimeout = null; + } + if (removeTemporary && destination?.temporary) { + delete destination.temporary; + } + this._destination = destination; + this._uid = uid; + this._maxUid = Math.max(this._maxUid, uid); + this._numPositionUpdates = 0; + } + _parseCurrentHash(checkNameddest = false) { + const hash = unescape(getCurrentHash()).substring(1); + const params = (0, _ui_utils.parseQueryString)(hash); + const nameddest = params.get("nameddest") || ""; + let page = params.get("page") | 0; + if (!this._isValidPage(page) || checkNameddest && nameddest.length > 0) { + page = null; + } + return { + hash, + page, + rotation: this.linkService.rotation + }; + } + _updateViewarea({ + location + }) { + if (this._updateViewareaTimeout) { + clearTimeout(this._updateViewareaTimeout); + this._updateViewareaTimeout = null; + } + this._position = { + hash: location.pdfOpenParams.substring(1), + page: this.linkService.page, + first: location.pageNumber, + rotation: location.rotation + }; + if (this._popStateInProgress) { + return; + } + if (POSITION_UPDATED_THRESHOLD > 0 && this._isPagesLoaded && this._destination && !this._destination.page) { + this._numPositionUpdates++; + } + if (UPDATE_VIEWAREA_TIMEOUT > 0) { + this._updateViewareaTimeout = setTimeout(() => { + if (!this._popStateInProgress) { + this._tryPushCurrentPosition(true); + } + this._updateViewareaTimeout = null; + }, UPDATE_VIEWAREA_TIMEOUT); + } + } + _popState({ + state + }) { + const newHash = getCurrentHash(), + hashChanged = this._currentHash !== newHash; + this._currentHash = newHash; + if (!state) { + this._uid++; + const { + hash, + page, + rotation + } = this._parseCurrentHash(); + this._pushOrReplaceState({ + hash, + page, + rotation + }, true); + return; + } + if (!this._isValidState(state)) { + return; + } + this._popStateInProgress = true; + if (hashChanged) { + this._blockHashChange++; + (0, _event_utils.waitOnEventOrTimeout)({ + target: window, + name: "hashchange", + delay: HASH_CHANGE_TIMEOUT + }).then(() => { + this._blockHashChange--; + }); + } + const destination = state.destination; + this._updateInternalState(destination, state.uid, true); + if ((0, _ui_utils.isValidRotation)(destination.rotation)) { + this.linkService.rotation = destination.rotation; + } + if (destination.dest) { + this.linkService.goToDestination(destination.dest); + } else if (destination.hash) { + this.linkService.setHash(destination.hash); + } else if (destination.page) { + this.linkService.page = destination.page; + } + Promise.resolve().then(() => { + this._popStateInProgress = false; + }); + } + _pageHide() { + if (!this._destination || this._destination.temporary) { + this._tryPushCurrentPosition(); + } + } + _bindEvents() { + if (this._boundEvents) { + return; + } + this._boundEvents = { + updateViewarea: this._updateViewarea.bind(this), + popState: this._popState.bind(this), + pageHide: this._pageHide.bind(this) + }; + this.eventBus._on("updateviewarea", this._boundEvents.updateViewarea); + window.addEventListener("popstate", this._boundEvents.popState); + window.addEventListener("pagehide", this._boundEvents.pageHide); + } + _unbindEvents() { + if (!this._boundEvents) { + return; + } + this.eventBus._off("updateviewarea", this._boundEvents.updateViewarea); + window.removeEventListener("popstate", this._boundEvents.popState); + window.removeEventListener("pagehide", this._boundEvents.pageHide); + this._boundEvents = null; + } +} +exports.PDFHistory = PDFHistory; +function isDestHashesEqual(destHash, pushHash) { + if (typeof destHash !== "string" || typeof pushHash !== "string") { + return false; + } + if (destHash === pushHash) { + return true; + } + const nameddest = (0, _ui_utils.parseQueryString)(destHash).get("nameddest"); + if (nameddest === pushHash) { + return true; + } + return false; +} +function isDestArraysEqual(firstDest, secondDest) { + function isEntryEqual(first, second) { + if (typeof first !== typeof second) { + return false; + } + if (Array.isArray(first) || Array.isArray(second)) { + return false; + } + if (first !== null && typeof first === "object" && second !== null) { + if (Object.keys(first).length !== Object.keys(second).length) { + return false; + } + for (const key in first) { + if (!isEntryEqual(first[key], second[key])) { + return false; + } + } + return true; + } + return first === second || Number.isNaN(first) && Number.isNaN(second); + } + if (!(Array.isArray(firstDest) && Array.isArray(secondDest))) { + return false; + } + if (firstDest.length !== secondDest.length) { + return false; + } + for (let i = 0, ii = firstDest.length; i < ii; i++) { + if (!isEntryEqual(firstDest[i], secondDest[i])) { + return false; + } + } + return true; +} + +/***/ }), +/* 20 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFLayerViewer = void 0; +var _base_tree_viewer = __webpack_require__(12); +class PDFLayerViewer extends _base_tree_viewer.BaseTreeViewer { + constructor(options) { + super(options); + this.l10n = options.l10n; + this.eventBus._on("optionalcontentconfigchanged", evt => { + this.#updateLayers(evt.promise); + }); + this.eventBus._on("resetlayers", () => { + this.#updateLayers(); + }); + this.eventBus._on("togglelayerstree", this._toggleAllTreeItems.bind(this)); + } + reset() { + super.reset(); + this._optionalContentConfig = null; + this._optionalContentHash = null; + } + _dispatchEvent(layersCount) { + this.eventBus.dispatch("layersloaded", { + source: this, + layersCount + }); + } + _bindLink(element, { + groupId, + input + }) { + const setVisibility = () => { + this._optionalContentConfig.setVisibility(groupId, input.checked); + this._optionalContentHash = this._optionalContentConfig.getHash(); + this.eventBus.dispatch("optionalcontentconfig", { + source: this, + promise: Promise.resolve(this._optionalContentConfig) + }); + }; + element.onclick = evt => { + if (evt.target === input) { + setVisibility(); + return true; + } else if (evt.target !== element) { + return true; + } + input.checked = !input.checked; + setVisibility(); + return false; + }; + } + async _setNestedName(element, { + name = null + }) { + if (typeof name === "string") { + element.textContent = this._normalizeTextContent(name); + return; + } + element.textContent = await this.l10n.get("additional_layers"); + element.style.fontStyle = "italic"; + } + _addToggleButton(div, { + name = null + }) { + super._addToggleButton(div, name === null); + } + _toggleAllTreeItems() { + if (!this._optionalContentConfig) { + return; + } + super._toggleAllTreeItems(); + } + render({ + optionalContentConfig, + pdfDocument + }) { + if (this._optionalContentConfig) { + this.reset(); + } + this._optionalContentConfig = optionalContentConfig || null; + this._pdfDocument = pdfDocument || null; + const groups = optionalContentConfig?.getOrder(); + if (!groups) { + this._dispatchEvent(0); + return; + } + this._optionalContentHash = optionalContentConfig.getHash(); + const fragment = document.createDocumentFragment(), + queue = [{ + parent: fragment, + groups + }]; + let layersCount = 0, + hasAnyNesting = false; + while (queue.length > 0) { + const levelData = queue.shift(); + for (const groupId of levelData.groups) { + const div = document.createElement("div"); + div.className = "treeItem"; + const element = document.createElement("a"); + div.append(element); + if (typeof groupId === "object") { + hasAnyNesting = true; + this._addToggleButton(div, groupId); + this._setNestedName(element, groupId); + const itemsDiv = document.createElement("div"); + itemsDiv.className = "treeItems"; + div.append(itemsDiv); + queue.push({ + parent: itemsDiv, + groups: groupId.order + }); + } else { + const group = optionalContentConfig.getGroup(groupId); + const input = document.createElement("input"); + this._bindLink(element, { + groupId, + input + }); + input.type = "checkbox"; + input.checked = group.visible; + const label = document.createElement("label"); + label.textContent = this._normalizeTextContent(group.name); + label.append(input); + element.append(label); + layersCount++; + } + levelData.parent.append(div); + } + } + this._finishRendering(fragment, layersCount, hasAnyNesting); + } + async #updateLayers(promise = null) { + if (!this._optionalContentConfig) { + return; + } + const pdfDocument = this._pdfDocument; + const optionalContentConfig = await (promise || pdfDocument.getOptionalContentConfig()); + if (pdfDocument !== this._pdfDocument) { + return; + } + if (promise) { + if (optionalContentConfig.getHash() === this._optionalContentHash) { + return; + } + } else { + this.eventBus.dispatch("optionalcontentconfig", { + source: this, + promise: Promise.resolve(optionalContentConfig) + }); + } + this.render({ + optionalContentConfig, + pdfDocument: this._pdfDocument + }); + } +} +exports.PDFLayerViewer = PDFLayerViewer; + +/***/ }), +/* 21 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFOutlineViewer = void 0; +var _base_tree_viewer = __webpack_require__(12); +var _pdfjsLib = __webpack_require__(4); +var _ui_utils = __webpack_require__(3); +class PDFOutlineViewer extends _base_tree_viewer.BaseTreeViewer { + constructor(options) { + super(options); + this.linkService = options.linkService; + this.downloadManager = options.downloadManager; + this.eventBus._on("toggleoutlinetree", this._toggleAllTreeItems.bind(this)); + this.eventBus._on("currentoutlineitem", this._currentOutlineItem.bind(this)); + this.eventBus._on("pagechanging", evt => { + this._currentPageNumber = evt.pageNumber; + }); + this.eventBus._on("pagesloaded", evt => { + this._isPagesLoaded = !!evt.pagesCount; + if (this._currentOutlineItemCapability && !this._currentOutlineItemCapability.settled) { + this._currentOutlineItemCapability.resolve(this._isPagesLoaded); + } + }); + this.eventBus._on("sidebarviewchanged", evt => { + this._sidebarView = evt.view; + }); + } + reset() { + super.reset(); + this._outline = null; + this._pageNumberToDestHashCapability = null; + this._currentPageNumber = 1; + this._isPagesLoaded = null; + if (this._currentOutlineItemCapability && !this._currentOutlineItemCapability.settled) { + this._currentOutlineItemCapability.resolve(false); + } + this._currentOutlineItemCapability = null; + } + _dispatchEvent(outlineCount) { + this._currentOutlineItemCapability = (0, _pdfjsLib.createPromiseCapability)(); + if (outlineCount === 0 || this._pdfDocument?.loadingParams.disableAutoFetch) { + this._currentOutlineItemCapability.resolve(false); + } else if (this._isPagesLoaded !== null) { + this._currentOutlineItemCapability.resolve(this._isPagesLoaded); + } + this.eventBus.dispatch("outlineloaded", { + source: this, + outlineCount, + currentOutlineItemPromise: this._currentOutlineItemCapability.promise + }); + } + _bindLink(element, { + url, + newWindow, + action, + attachment, + dest, + setOCGState + }) { + const { + linkService + } = this; + if (url) { + linkService.addLinkAttributes(element, url, newWindow); + return; + } + if (action) { + element.href = linkService.getAnchorUrl(""); + element.onclick = () => { + linkService.executeNamedAction(action); + return false; + }; + return; + } + if (attachment) { + element.href = linkService.getAnchorUrl(""); + element.onclick = () => { + this.downloadManager.openOrDownloadData(element, attachment.content, attachment.filename); + return false; + }; + return; + } + if (setOCGState) { + element.href = linkService.getAnchorUrl(""); + element.onclick = () => { + linkService.executeSetOCGState(setOCGState); + return false; + }; + return; + } + element.href = linkService.getDestinationHash(dest); + element.onclick = evt => { + this._updateCurrentTreeItem(evt.target.parentNode); + if (dest) { + linkService.goToDestination(dest); + } + return false; + }; + } + _setStyles(element, { + bold, + italic + }) { + if (bold) { + element.style.fontWeight = "bold"; + } + if (italic) { + element.style.fontStyle = "italic"; + } + } + _addToggleButton(div, { + count, + items + }) { + let hidden = false; + if (count < 0) { + let totalCount = items.length; + if (totalCount > 0) { + const queue = [...items]; + while (queue.length > 0) { + const { + count: nestedCount, + items: nestedItems + } = queue.shift(); + if (nestedCount > 0 && nestedItems.length > 0) { + totalCount += nestedItems.length; + queue.push(...nestedItems); + } + } + } + if (Math.abs(count) === totalCount) { + hidden = true; + } + } + super._addToggleButton(div, hidden); + } + _toggleAllTreeItems() { + if (!this._outline) { + return; + } + super._toggleAllTreeItems(); + } + render({ + outline, + pdfDocument + }) { + if (this._outline) { + this.reset(); + } + this._outline = outline || null; + this._pdfDocument = pdfDocument || null; + if (!outline) { + this._dispatchEvent(0); + return; + } + const fragment = document.createDocumentFragment(); + const queue = [{ + parent: fragment, + items: outline + }]; + let outlineCount = 0, + hasAnyNesting = false; + while (queue.length > 0) { + const levelData = queue.shift(); + for (const item of levelData.items) { + const div = document.createElement("div"); + div.className = "treeItem"; + const element = document.createElement("a"); + this._bindLink(element, item); + this._setStyles(element, item); + element.textContent = this._normalizeTextContent(item.title); + div.append(element); + if (item.items.length > 0) { + hasAnyNesting = true; + this._addToggleButton(div, item); + const itemsDiv = document.createElement("div"); + itemsDiv.className = "treeItems"; + div.append(itemsDiv); + queue.push({ + parent: itemsDiv, + items: item.items + }); + } + levelData.parent.append(div); + outlineCount++; + } + } + this._finishRendering(fragment, outlineCount, hasAnyNesting); + } + async _currentOutlineItem() { + if (!this._isPagesLoaded) { + throw new Error("_currentOutlineItem: All pages have not been loaded."); + } + if (!this._outline || !this._pdfDocument) { + return; + } + const pageNumberToDestHash = await this._getPageNumberToDestHash(this._pdfDocument); + if (!pageNumberToDestHash) { + return; + } + this._updateCurrentTreeItem(null); + if (this._sidebarView !== _ui_utils.SidebarView.OUTLINE) { + return; + } + for (let i = this._currentPageNumber; i > 0; i--) { + const destHash = pageNumberToDestHash.get(i); + if (!destHash) { + continue; + } + const linkElement = this.container.querySelector(`a[href="${destHash}"]`); + if (!linkElement) { + continue; + } + this._scrollToCurrentTreeItem(linkElement.parentNode); + break; + } + } + async _getPageNumberToDestHash(pdfDocument) { + if (this._pageNumberToDestHashCapability) { + return this._pageNumberToDestHashCapability.promise; + } + this._pageNumberToDestHashCapability = (0, _pdfjsLib.createPromiseCapability)(); + const pageNumberToDestHash = new Map(), + pageNumberNesting = new Map(); + const queue = [{ + nesting: 0, + items: this._outline + }]; + while (queue.length > 0) { + const levelData = queue.shift(), + currentNesting = levelData.nesting; + for (const { + dest, + items + } of levelData.items) { + let explicitDest, pageNumber; + if (typeof dest === "string") { + explicitDest = await pdfDocument.getDestination(dest); + if (pdfDocument !== this._pdfDocument) { + return null; + } + } else { + explicitDest = dest; + } + if (Array.isArray(explicitDest)) { + const [destRef] = explicitDest; + if (typeof destRef === "object" && destRef !== null) { + pageNumber = this.linkService._cachedPageNumber(destRef); + if (!pageNumber) { + try { + pageNumber = (await pdfDocument.getPageIndex(destRef)) + 1; + if (pdfDocument !== this._pdfDocument) { + return null; + } + this.linkService.cachePageRef(pageNumber, destRef); + } catch (ex) {} + } + } else if (Number.isInteger(destRef)) { + pageNumber = destRef + 1; + } + if (Number.isInteger(pageNumber) && (!pageNumberToDestHash.has(pageNumber) || currentNesting > pageNumberNesting.get(pageNumber))) { + const destHash = this.linkService.getDestinationHash(dest); + pageNumberToDestHash.set(pageNumber, destHash); + pageNumberNesting.set(pageNumber, currentNesting); + } + } + if (items.length > 0) { + queue.push({ + nesting: currentNesting + 1, + items + }); + } + } + } + this._pageNumberToDestHashCapability.resolve(pageNumberToDestHash.size > 0 ? pageNumberToDestHash : null); + return this._pageNumberToDestHashCapability.promise; + } +} +exports.PDFOutlineViewer = PDFOutlineViewer; + +/***/ }), +/* 22 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFPresentationMode = void 0; +var _ui_utils = __webpack_require__(3); +var _pdfjsLib = __webpack_require__(4); +const DELAY_BEFORE_HIDING_CONTROLS = 3000; +const ACTIVE_SELECTOR = "pdfPresentationMode"; +const CONTROLS_SELECTOR = "pdfPresentationModeControls"; +const MOUSE_SCROLL_COOLDOWN_TIME = 50; +const PAGE_SWITCH_THRESHOLD = 0.1; +const SWIPE_MIN_DISTANCE_THRESHOLD = 50; +const SWIPE_ANGLE_THRESHOLD = Math.PI / 6; +class PDFPresentationMode { + #state = _ui_utils.PresentationModeState.UNKNOWN; + #args = null; + constructor({ + container, + pdfViewer, + eventBus + }) { + this.container = container; + this.pdfViewer = pdfViewer; + this.eventBus = eventBus; + this.contextMenuOpen = false; + this.mouseScrollTimeStamp = 0; + this.mouseScrollDelta = 0; + this.touchSwipeState = null; + } + async request() { + const { + container, + pdfViewer + } = this; + if (this.active || !pdfViewer.pagesCount || !container.requestFullscreen) { + return false; + } + this.#addFullscreenChangeListeners(); + this.#notifyStateChange(_ui_utils.PresentationModeState.CHANGING); + const promise = container.requestFullscreen(); + this.#args = { + pageNumber: pdfViewer.currentPageNumber, + scaleValue: pdfViewer.currentScaleValue, + scrollMode: pdfViewer.scrollMode, + spreadMode: null, + annotationEditorMode: null + }; + if (pdfViewer.spreadMode !== _ui_utils.SpreadMode.NONE && !(pdfViewer.pageViewsReady && pdfViewer.hasEqualPageSizes)) { + console.warn("Ignoring Spread modes when entering PresentationMode, " + "since the document may contain varying page sizes."); + this.#args.spreadMode = pdfViewer.spreadMode; + } + if (pdfViewer.annotationEditorMode !== _pdfjsLib.AnnotationEditorType.DISABLE) { + this.#args.annotationEditorMode = pdfViewer.annotationEditorMode; + } + try { + await promise; + pdfViewer.focus(); + return true; + } catch (reason) { + this.#removeFullscreenChangeListeners(); + this.#notifyStateChange(_ui_utils.PresentationModeState.NORMAL); + } + return false; + } + get active() { + return this.#state === _ui_utils.PresentationModeState.CHANGING || this.#state === _ui_utils.PresentationModeState.FULLSCREEN; + } + #mouseWheel(evt) { + if (!this.active) { + return; + } + evt.preventDefault(); + const delta = (0, _ui_utils.normalizeWheelEventDelta)(evt); + const currentTime = Date.now(); + const storedTime = this.mouseScrollTimeStamp; + if (currentTime > storedTime && currentTime - storedTime < MOUSE_SCROLL_COOLDOWN_TIME) { + return; + } + if (this.mouseScrollDelta > 0 && delta < 0 || this.mouseScrollDelta < 0 && delta > 0) { + this.#resetMouseScrollState(); + } + this.mouseScrollDelta += delta; + if (Math.abs(this.mouseScrollDelta) >= PAGE_SWITCH_THRESHOLD) { + const totalDelta = this.mouseScrollDelta; + this.#resetMouseScrollState(); + const success = totalDelta > 0 ? this.pdfViewer.previousPage() : this.pdfViewer.nextPage(); + if (success) { + this.mouseScrollTimeStamp = currentTime; + } + } + } + #notifyStateChange(state) { + this.#state = state; + this.eventBus.dispatch("presentationmodechanged", { + source: this, + state + }); + } + #enter() { + this.#notifyStateChange(_ui_utils.PresentationModeState.FULLSCREEN); + this.container.classList.add(ACTIVE_SELECTOR); + setTimeout(() => { + this.pdfViewer.scrollMode = _ui_utils.ScrollMode.PAGE; + if (this.#args.spreadMode !== null) { + this.pdfViewer.spreadMode = _ui_utils.SpreadMode.NONE; + } + this.pdfViewer.currentPageNumber = this.#args.pageNumber; + this.pdfViewer.currentScaleValue = "page-fit"; + if (this.#args.annotationEditorMode !== null) { + this.pdfViewer.annotationEditorMode = _pdfjsLib.AnnotationEditorType.NONE; + } + }, 0); + this.#addWindowListeners(); + this.#showControls(); + this.contextMenuOpen = false; + window.getSelection().removeAllRanges(); + } + #exit() { + const pageNumber = this.pdfViewer.currentPageNumber; + this.container.classList.remove(ACTIVE_SELECTOR); + setTimeout(() => { + this.#removeFullscreenChangeListeners(); + this.#notifyStateChange(_ui_utils.PresentationModeState.NORMAL); + this.pdfViewer.scrollMode = this.#args.scrollMode; + if (this.#args.spreadMode !== null) { + this.pdfViewer.spreadMode = this.#args.spreadMode; + } + this.pdfViewer.currentScaleValue = this.#args.scaleValue; + this.pdfViewer.currentPageNumber = pageNumber; + if (this.#args.annotationEditorMode !== null) { + this.pdfViewer.annotationEditorMode = this.#args.annotationEditorMode; + } + this.#args = null; + }, 0); + this.#removeWindowListeners(); + this.#hideControls(); + this.#resetMouseScrollState(); + this.contextMenuOpen = false; + } + #mouseDown(evt) { + if (this.contextMenuOpen) { + this.contextMenuOpen = false; + evt.preventDefault(); + return; + } + if (evt.button !== 0) { + return; + } + if (evt.target.href && evt.target.parentNode?.hasAttribute("data-internal-link")) { + return; + } + evt.preventDefault(); + if (evt.shiftKey) { + this.pdfViewer.previousPage(); + } else { + this.pdfViewer.nextPage(); + } + } + #contextMenu() { + this.contextMenuOpen = true; + } + #showControls() { + if (this.controlsTimeout) { + clearTimeout(this.controlsTimeout); + } else { + this.container.classList.add(CONTROLS_SELECTOR); + } + this.controlsTimeout = setTimeout(() => { + this.container.classList.remove(CONTROLS_SELECTOR); + delete this.controlsTimeout; + }, DELAY_BEFORE_HIDING_CONTROLS); + } + #hideControls() { + if (!this.controlsTimeout) { + return; + } + clearTimeout(this.controlsTimeout); + this.container.classList.remove(CONTROLS_SELECTOR); + delete this.controlsTimeout; + } + #resetMouseScrollState() { + this.mouseScrollTimeStamp = 0; + this.mouseScrollDelta = 0; + } + #touchSwipe(evt) { + if (!this.active) { + return; + } + if (evt.touches.length > 1) { + this.touchSwipeState = null; + return; + } + switch (evt.type) { + case "touchstart": + this.touchSwipeState = { + startX: evt.touches[0].pageX, + startY: evt.touches[0].pageY, + endX: evt.touches[0].pageX, + endY: evt.touches[0].pageY + }; + break; + case "touchmove": + if (this.touchSwipeState === null) { + return; + } + this.touchSwipeState.endX = evt.touches[0].pageX; + this.touchSwipeState.endY = evt.touches[0].pageY; + evt.preventDefault(); + break; + case "touchend": + if (this.touchSwipeState === null) { + return; + } + let delta = 0; + const dx = this.touchSwipeState.endX - this.touchSwipeState.startX; + const dy = this.touchSwipeState.endY - this.touchSwipeState.startY; + const absAngle = Math.abs(Math.atan2(dy, dx)); + if (Math.abs(dx) > SWIPE_MIN_DISTANCE_THRESHOLD && (absAngle <= SWIPE_ANGLE_THRESHOLD || absAngle >= Math.PI - SWIPE_ANGLE_THRESHOLD)) { + delta = dx; + } else if (Math.abs(dy) > SWIPE_MIN_DISTANCE_THRESHOLD && Math.abs(absAngle - Math.PI / 2) <= SWIPE_ANGLE_THRESHOLD) { + delta = dy; + } + if (delta > 0) { + this.pdfViewer.previousPage(); + } else if (delta < 0) { + this.pdfViewer.nextPage(); + } + break; + } + } + #addWindowListeners() { + this.showControlsBind = this.#showControls.bind(this); + this.mouseDownBind = this.#mouseDown.bind(this); + this.mouseWheelBind = this.#mouseWheel.bind(this); + this.resetMouseScrollStateBind = this.#resetMouseScrollState.bind(this); + this.contextMenuBind = this.#contextMenu.bind(this); + this.touchSwipeBind = this.#touchSwipe.bind(this); + window.addEventListener("mousemove", this.showControlsBind); + window.addEventListener("mousedown", this.mouseDownBind); + window.addEventListener("wheel", this.mouseWheelBind, { + passive: false + }); + window.addEventListener("keydown", this.resetMouseScrollStateBind); + window.addEventListener("contextmenu", this.contextMenuBind); + window.addEventListener("touchstart", this.touchSwipeBind); + window.addEventListener("touchmove", this.touchSwipeBind); + window.addEventListener("touchend", this.touchSwipeBind); + } + #removeWindowListeners() { + window.removeEventListener("mousemove", this.showControlsBind); + window.removeEventListener("mousedown", this.mouseDownBind); + window.removeEventListener("wheel", this.mouseWheelBind, { + passive: false + }); + window.removeEventListener("keydown", this.resetMouseScrollStateBind); + window.removeEventListener("contextmenu", this.contextMenuBind); + window.removeEventListener("touchstart", this.touchSwipeBind); + window.removeEventListener("touchmove", this.touchSwipeBind); + window.removeEventListener("touchend", this.touchSwipeBind); + delete this.showControlsBind; + delete this.mouseDownBind; + delete this.mouseWheelBind; + delete this.resetMouseScrollStateBind; + delete this.contextMenuBind; + delete this.touchSwipeBind; + } + #fullscreenChange() { + if (document.fullscreenElement) { + this.#enter(); + } else { + this.#exit(); + } + } + #addFullscreenChangeListeners() { + this.fullscreenChangeBind = this.#fullscreenChange.bind(this); + window.addEventListener("fullscreenchange", this.fullscreenChangeBind); + } + #removeFullscreenChangeListeners() { + window.removeEventListener("fullscreenchange", this.fullscreenChangeBind); + delete this.fullscreenChangeBind; + } +} +exports.PDFPresentationMode = PDFPresentationMode; + +/***/ }), +/* 23 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFRenderingQueue = void 0; +var _pdfjsLib = __webpack_require__(4); +var _ui_utils = __webpack_require__(3); +const CLEANUP_TIMEOUT = 30000; +class PDFRenderingQueue { + constructor() { + this.pdfViewer = null; + this.pdfThumbnailViewer = null; + this.onIdle = null; + this.highestPriorityPage = null; + this.idleTimeout = null; + this.printing = false; + this.isThumbnailViewEnabled = false; + } + setViewer(pdfViewer) { + this.pdfViewer = pdfViewer; + } + setThumbnailViewer(pdfThumbnailViewer) { + this.pdfThumbnailViewer = pdfThumbnailViewer; + } + isHighestPriority(view) { + return this.highestPriorityPage === view.renderingId; + } + hasViewer() { + return !!this.pdfViewer; + } + renderHighestPriority(currentlyVisiblePages) { + if (this.idleTimeout) { + clearTimeout(this.idleTimeout); + this.idleTimeout = null; + } + if (this.pdfViewer.forceRendering(currentlyVisiblePages)) { + return; + } + if (this.isThumbnailViewEnabled && this.pdfThumbnailViewer?.forceRendering()) { + return; + } + if (this.printing) { + return; + } + if (this.onIdle) { + this.idleTimeout = setTimeout(this.onIdle.bind(this), CLEANUP_TIMEOUT); + } + } + getHighestPriority(visible, views, scrolledDown, preRenderExtra = false) { + const visibleViews = visible.views, + numVisible = visibleViews.length; + if (numVisible === 0) { + return null; + } + for (let i = 0; i < numVisible; i++) { + const view = visibleViews[i].view; + if (!this.isViewFinished(view)) { + return view; + } + } + const firstId = visible.first.id, + lastId = visible.last.id; + if (lastId - firstId + 1 > numVisible) { + const visibleIds = visible.ids; + for (let i = 1, ii = lastId - firstId; i < ii; i++) { + const holeId = scrolledDown ? firstId + i : lastId - i; + if (visibleIds.has(holeId)) { + continue; + } + const holeView = views[holeId - 1]; + if (!this.isViewFinished(holeView)) { + return holeView; + } + } + } + let preRenderIndex = scrolledDown ? lastId : firstId - 2; + let preRenderView = views[preRenderIndex]; + if (preRenderView && !this.isViewFinished(preRenderView)) { + return preRenderView; + } + if (preRenderExtra) { + preRenderIndex += scrolledDown ? 1 : -1; + preRenderView = views[preRenderIndex]; + if (preRenderView && !this.isViewFinished(preRenderView)) { + return preRenderView; + } + } + return null; + } + isViewFinished(view) { + return view.renderingState === _ui_utils.RenderingStates.FINISHED; + } + renderView(view) { + switch (view.renderingState) { + case _ui_utils.RenderingStates.FINISHED: + return false; + case _ui_utils.RenderingStates.PAUSED: + this.highestPriorityPage = view.renderingId; + view.resume(); + break; + case _ui_utils.RenderingStates.RUNNING: + this.highestPriorityPage = view.renderingId; + break; + case _ui_utils.RenderingStates.INITIAL: + this.highestPriorityPage = view.renderingId; + view.draw().finally(() => { + this.renderHighestPriority(); + }).catch(reason => { + if (reason instanceof _pdfjsLib.RenderingCancelledException) { + return; + } + console.error(`renderView: "${reason}"`); + }); + break; + } + return true; + } +} +exports.PDFRenderingQueue = PDFRenderingQueue; + +/***/ }), +/* 24 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFScriptingManager = void 0; +var _ui_utils = __webpack_require__(3); +var _pdfjsLib = __webpack_require__(4); +class PDFScriptingManager { + constructor({ + eventBus, + sandboxBundleSrc = null, + scriptingFactory = null, + docPropertiesLookup = null + }) { + this._pdfDocument = null; + this._pdfViewer = null; + this._closeCapability = null; + this._destroyCapability = null; + this._scripting = null; + this._ready = false; + this._eventBus = eventBus; + this._sandboxBundleSrc = sandboxBundleSrc; + this._scriptingFactory = scriptingFactory; + this._docPropertiesLookup = docPropertiesLookup; + } + setViewer(pdfViewer) { + this._pdfViewer = pdfViewer; + } + async setDocument(pdfDocument) { + if (this._pdfDocument) { + await this._destroyScripting(); + } + this._pdfDocument = pdfDocument; + if (!pdfDocument) { + return; + } + const [objects, calculationOrder, docActions] = await Promise.all([pdfDocument.getFieldObjects(), pdfDocument.getCalculationOrderIds(), pdfDocument.getJSActions()]); + if (!objects && !docActions) { + await this._destroyScripting(); + return; + } + if (pdfDocument !== this._pdfDocument) { + return; + } + try { + this._scripting = this._createScripting(); + } catch (error) { + console.error(`PDFScriptingManager.setDocument: "${error?.message}".`); + await this._destroyScripting(); + return; + } + this._internalEvents.set("updatefromsandbox", event => { + if (event?.source !== window) { + return; + } + this._updateFromSandbox(event.detail); + }); + this._internalEvents.set("dispatcheventinsandbox", event => { + this._scripting?.dispatchEventInSandbox(event.detail); + }); + this._internalEvents.set("pagechanging", ({ + pageNumber, + previous + }) => { + if (pageNumber === previous) { + return; + } + this._dispatchPageClose(previous); + this._dispatchPageOpen(pageNumber); + }); + this._internalEvents.set("pagerendered", ({ + pageNumber + }) => { + if (!this._pageOpenPending.has(pageNumber)) { + return; + } + if (pageNumber !== this._pdfViewer.currentPageNumber) { + return; + } + this._dispatchPageOpen(pageNumber); + }); + this._internalEvents.set("pagesdestroy", async event => { + await this._dispatchPageClose(this._pdfViewer.currentPageNumber); + await this._scripting?.dispatchEventInSandbox({ + id: "doc", + name: "WillClose" + }); + this._closeCapability?.resolve(); + }); + for (const [name, listener] of this._internalEvents) { + this._eventBus._on(name, listener); + } + try { + const docProperties = await this._getDocProperties(); + if (pdfDocument !== this._pdfDocument) { + return; + } + await this._scripting.createSandbox({ + objects, + calculationOrder, + appInfo: { + platform: navigator.platform, + language: navigator.language + }, + docInfo: { + ...docProperties, + actions: docActions + } + }); + this._eventBus.dispatch("sandboxcreated", { + source: this + }); + } catch (error) { + console.error(`PDFScriptingManager.setDocument: "${error?.message}".`); + await this._destroyScripting(); + return; + } + await this._scripting?.dispatchEventInSandbox({ + id: "doc", + name: "Open" + }); + await this._dispatchPageOpen(this._pdfViewer.currentPageNumber, true); + Promise.resolve().then(() => { + if (pdfDocument === this._pdfDocument) { + this._ready = true; + } + }); + } + async dispatchWillSave(detail) { + return this._scripting?.dispatchEventInSandbox({ + id: "doc", + name: "WillSave" + }); + } + async dispatchDidSave(detail) { + return this._scripting?.dispatchEventInSandbox({ + id: "doc", + name: "DidSave" + }); + } + async dispatchWillPrint(detail) { + return this._scripting?.dispatchEventInSandbox({ + id: "doc", + name: "WillPrint" + }); + } + async dispatchDidPrint(detail) { + return this._scripting?.dispatchEventInSandbox({ + id: "doc", + name: "DidPrint" + }); + } + get destroyPromise() { + return this._destroyCapability?.promise || null; + } + get ready() { + return this._ready; + } + get _internalEvents() { + return (0, _pdfjsLib.shadow)(this, "_internalEvents", new Map()); + } + get _pageOpenPending() { + return (0, _pdfjsLib.shadow)(this, "_pageOpenPending", new Set()); + } + get _visitedPages() { + return (0, _pdfjsLib.shadow)(this, "_visitedPages", new Map()); + } + async _updateFromSandbox(detail) { + const isInPresentationMode = this._pdfViewer.isInPresentationMode || this._pdfViewer.isChangingPresentationMode; + const { + id, + siblings, + command, + value + } = detail; + if (!id) { + switch (command) { + case "clear": + console.clear(); + break; + case "error": + console.error(value); + break; + case "layout": + { + if (isInPresentationMode) { + return; + } + const modes = (0, _ui_utils.apiPageLayoutToViewerModes)(value); + this._pdfViewer.spreadMode = modes.spreadMode; + break; + } + case "page-num": + this._pdfViewer.currentPageNumber = value + 1; + break; + case "print": + await this._pdfViewer.pagesPromise; + this._eventBus.dispatch("print", { + source: this + }); + break; + case "println": + console.log(value); + break; + case "zoom": + if (isInPresentationMode) { + return; + } + this._pdfViewer.currentScaleValue = value; + break; + case "SaveAs": + this._eventBus.dispatch("download", { + source: this + }); + break; + case "FirstPage": + this._pdfViewer.currentPageNumber = 1; + break; + case "LastPage": + this._pdfViewer.currentPageNumber = this._pdfViewer.pagesCount; + break; + case "NextPage": + this._pdfViewer.nextPage(); + break; + case "PrevPage": + this._pdfViewer.previousPage(); + break; + case "ZoomViewIn": + if (isInPresentationMode) { + return; + } + this._pdfViewer.increaseScale(); + break; + case "ZoomViewOut": + if (isInPresentationMode) { + return; + } + this._pdfViewer.decreaseScale(); + break; + } + return; + } + if (isInPresentationMode) { + if (detail.focus) { + return; + } + } + delete detail.id; + delete detail.siblings; + const ids = siblings ? [id, ...siblings] : [id]; + for (const elementId of ids) { + const element = document.querySelector(`[data-element-id="${elementId}"]`); + if (element) { + element.dispatchEvent(new CustomEvent("updatefromsandbox", { + detail + })); + } else { + this._pdfDocument?.annotationStorage.setValue(elementId, detail); + } + } + } + async _dispatchPageOpen(pageNumber, initialize = false) { + const pdfDocument = this._pdfDocument, + visitedPages = this._visitedPages; + if (initialize) { + this._closeCapability = (0, _pdfjsLib.createPromiseCapability)(); + } + if (!this._closeCapability) { + return; + } + const pageView = this._pdfViewer.getPageView(pageNumber - 1); + if (pageView?.renderingState !== _ui_utils.RenderingStates.FINISHED) { + this._pageOpenPending.add(pageNumber); + return; + } + this._pageOpenPending.delete(pageNumber); + const actionsPromise = (async () => { + const actions = await (!visitedPages.has(pageNumber) ? pageView.pdfPage?.getJSActions() : null); + if (pdfDocument !== this._pdfDocument) { + return; + } + await this._scripting?.dispatchEventInSandbox({ + id: "page", + name: "PageOpen", + pageNumber, + actions + }); + })(); + visitedPages.set(pageNumber, actionsPromise); + } + async _dispatchPageClose(pageNumber) { + const pdfDocument = this._pdfDocument, + visitedPages = this._visitedPages; + if (!this._closeCapability) { + return; + } + if (this._pageOpenPending.has(pageNumber)) { + return; + } + const actionsPromise = visitedPages.get(pageNumber); + if (!actionsPromise) { + return; + } + visitedPages.set(pageNumber, null); + await actionsPromise; + if (pdfDocument !== this._pdfDocument) { + return; + } + await this._scripting?.dispatchEventInSandbox({ + id: "page", + name: "PageClose", + pageNumber + }); + } + async _getDocProperties() { + if (this._docPropertiesLookup) { + return this._docPropertiesLookup(this._pdfDocument); + } + throw new Error("_getDocProperties: Unable to lookup properties."); + } + _createScripting() { + this._destroyCapability = (0, _pdfjsLib.createPromiseCapability)(); + if (this._scripting) { + throw new Error("_createScripting: Scripting already exists."); + } + if (this._scriptingFactory) { + return this._scriptingFactory.createScripting({ + sandboxBundleSrc: this._sandboxBundleSrc + }); + } + throw new Error("_createScripting: Cannot create scripting."); + } + async _destroyScripting() { + if (!this._scripting) { + this._pdfDocument = null; + this._destroyCapability?.resolve(); + return; + } + if (this._closeCapability) { + await Promise.race([this._closeCapability.promise, new Promise(resolve => { + setTimeout(resolve, 1000); + })]).catch(reason => {}); + this._closeCapability = null; + } + this._pdfDocument = null; + try { + await this._scripting.destroySandbox(); + } catch (ex) {} + for (const [name, listener] of this._internalEvents) { + this._eventBus._off(name, listener); + } + this._internalEvents.clear(); + this._pageOpenPending.clear(); + this._visitedPages.clear(); + this._scripting = null; + this._ready = false; + this._destroyCapability?.resolve(); + } +} +exports.PDFScriptingManager = PDFScriptingManager; + +/***/ }), +/* 25 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFSidebar = void 0; +var _ui_utils = __webpack_require__(3); +const UI_NOTIFICATION_CLASS = "pdfSidebarNotification"; +class PDFSidebar { + constructor({ + elements, + pdfViewer, + pdfThumbnailViewer, + eventBus, + l10n + }) { + this.isOpen = false; + this.active = _ui_utils.SidebarView.THUMBS; + this.isInitialViewSet = false; + this.isInitialEventDispatched = false; + this.onToggled = null; + this.pdfViewer = pdfViewer; + this.pdfThumbnailViewer = pdfThumbnailViewer; + this.outerContainer = elements.outerContainer; + this.sidebarContainer = elements.sidebarContainer; + this.toggleButton = elements.toggleButton; + this.thumbnailButton = elements.thumbnailButton; + this.outlineButton = elements.outlineButton; + this.attachmentsButton = elements.attachmentsButton; + this.layersButton = elements.layersButton; + this.thumbnailView = elements.thumbnailView; + this.outlineView = elements.outlineView; + this.attachmentsView = elements.attachmentsView; + this.layersView = elements.layersView; + this._outlineOptionsContainer = elements.outlineOptionsContainer; + this._currentOutlineItemButton = elements.currentOutlineItemButton; + this.eventBus = eventBus; + this.l10n = l10n; + this.#addEventListeners(); + } + reset() { + this.isInitialViewSet = false; + this.isInitialEventDispatched = false; + this.#hideUINotification(true); + this.switchView(_ui_utils.SidebarView.THUMBS); + this.outlineButton.disabled = false; + this.attachmentsButton.disabled = false; + this.layersButton.disabled = false; + this._currentOutlineItemButton.disabled = true; + } + get visibleView() { + return this.isOpen ? this.active : _ui_utils.SidebarView.NONE; + } + setInitialView(view = _ui_utils.SidebarView.NONE) { + if (this.isInitialViewSet) { + return; + } + this.isInitialViewSet = true; + if (view === _ui_utils.SidebarView.NONE || view === _ui_utils.SidebarView.UNKNOWN) { + this.#dispatchEvent(); + return; + } + this.switchView(view, true); + if (!this.isInitialEventDispatched) { + this.#dispatchEvent(); + } + } + switchView(view, forceOpen = false) { + const isViewChanged = view !== this.active; + let shouldForceRendering = false; + switch (view) { + case _ui_utils.SidebarView.NONE: + if (this.isOpen) { + this.close(); + } + return; + case _ui_utils.SidebarView.THUMBS: + if (this.isOpen && isViewChanged) { + shouldForceRendering = true; + } + break; + case _ui_utils.SidebarView.OUTLINE: + if (this.outlineButton.disabled) { + return; + } + break; + case _ui_utils.SidebarView.ATTACHMENTS: + if (this.attachmentsButton.disabled) { + return; + } + break; + case _ui_utils.SidebarView.LAYERS: + if (this.layersButton.disabled) { + return; + } + break; + default: + console.error(`PDFSidebar.switchView: "${view}" is not a valid view.`); + return; + } + this.active = view; + const isThumbs = view === _ui_utils.SidebarView.THUMBS, + isOutline = view === _ui_utils.SidebarView.OUTLINE, + isAttachments = view === _ui_utils.SidebarView.ATTACHMENTS, + isLayers = view === _ui_utils.SidebarView.LAYERS; + this.thumbnailButton.classList.toggle("toggled", isThumbs); + this.outlineButton.classList.toggle("toggled", isOutline); + this.attachmentsButton.classList.toggle("toggled", isAttachments); + this.layersButton.classList.toggle("toggled", isLayers); + this.thumbnailButton.setAttribute("aria-checked", isThumbs); + this.outlineButton.setAttribute("aria-checked", isOutline); + this.attachmentsButton.setAttribute("aria-checked", isAttachments); + this.layersButton.setAttribute("aria-checked", isLayers); + this.thumbnailView.classList.toggle("hidden", !isThumbs); + this.outlineView.classList.toggle("hidden", !isOutline); + this.attachmentsView.classList.toggle("hidden", !isAttachments); + this.layersView.classList.toggle("hidden", !isLayers); + this._outlineOptionsContainer.classList.toggle("hidden", !isOutline); + if (forceOpen && !this.isOpen) { + this.open(); + return; + } + if (shouldForceRendering) { + this.#updateThumbnailViewer(); + this.#forceRendering(); + } + if (isViewChanged) { + this.#dispatchEvent(); + } + } + open() { + if (this.isOpen) { + return; + } + this.isOpen = true; + this.toggleButton.classList.add("toggled"); + this.toggleButton.setAttribute("aria-expanded", "true"); + this.outerContainer.classList.add("sidebarMoving", "sidebarOpen"); + if (this.active === _ui_utils.SidebarView.THUMBS) { + this.#updateThumbnailViewer(); + } + this.#forceRendering(); + this.#dispatchEvent(); + this.#hideUINotification(); + } + close() { + if (!this.isOpen) { + return; + } + this.isOpen = false; + this.toggleButton.classList.remove("toggled"); + this.toggleButton.setAttribute("aria-expanded", "false"); + this.outerContainer.classList.add("sidebarMoving"); + this.outerContainer.classList.remove("sidebarOpen"); + this.#forceRendering(); + this.#dispatchEvent(); + } + toggle() { + if (this.isOpen) { + this.close(); + } else { + this.open(); + } + } + #dispatchEvent() { + if (this.isInitialViewSet && !this.isInitialEventDispatched) { + this.isInitialEventDispatched = true; + } + this.eventBus.dispatch("sidebarviewchanged", { + source: this, + view: this.visibleView + }); + } + #forceRendering() { + if (this.onToggled) { + this.onToggled(); + } else { + this.pdfViewer.forceRendering(); + this.pdfThumbnailViewer.forceRendering(); + } + } + #updateThumbnailViewer() { + const { + pdfViewer, + pdfThumbnailViewer + } = this; + const pagesCount = pdfViewer.pagesCount; + for (let pageIndex = 0; pageIndex < pagesCount; pageIndex++) { + const pageView = pdfViewer.getPageView(pageIndex); + if (pageView?.renderingState === _ui_utils.RenderingStates.FINISHED) { + const thumbnailView = pdfThumbnailViewer.getThumbnail(pageIndex); + thumbnailView.setImage(pageView); + } + } + pdfThumbnailViewer.scrollThumbnailIntoView(pdfViewer.currentPageNumber); + } + #showUINotification() { + this.toggleButton.setAttribute("data-l10n-id", "toggle_sidebar_notification2"); + this.l10n.translate(this.toggleButton); + if (!this.isOpen) { + this.toggleButton.classList.add(UI_NOTIFICATION_CLASS); + } + } + #hideUINotification(reset = false) { + if (this.isOpen || reset) { + this.toggleButton.classList.remove(UI_NOTIFICATION_CLASS); + } + if (reset) { + this.toggleButton.setAttribute("data-l10n-id", "toggle_sidebar"); + this.l10n.translate(this.toggleButton); + } + } + #addEventListeners() { + this.sidebarContainer.addEventListener("transitionend", evt => { + if (evt.target === this.sidebarContainer) { + this.outerContainer.classList.remove("sidebarMoving"); + } + }); + this.toggleButton.addEventListener("click", () => { + this.toggle(); + }); + this.thumbnailButton.addEventListener("click", () => { + this.switchView(_ui_utils.SidebarView.THUMBS); + }); + this.outlineButton.addEventListener("click", () => { + this.switchView(_ui_utils.SidebarView.OUTLINE); + }); + this.outlineButton.addEventListener("dblclick", () => { + this.eventBus.dispatch("toggleoutlinetree", { + source: this + }); + }); + this.attachmentsButton.addEventListener("click", () => { + this.switchView(_ui_utils.SidebarView.ATTACHMENTS); + }); + this.layersButton.addEventListener("click", () => { + this.switchView(_ui_utils.SidebarView.LAYERS); + }); + this.layersButton.addEventListener("dblclick", () => { + this.eventBus.dispatch("resetlayers", { + source: this + }); + }); + this._currentOutlineItemButton.addEventListener("click", () => { + this.eventBus.dispatch("currentoutlineitem", { + source: this + }); + }); + const onTreeLoaded = (count, button, view) => { + button.disabled = !count; + if (count) { + this.#showUINotification(); + } else if (this.active === view) { + this.switchView(_ui_utils.SidebarView.THUMBS); + } + }; + this.eventBus._on("outlineloaded", evt => { + onTreeLoaded(evt.outlineCount, this.outlineButton, _ui_utils.SidebarView.OUTLINE); + evt.currentOutlineItemPromise.then(enabled => { + if (!this.isInitialViewSet) { + return; + } + this._currentOutlineItemButton.disabled = !enabled; + }); + }); + this.eventBus._on("attachmentsloaded", evt => { + onTreeLoaded(evt.attachmentsCount, this.attachmentsButton, _ui_utils.SidebarView.ATTACHMENTS); + }); + this.eventBus._on("layersloaded", evt => { + onTreeLoaded(evt.layersCount, this.layersButton, _ui_utils.SidebarView.LAYERS); + }); + this.eventBus._on("presentationmodechanged", evt => { + if (evt.state === _ui_utils.PresentationModeState.NORMAL && this.visibleView === _ui_utils.SidebarView.THUMBS) { + this.#updateThumbnailViewer(); + } + }); + } +} +exports.PDFSidebar = PDFSidebar; + +/***/ }), +/* 26 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFSidebarResizer = void 0; +var _ui_utils = __webpack_require__(3); +const SIDEBAR_WIDTH_VAR = "--sidebar-width"; +const SIDEBAR_MIN_WIDTH = 200; +const SIDEBAR_RESIZING_CLASS = "sidebarResizing"; +class PDFSidebarResizer { + constructor(options, eventBus, l10n) { + this.isRTL = false; + this.sidebarOpen = false; + this._width = null; + this._outerContainerWidth = null; + this._boundEvents = Object.create(null); + this.outerContainer = options.outerContainer; + this.resizer = options.resizer; + this.eventBus = eventBus; + l10n.getDirection().then(dir => { + this.isRTL = dir === "rtl"; + }); + this._addEventListeners(); + } + get outerContainerWidth() { + return this._outerContainerWidth ||= this.outerContainer.clientWidth; + } + _updateWidth(width = 0) { + const maxWidth = Math.floor(this.outerContainerWidth / 2); + if (width > maxWidth) { + width = maxWidth; + } + if (width < SIDEBAR_MIN_WIDTH) { + width = SIDEBAR_MIN_WIDTH; + } + if (width === this._width) { + return false; + } + this._width = width; + _ui_utils.docStyle.setProperty(SIDEBAR_WIDTH_VAR, `${width}px`); + return true; + } + _mouseMove(evt) { + let width = evt.clientX; + if (this.isRTL) { + width = this.outerContainerWidth - width; + } + this._updateWidth(width); + } + _mouseUp(evt) { + this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS); + this.eventBus.dispatch("resize", { + source: this + }); + const _boundEvents = this._boundEvents; + window.removeEventListener("mousemove", _boundEvents.mouseMove); + window.removeEventListener("mouseup", _boundEvents.mouseUp); + } + _addEventListeners() { + const _boundEvents = this._boundEvents; + _boundEvents.mouseMove = this._mouseMove.bind(this); + _boundEvents.mouseUp = this._mouseUp.bind(this); + this.resizer.addEventListener("mousedown", evt => { + if (evt.button !== 0) { + return; + } + this.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS); + window.addEventListener("mousemove", _boundEvents.mouseMove); + window.addEventListener("mouseup", _boundEvents.mouseUp); + }); + this.eventBus._on("sidebarviewchanged", evt => { + this.sidebarOpen = !!evt?.view; + }); + this.eventBus._on("resize", evt => { + if (evt?.source !== window) { + return; + } + this._outerContainerWidth = null; + if (!this._width) { + return; + } + if (!this.sidebarOpen) { + this._updateWidth(this._width); + return; + } + this.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS); + const updated = this._updateWidth(this._width); + Promise.resolve().then(() => { + this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS); + if (updated) { + this.eventBus.dispatch("resize", { + source: this + }); + } + }); + }); + } +} +exports.PDFSidebarResizer = PDFSidebarResizer; + +/***/ }), +/* 27 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFThumbnailViewer = void 0; +var _ui_utils = __webpack_require__(3); +var _pdf_thumbnail_view = __webpack_require__(28); +const THUMBNAIL_SCROLL_MARGIN = -19; +const THUMBNAIL_SELECTED_CLASS = "selected"; +class PDFThumbnailViewer { + constructor({ + container, + linkService, + renderingQueue, + l10n, + pageColors + }) { + this.container = container; + this.linkService = linkService; + this.renderingQueue = renderingQueue; + this.l10n = l10n; + this.pageColors = pageColors || null; + if (this.pageColors && !(CSS.supports("color", this.pageColors.background) && CSS.supports("color", this.pageColors.foreground))) { + if (this.pageColors.background || this.pageColors.foreground) { + console.warn("PDFThumbnailViewer: Ignoring `pageColors`-option, since the browser doesn't support the values used."); + } + this.pageColors = null; + } + this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdated.bind(this)); + this._resetView(); + } + _scrollUpdated() { + this.renderingQueue.renderHighestPriority(); + } + getThumbnail(index) { + return this._thumbnails[index]; + } + _getVisibleThumbs() { + return (0, _ui_utils.getVisibleElements)({ + scrollEl: this.container, + views: this._thumbnails + }); + } + scrollThumbnailIntoView(pageNumber) { + if (!this.pdfDocument) { + return; + } + const thumbnailView = this._thumbnails[pageNumber - 1]; + if (!thumbnailView) { + console.error('scrollThumbnailIntoView: Invalid "pageNumber" parameter.'); + return; + } + if (pageNumber !== this._currentPageNumber) { + const prevThumbnailView = this._thumbnails[this._currentPageNumber - 1]; + prevThumbnailView.div.classList.remove(THUMBNAIL_SELECTED_CLASS); + thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS); + } + const { + first, + last, + views + } = this._getVisibleThumbs(); + if (views.length > 0) { + let shouldScroll = false; + if (pageNumber <= first.id || pageNumber >= last.id) { + shouldScroll = true; + } else { + for (const { + id, + percent + } of views) { + if (id !== pageNumber) { + continue; + } + shouldScroll = percent < 100; + break; + } + } + if (shouldScroll) { + (0, _ui_utils.scrollIntoView)(thumbnailView.div, { + top: THUMBNAIL_SCROLL_MARGIN + }); + } + } + this._currentPageNumber = pageNumber; + } + get pagesRotation() { + return this._pagesRotation; + } + set pagesRotation(rotation) { + if (!(0, _ui_utils.isValidRotation)(rotation)) { + throw new Error("Invalid thumbnails rotation angle."); + } + if (!this.pdfDocument) { + return; + } + if (this._pagesRotation === rotation) { + return; + } + this._pagesRotation = rotation; + const updateArgs = { + rotation + }; + for (const thumbnail of this._thumbnails) { + thumbnail.update(updateArgs); + } + } + cleanup() { + for (const thumbnail of this._thumbnails) { + if (thumbnail.renderingState !== _ui_utils.RenderingStates.FINISHED) { + thumbnail.reset(); + } + } + _pdf_thumbnail_view.TempImageFactory.destroyCanvas(); + } + _resetView() { + this._thumbnails = []; + this._currentPageNumber = 1; + this._pageLabels = null; + this._pagesRotation = 0; + this.container.textContent = ""; + } + setDocument(pdfDocument) { + if (this.pdfDocument) { + this._cancelRendering(); + this._resetView(); + } + this.pdfDocument = pdfDocument; + if (!pdfDocument) { + return; + } + const firstPagePromise = pdfDocument.getPage(1); + const optionalContentConfigPromise = pdfDocument.getOptionalContentConfig(); + firstPagePromise.then(firstPdfPage => { + const pagesCount = pdfDocument.numPages; + const viewport = firstPdfPage.getViewport({ + scale: 1 + }); + for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) { + const thumbnail = new _pdf_thumbnail_view.PDFThumbnailView({ + container: this.container, + id: pageNum, + defaultViewport: viewport.clone(), + optionalContentConfigPromise, + linkService: this.linkService, + renderingQueue: this.renderingQueue, + l10n: this.l10n, + pageColors: this.pageColors + }); + this._thumbnails.push(thumbnail); + } + this._thumbnails[0]?.setPdfPage(firstPdfPage); + const thumbnailView = this._thumbnails[this._currentPageNumber - 1]; + thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS); + }).catch(reason => { + console.error("Unable to initialize thumbnail viewer", reason); + }); + } + _cancelRendering() { + for (const thumbnail of this._thumbnails) { + thumbnail.cancelRendering(); + } + } + setPageLabels(labels) { + if (!this.pdfDocument) { + return; + } + if (!labels) { + this._pageLabels = null; + } else if (!(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)) { + this._pageLabels = null; + console.error("PDFThumbnailViewer_setPageLabels: Invalid page labels."); + } else { + this._pageLabels = labels; + } + for (let i = 0, ii = this._thumbnails.length; i < ii; i++) { + this._thumbnails[i].setPageLabel(this._pageLabels?.[i] ?? null); + } + } + async #ensurePdfPageLoaded(thumbView) { + if (thumbView.pdfPage) { + return thumbView.pdfPage; + } + try { + const pdfPage = await this.pdfDocument.getPage(thumbView.id); + if (!thumbView.pdfPage) { + thumbView.setPdfPage(pdfPage); + } + return pdfPage; + } catch (reason) { + console.error("Unable to get page for thumb view", reason); + return null; + } + } + #getScrollAhead(visible) { + if (visible.first?.id === 1) { + return true; + } else if (visible.last?.id === this._thumbnails.length) { + return false; + } + return this.scroll.down; + } + forceRendering() { + const visibleThumbs = this._getVisibleThumbs(); + const scrollAhead = this.#getScrollAhead(visibleThumbs); + const thumbView = this.renderingQueue.getHighestPriority(visibleThumbs, this._thumbnails, scrollAhead); + if (thumbView) { + this.#ensurePdfPageLoaded(thumbView).then(() => { + this.renderingQueue.renderView(thumbView); + }); + return true; + } + return false; + } +} +exports.PDFThumbnailViewer = PDFThumbnailViewer; + +/***/ }), +/* 28 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TempImageFactory = exports.PDFThumbnailView = void 0; +var _ui_utils = __webpack_require__(3); +var _pdfjsLib = __webpack_require__(4); +const DRAW_UPSCALE_FACTOR = 2; +const MAX_NUM_SCALING_STEPS = 3; +const THUMBNAIL_CANVAS_BORDER_WIDTH = 1; +const THUMBNAIL_WIDTH = 98; +class TempImageFactory { + static #tempCanvas = null; + static getCanvas(width, height) { + const tempCanvas = this.#tempCanvas ||= document.createElement("canvas"); + tempCanvas.width = width; + tempCanvas.height = height; + const ctx = tempCanvas.getContext("2d", { + alpha: false + }); + ctx.save(); + ctx.fillStyle = "rgb(255, 255, 255)"; + ctx.fillRect(0, 0, width, height); + ctx.restore(); + return [tempCanvas, tempCanvas.getContext("2d")]; + } + static destroyCanvas() { + const tempCanvas = this.#tempCanvas; + if (tempCanvas) { + tempCanvas.width = 0; + tempCanvas.height = 0; + } + this.#tempCanvas = null; + } +} +exports.TempImageFactory = TempImageFactory; +class PDFThumbnailView { + constructor({ + container, + id, + defaultViewport, + optionalContentConfigPromise, + linkService, + renderingQueue, + l10n, + pageColors + }) { + this.id = id; + this.renderingId = "thumbnail" + id; + this.pageLabel = null; + this.pdfPage = null; + this.rotation = 0; + this.viewport = defaultViewport; + this.pdfPageRotate = defaultViewport.rotation; + this._optionalContentConfigPromise = optionalContentConfigPromise || null; + this.pageColors = pageColors || null; + this.linkService = linkService; + this.renderingQueue = renderingQueue; + this.renderTask = null; + this.renderingState = _ui_utils.RenderingStates.INITIAL; + this.resume = null; + const pageWidth = this.viewport.width, + pageHeight = this.viewport.height, + pageRatio = pageWidth / pageHeight; + this.canvasWidth = THUMBNAIL_WIDTH; + this.canvasHeight = this.canvasWidth / pageRatio | 0; + this.scale = this.canvasWidth / pageWidth; + this.l10n = l10n; + const anchor = document.createElement("a"); + anchor.href = linkService.getAnchorUrl("#page=" + id); + this._thumbPageTitle.then(msg => { + anchor.title = msg; + }); + anchor.onclick = function () { + linkService.goToPage(id); + return false; + }; + this.anchor = anchor; + const div = document.createElement("div"); + div.className = "thumbnail"; + div.setAttribute("data-page-number", this.id); + this.div = div; + const ring = document.createElement("div"); + ring.className = "thumbnailSelectionRing"; + const borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH; + ring.style.width = this.canvasWidth + borderAdjustment + "px"; + ring.style.height = this.canvasHeight + borderAdjustment + "px"; + this.ring = ring; + div.append(ring); + anchor.append(div); + container.append(anchor); + } + setPdfPage(pdfPage) { + this.pdfPage = pdfPage; + this.pdfPageRotate = pdfPage.rotate; + const totalRotation = (this.rotation + this.pdfPageRotate) % 360; + this.viewport = pdfPage.getViewport({ + scale: 1, + rotation: totalRotation + }); + this.reset(); + } + reset() { + this.cancelRendering(); + this.renderingState = _ui_utils.RenderingStates.INITIAL; + const pageWidth = this.viewport.width, + pageHeight = this.viewport.height, + pageRatio = pageWidth / pageHeight; + this.canvasHeight = this.canvasWidth / pageRatio | 0; + this.scale = this.canvasWidth / pageWidth; + this.div.removeAttribute("data-loaded"); + const ring = this.ring; + ring.textContent = ""; + const borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH; + ring.style.width = this.canvasWidth + borderAdjustment + "px"; + ring.style.height = this.canvasHeight + borderAdjustment + "px"; + if (this.canvas) { + this.canvas.width = 0; + this.canvas.height = 0; + delete this.canvas; + } + if (this.image) { + this.image.removeAttribute("src"); + delete this.image; + } + } + update({ + rotation = null + }) { + if (typeof rotation === "number") { + this.rotation = rotation; + } + const totalRotation = (this.rotation + this.pdfPageRotate) % 360; + this.viewport = this.viewport.clone({ + scale: 1, + rotation: totalRotation + }); + this.reset(); + } + cancelRendering() { + if (this.renderTask) { + this.renderTask.cancel(); + this.renderTask = null; + } + this.resume = null; + } + _getPageDrawContext(upscaleFactor = 1) { + const canvas = document.createElement("canvas"); + const ctx = canvas.getContext("2d", { + alpha: false + }); + const outputScale = new _ui_utils.OutputScale(); + canvas.width = upscaleFactor * this.canvasWidth * outputScale.sx | 0; + canvas.height = upscaleFactor * this.canvasHeight * outputScale.sy | 0; + const transform = outputScale.scaled ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0] : null; + return { + ctx, + canvas, + transform + }; + } + _convertCanvasToImage(canvas) { + if (this.renderingState !== _ui_utils.RenderingStates.FINISHED) { + throw new Error("_convertCanvasToImage: Rendering has not finished."); + } + const reducedCanvas = this._reduceImage(canvas); + const image = document.createElement("img"); + image.className = "thumbnailImage"; + this._thumbPageCanvas.then(msg => { + image.setAttribute("aria-label", msg); + }); + image.style.width = this.canvasWidth + "px"; + image.style.height = this.canvasHeight + "px"; + image.src = reducedCanvas.toDataURL(); + this.image = image; + this.div.setAttribute("data-loaded", true); + this.ring.append(image); + reducedCanvas.width = 0; + reducedCanvas.height = 0; + } + draw() { + if (this.renderingState !== _ui_utils.RenderingStates.INITIAL) { + console.error("Must be in new state before drawing"); + return Promise.resolve(); + } + const { + pdfPage + } = this; + if (!pdfPage) { + this.renderingState = _ui_utils.RenderingStates.FINISHED; + return Promise.reject(new Error("pdfPage is not loaded")); + } + this.renderingState = _ui_utils.RenderingStates.RUNNING; + const finishRenderTask = async (error = null) => { + if (renderTask === this.renderTask) { + this.renderTask = null; + } + if (error instanceof _pdfjsLib.RenderingCancelledException) { + return; + } + this.renderingState = _ui_utils.RenderingStates.FINISHED; + this._convertCanvasToImage(canvas); + if (error) { + throw error; + } + }; + const { + ctx, + canvas, + transform + } = this._getPageDrawContext(DRAW_UPSCALE_FACTOR); + const drawViewport = this.viewport.clone({ + scale: DRAW_UPSCALE_FACTOR * this.scale + }); + const renderContinueCallback = cont => { + if (!this.renderingQueue.isHighestPriority(this)) { + this.renderingState = _ui_utils.RenderingStates.PAUSED; + this.resume = () => { + this.renderingState = _ui_utils.RenderingStates.RUNNING; + cont(); + }; + return; + } + cont(); + }; + const renderContext = { + canvasContext: ctx, + transform, + viewport: drawViewport, + optionalContentConfigPromise: this._optionalContentConfigPromise, + pageColors: this.pageColors + }; + const renderTask = this.renderTask = pdfPage.render(renderContext); + renderTask.onContinue = renderContinueCallback; + const resultPromise = renderTask.promise.then(function () { + return finishRenderTask(null); + }, function (error) { + return finishRenderTask(error); + }); + resultPromise.finally(() => { + canvas.width = 0; + canvas.height = 0; + const pageCached = this.linkService.isPageCached(this.id); + if (!pageCached) { + this.pdfPage?.cleanup(); + } + }); + return resultPromise; + } + setImage(pageView) { + if (this.renderingState !== _ui_utils.RenderingStates.INITIAL) { + return; + } + const { + thumbnailCanvas: canvas, + pdfPage, + scale + } = pageView; + if (!canvas) { + return; + } + if (!this.pdfPage) { + this.setPdfPage(pdfPage); + } + if (scale < this.scale) { + return; + } + this.renderingState = _ui_utils.RenderingStates.FINISHED; + this._convertCanvasToImage(canvas); + } + _reduceImage(img) { + const { + ctx, + canvas + } = this._getPageDrawContext(); + if (img.width <= 2 * canvas.width) { + ctx.drawImage(img, 0, 0, img.width, img.height, 0, 0, canvas.width, canvas.height); + return canvas; + } + let reducedWidth = canvas.width << MAX_NUM_SCALING_STEPS; + let reducedHeight = canvas.height << MAX_NUM_SCALING_STEPS; + const [reducedImage, reducedImageCtx] = TempImageFactory.getCanvas(reducedWidth, reducedHeight); + while (reducedWidth > img.width || reducedHeight > img.height) { + reducedWidth >>= 1; + reducedHeight >>= 1; + } + reducedImageCtx.drawImage(img, 0, 0, img.width, img.height, 0, 0, reducedWidth, reducedHeight); + while (reducedWidth > 2 * canvas.width) { + reducedImageCtx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight, 0, 0, reducedWidth >> 1, reducedHeight >> 1); + reducedWidth >>= 1; + reducedHeight >>= 1; + } + ctx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight, 0, 0, canvas.width, canvas.height); + return canvas; + } + get _thumbPageTitle() { + return this.l10n.get("thumb_page_title", { + page: this.pageLabel ?? this.id + }); + } + get _thumbPageCanvas() { + return this.l10n.get("thumb_page_canvas", { + page: this.pageLabel ?? this.id + }); + } + setPageLabel(label) { + this.pageLabel = typeof label === "string" ? label : null; + this._thumbPageTitle.then(msg => { + this.anchor.title = msg; + }); + if (this.renderingState !== _ui_utils.RenderingStates.FINISHED) { + return; + } + this._thumbPageCanvas.then(msg => { + this.image?.setAttribute("aria-label", msg); + }); + } +} +exports.PDFThumbnailView = PDFThumbnailView; + +/***/ }), +/* 29 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PagesCountLimit = exports.PDFViewer = exports.PDFPageViewBuffer = void 0; +var _pdfjsLib = __webpack_require__(4); +var _ui_utils = __webpack_require__(3); +var _l10n_utils = __webpack_require__(30); +var _pdf_page_view = __webpack_require__(31); +var _pdf_rendering_queue = __webpack_require__(23); +var _pdf_link_service = __webpack_require__(7); +const DEFAULT_CACHE_SIZE = 10; +const ENABLE_PERMISSIONS_CLASS = "enablePermissions"; +const PagesCountLimit = { + FORCE_SCROLL_MODE_PAGE: 15000, + FORCE_LAZY_PAGE_INIT: 7500, + PAUSE_EAGER_PAGE_INIT: 250 +}; +exports.PagesCountLimit = PagesCountLimit; +function isValidAnnotationEditorMode(mode) { + return Object.values(_pdfjsLib.AnnotationEditorType).includes(mode) && mode !== _pdfjsLib.AnnotationEditorType.DISABLE; +} +class PDFPageViewBuffer { + #buf = new Set(); + #size = 0; + constructor(size) { + this.#size = size; + } + push(view) { + const buf = this.#buf; + if (buf.has(view)) { + buf.delete(view); + } + buf.add(view); + if (buf.size > this.#size) { + this.#destroyFirstView(); + } + } + resize(newSize, idsToKeep = null) { + this.#size = newSize; + const buf = this.#buf; + if (idsToKeep) { + const ii = buf.size; + let i = 1; + for (const view of buf) { + if (idsToKeep.has(view.id)) { + buf.delete(view); + buf.add(view); + } + if (++i > ii) { + break; + } + } + } + while (buf.size > this.#size) { + this.#destroyFirstView(); + } + } + has(view) { + return this.#buf.has(view); + } + [Symbol.iterator]() { + return this.#buf.keys(); + } + #destroyFirstView() { + const firstView = this.#buf.keys().next().value; + firstView?.destroy(); + this.#buf.delete(firstView); + } +} +exports.PDFPageViewBuffer = PDFPageViewBuffer; +class PDFViewer { + #buffer = null; + #annotationEditorMode = _pdfjsLib.AnnotationEditorType.NONE; + #annotationEditorUIManager = null; + #annotationMode = _pdfjsLib.AnnotationMode.ENABLE_FORMS; + #containerTopLeft = null; + #enablePermissions = false; + #previousContainerHeight = 0; + #resizeObserver = new ResizeObserver(this.#resizeObserverCallback.bind(this)); + #scrollModePageState = null; + #onVisibilityChange = null; + #scaleTimeoutId = null; + constructor(options) { + const viewerVersion = '3.5.141'; + if (_pdfjsLib.version !== viewerVersion) { + throw new Error(`The API version "${_pdfjsLib.version}" does not match the Viewer version "${viewerVersion}".`); + } + this.container = options.container; + this.viewer = options.viewer || options.container.firstElementChild; + if (this.container?.tagName !== "DIV" || this.viewer?.tagName !== "DIV") { + throw new Error("Invalid `container` and/or `viewer` option."); + } + if (this.container.offsetParent && getComputedStyle(this.container).position !== "absolute") { + throw new Error("The `container` must be absolutely positioned."); + } + this.#resizeObserver.observe(this.container); + this.eventBus = options.eventBus; + this.linkService = options.linkService || new _pdf_link_service.SimpleLinkService(); + this.downloadManager = options.downloadManager || null; + this.findController = options.findController || null; + this._scriptingManager = options.scriptingManager || null; + this.textLayerMode = options.textLayerMode ?? _ui_utils.TextLayerMode.ENABLE; + this.#annotationMode = options.annotationMode ?? _pdfjsLib.AnnotationMode.ENABLE_FORMS; + this.#annotationEditorMode = options.annotationEditorMode ?? _pdfjsLib.AnnotationEditorType.NONE; + this.imageResourcesPath = options.imageResourcesPath || ""; + this.enablePrintAutoRotate = options.enablePrintAutoRotate || false; + this.removePageBorders = options.removePageBorders || false; + this.renderer = options.renderer || _ui_utils.RendererType.CANVAS; + this.useOnlyCssZoom = options.useOnlyCssZoom || false; + this.isOffscreenCanvasSupported = options.isOffscreenCanvasSupported ?? true; + this.maxCanvasPixels = options.maxCanvasPixels; + this.l10n = options.l10n || _l10n_utils.NullL10n; + this.#enablePermissions = options.enablePermissions || false; + this.pageColors = options.pageColors || null; + if (this.pageColors && !(CSS.supports("color", this.pageColors.background) && CSS.supports("color", this.pageColors.foreground))) { + if (this.pageColors.background || this.pageColors.foreground) { + console.warn("PDFViewer: Ignoring `pageColors`-option, since the browser doesn't support the values used."); + } + this.pageColors = null; + } + this.defaultRenderingQueue = !options.renderingQueue; + if (this.defaultRenderingQueue) { + this.renderingQueue = new _pdf_rendering_queue.PDFRenderingQueue(); + this.renderingQueue.setViewer(this); + } else { + this.renderingQueue = options.renderingQueue; + } + this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdate.bind(this)); + this.presentationModeState = _ui_utils.PresentationModeState.UNKNOWN; + this._onBeforeDraw = this._onAfterDraw = null; + this._resetView(); + if (this.removePageBorders) { + this.viewer.classList.add("removePageBorders"); + } + this.#updateContainerHeightCss(); + } + get pagesCount() { + return this._pages.length; + } + getPageView(index) { + return this._pages[index]; + } + get pageViewsReady() { + if (!this._pagesCapability.settled) { + return false; + } + return this._pages.every(function (pageView) { + return pageView?.pdfPage; + }); + } + get renderForms() { + return this.#annotationMode === _pdfjsLib.AnnotationMode.ENABLE_FORMS; + } + get enableScripting() { + return !!this._scriptingManager; + } + get currentPageNumber() { + return this._currentPageNumber; + } + set currentPageNumber(val) { + if (!Number.isInteger(val)) { + throw new Error("Invalid page number."); + } + if (!this.pdfDocument) { + return; + } + if (!this._setCurrentPageNumber(val, true)) { + console.error(`currentPageNumber: "${val}" is not a valid page.`); + } + } + _setCurrentPageNumber(val, resetCurrentPageView = false) { + if (this._currentPageNumber === val) { + if (resetCurrentPageView) { + this.#resetCurrentPageView(); + } + return true; + } + if (!(0 < val && val <= this.pagesCount)) { + return false; + } + const previous = this._currentPageNumber; + this._currentPageNumber = val; + this.eventBus.dispatch("pagechanging", { + source: this, + pageNumber: val, + pageLabel: this._pageLabels?.[val - 1] ?? null, + previous + }); + if (resetCurrentPageView) { + this.#resetCurrentPageView(); + } + return true; + } + get currentPageLabel() { + return this._pageLabels?.[this._currentPageNumber - 1] ?? null; + } + set currentPageLabel(val) { + if (!this.pdfDocument) { + return; + } + let page = val | 0; + if (this._pageLabels) { + const i = this._pageLabels.indexOf(val); + if (i >= 0) { + page = i + 1; + } + } + if (!this._setCurrentPageNumber(page, true)) { + console.error(`currentPageLabel: "${val}" is not a valid page.`); + } + } + get currentScale() { + return this._currentScale !== _ui_utils.UNKNOWN_SCALE ? this._currentScale : _ui_utils.DEFAULT_SCALE; + } + set currentScale(val) { + if (isNaN(val)) { + throw new Error("Invalid numeric scale."); + } + if (!this.pdfDocument) { + return; + } + this.#setScale(val, { + noScroll: false + }); + } + get currentScaleValue() { + return this._currentScaleValue; + } + set currentScaleValue(val) { + if (!this.pdfDocument) { + return; + } + this.#setScale(val, { + noScroll: false + }); + } + get pagesRotation() { + return this._pagesRotation; + } + set pagesRotation(rotation) { + if (!(0, _ui_utils.isValidRotation)(rotation)) { + throw new Error("Invalid pages rotation angle."); + } + if (!this.pdfDocument) { + return; + } + rotation %= 360; + if (rotation < 0) { + rotation += 360; + } + if (this._pagesRotation === rotation) { + return; + } + this._pagesRotation = rotation; + const pageNumber = this._currentPageNumber; + this.refresh(true, { + rotation + }); + if (this._currentScaleValue) { + this.#setScale(this._currentScaleValue, { + noScroll: true + }); + } + this.eventBus.dispatch("rotationchanging", { + source: this, + pagesRotation: rotation, + pageNumber + }); + if (this.defaultRenderingQueue) { + this.update(); + } + } + get firstPagePromise() { + return this.pdfDocument ? this._firstPageCapability.promise : null; + } + get onePageRendered() { + return this.pdfDocument ? this._onePageRenderedCapability.promise : null; + } + get pagesPromise() { + return this.pdfDocument ? this._pagesCapability.promise : null; + } + #layerProperties() { + const self = this; + return { + get annotationEditorUIManager() { + return self.#annotationEditorUIManager; + }, + get annotationStorage() { + return self.pdfDocument?.annotationStorage; + }, + get downloadManager() { + return self.downloadManager; + }, + get enableScripting() { + return !!self._scriptingManager; + }, + get fieldObjectsPromise() { + return self.pdfDocument?.getFieldObjects(); + }, + get findController() { + return self.findController; + }, + get hasJSActionsPromise() { + return self.pdfDocument?.hasJSActions(); + }, + get linkService() { + return self.linkService; + } + }; + } + #initializePermissions(permissions) { + const params = { + annotationEditorMode: this.#annotationEditorMode, + annotationMode: this.#annotationMode, + textLayerMode: this.textLayerMode + }; + if (!permissions) { + return params; + } + if (!permissions.includes(_pdfjsLib.PermissionFlag.COPY)) { + this.viewer.classList.add(ENABLE_PERMISSIONS_CLASS); + } + if (!permissions.includes(_pdfjsLib.PermissionFlag.MODIFY_CONTENTS)) { + params.annotationEditorMode = _pdfjsLib.AnnotationEditorType.DISABLE; + } + if (!permissions.includes(_pdfjsLib.PermissionFlag.MODIFY_ANNOTATIONS) && !permissions.includes(_pdfjsLib.PermissionFlag.FILL_INTERACTIVE_FORMS) && this.#annotationMode === _pdfjsLib.AnnotationMode.ENABLE_FORMS) { + params.annotationMode = _pdfjsLib.AnnotationMode.ENABLE; + } + return params; + } + #onePageRenderedOrForceFetch() { + if (document.visibilityState === "hidden" || !this.container.offsetParent || this._getVisiblePages().views.length === 0) { + return Promise.resolve(); + } + const visibilityChangePromise = new Promise(resolve => { + this.#onVisibilityChange = () => { + if (document.visibilityState !== "hidden") { + return; + } + resolve(); + document.removeEventListener("visibilitychange", this.#onVisibilityChange); + this.#onVisibilityChange = null; + }; + document.addEventListener("visibilitychange", this.#onVisibilityChange); + }); + return Promise.race([this._onePageRenderedCapability.promise, visibilityChangePromise]); + } + setDocument(pdfDocument) { + if (this.pdfDocument) { + this.eventBus.dispatch("pagesdestroy", { + source: this + }); + this._cancelRendering(); + this._resetView(); + this.findController?.setDocument(null); + this._scriptingManager?.setDocument(null); + if (this.#annotationEditorUIManager) { + this.#annotationEditorUIManager.destroy(); + this.#annotationEditorUIManager = null; + } + } + this.pdfDocument = pdfDocument; + if (!pdfDocument) { + return; + } + const pagesCount = pdfDocument.numPages; + const firstPagePromise = pdfDocument.getPage(1); + const optionalContentConfigPromise = pdfDocument.getOptionalContentConfig(); + const permissionsPromise = this.#enablePermissions ? pdfDocument.getPermissions() : Promise.resolve(); + if (pagesCount > PagesCountLimit.FORCE_SCROLL_MODE_PAGE) { + console.warn("Forcing PAGE-scrolling for performance reasons, given the length of the document."); + const mode = this._scrollMode = _ui_utils.ScrollMode.PAGE; + this.eventBus.dispatch("scrollmodechanged", { + source: this, + mode + }); + } + this._pagesCapability.promise.then(() => { + this.eventBus.dispatch("pagesloaded", { + source: this, + pagesCount + }); + }, () => {}); + this._onBeforeDraw = evt => { + const pageView = this._pages[evt.pageNumber - 1]; + if (!pageView) { + return; + } + this.#buffer.push(pageView); + }; + this.eventBus._on("pagerender", this._onBeforeDraw); + this._onAfterDraw = evt => { + if (evt.cssTransform || this._onePageRenderedCapability.settled) { + return; + } + this._onePageRenderedCapability.resolve({ + timestamp: evt.timestamp + }); + this.eventBus._off("pagerendered", this._onAfterDraw); + this._onAfterDraw = null; + if (this.#onVisibilityChange) { + document.removeEventListener("visibilitychange", this.#onVisibilityChange); + this.#onVisibilityChange = null; + } + }; + this.eventBus._on("pagerendered", this._onAfterDraw); + Promise.all([firstPagePromise, permissionsPromise]).then(([firstPdfPage, permissions]) => { + if (pdfDocument !== this.pdfDocument) { + return; + } + this._firstPageCapability.resolve(firstPdfPage); + this._optionalContentConfigPromise = optionalContentConfigPromise; + const { + annotationEditorMode, + annotationMode, + textLayerMode + } = this.#initializePermissions(permissions); + if (annotationEditorMode !== _pdfjsLib.AnnotationEditorType.DISABLE) { + const mode = annotationEditorMode; + if (pdfDocument.isPureXfa) { + console.warn("Warning: XFA-editing is not implemented."); + } else if (isValidAnnotationEditorMode(mode)) { + this.#annotationEditorUIManager = new _pdfjsLib.AnnotationEditorUIManager(this.container, this.eventBus, pdfDocument?.annotationStorage); + if (mode !== _pdfjsLib.AnnotationEditorType.NONE) { + this.#annotationEditorUIManager.updateMode(mode); + } + } else { + console.error(`Invalid AnnotationEditor mode: ${mode}`); + } + } + const layerProperties = this.#layerProperties.bind(this); + const viewerElement = this._scrollMode === _ui_utils.ScrollMode.PAGE ? null : this.viewer; + const scale = this.currentScale; + const viewport = firstPdfPage.getViewport({ + scale: scale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS + }); + this.viewer.style.setProperty("--scale-factor", viewport.scale); + for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) { + const pageView = new _pdf_page_view.PDFPageView({ + container: viewerElement, + eventBus: this.eventBus, + id: pageNum, + scale, + defaultViewport: viewport.clone(), + optionalContentConfigPromise, + renderingQueue: this.renderingQueue, + textLayerMode, + annotationMode, + imageResourcesPath: this.imageResourcesPath, + renderer: this.renderer, + useOnlyCssZoom: this.useOnlyCssZoom, + isOffscreenCanvasSupported: this.isOffscreenCanvasSupported, + maxCanvasPixels: this.maxCanvasPixels, + pageColors: this.pageColors, + l10n: this.l10n, + layerProperties + }); + this._pages.push(pageView); + } + const firstPageView = this._pages[0]; + if (firstPageView) { + firstPageView.setPdfPage(firstPdfPage); + this.linkService.cachePageRef(1, firstPdfPage.ref); + } + if (this._scrollMode === _ui_utils.ScrollMode.PAGE) { + this.#ensurePageViewVisible(); + } else if (this._spreadMode !== _ui_utils.SpreadMode.NONE) { + this._updateSpreadMode(); + } + this.#onePageRenderedOrForceFetch().then(async () => { + this.findController?.setDocument(pdfDocument); + this._scriptingManager?.setDocument(pdfDocument); + if (this.#annotationEditorUIManager) { + this.eventBus.dispatch("annotationeditormodechanged", { + source: this, + mode: this.#annotationEditorMode + }); + } + if (pdfDocument.loadingParams.disableAutoFetch || pagesCount > PagesCountLimit.FORCE_LAZY_PAGE_INIT) { + this._pagesCapability.resolve(); + return; + } + let getPagesLeft = pagesCount - 1; + if (getPagesLeft <= 0) { + this._pagesCapability.resolve(); + return; + } + for (let pageNum = 2; pageNum <= pagesCount; ++pageNum) { + const promise = pdfDocument.getPage(pageNum).then(pdfPage => { + const pageView = this._pages[pageNum - 1]; + if (!pageView.pdfPage) { + pageView.setPdfPage(pdfPage); + } + this.linkService.cachePageRef(pageNum, pdfPage.ref); + if (--getPagesLeft === 0) { + this._pagesCapability.resolve(); + } + }, reason => { + console.error(`Unable to get page ${pageNum} to initialize viewer`, reason); + if (--getPagesLeft === 0) { + this._pagesCapability.resolve(); + } + }); + if (pageNum % PagesCountLimit.PAUSE_EAGER_PAGE_INIT === 0) { + await promise; + } + } + }); + this.eventBus.dispatch("pagesinit", { + source: this + }); + pdfDocument.getMetadata().then(({ + info + }) => { + if (pdfDocument !== this.pdfDocument) { + return; + } + if (info.Language) { + this.viewer.lang = info.Language; + } + }); + if (this.defaultRenderingQueue) { + this.update(); + } + }).catch(reason => { + console.error("Unable to initialize viewer", reason); + this._pagesCapability.reject(reason); + }); + } + setPageLabels(labels) { + if (!this.pdfDocument) { + return; + } + if (!labels) { + this._pageLabels = null; + } else if (!(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)) { + this._pageLabels = null; + console.error(`setPageLabels: Invalid page labels.`); + } else { + this._pageLabels = labels; + } + for (let i = 0, ii = this._pages.length; i < ii; i++) { + this._pages[i].setPageLabel(this._pageLabels?.[i] ?? null); + } + } + _resetView() { + this._pages = []; + this._currentPageNumber = 1; + this._currentScale = _ui_utils.UNKNOWN_SCALE; + this._currentScaleValue = null; + this._pageLabels = null; + this.#buffer = new PDFPageViewBuffer(DEFAULT_CACHE_SIZE); + this._location = null; + this._pagesRotation = 0; + this._optionalContentConfigPromise = null; + this._firstPageCapability = (0, _pdfjsLib.createPromiseCapability)(); + this._onePageRenderedCapability = (0, _pdfjsLib.createPromiseCapability)(); + this._pagesCapability = (0, _pdfjsLib.createPromiseCapability)(); + this._scrollMode = _ui_utils.ScrollMode.VERTICAL; + this._previousScrollMode = _ui_utils.ScrollMode.UNKNOWN; + this._spreadMode = _ui_utils.SpreadMode.NONE; + this.#scrollModePageState = { + previousPageNumber: 1, + scrollDown: true, + pages: [] + }; + if (this._onBeforeDraw) { + this.eventBus._off("pagerender", this._onBeforeDraw); + this._onBeforeDraw = null; + } + if (this._onAfterDraw) { + this.eventBus._off("pagerendered", this._onAfterDraw); + this._onAfterDraw = null; + } + if (this.#onVisibilityChange) { + document.removeEventListener("visibilitychange", this.#onVisibilityChange); + this.#onVisibilityChange = null; + } + this.viewer.textContent = ""; + this._updateScrollMode(); + this.viewer.removeAttribute("lang"); + this.viewer.classList.remove(ENABLE_PERMISSIONS_CLASS); + } + #ensurePageViewVisible() { + if (this._scrollMode !== _ui_utils.ScrollMode.PAGE) { + throw new Error("#ensurePageViewVisible: Invalid scrollMode value."); + } + const pageNumber = this._currentPageNumber, + state = this.#scrollModePageState, + viewer = this.viewer; + viewer.textContent = ""; + state.pages.length = 0; + if (this._spreadMode === _ui_utils.SpreadMode.NONE && !this.isInPresentationMode) { + const pageView = this._pages[pageNumber - 1]; + viewer.append(pageView.div); + state.pages.push(pageView); + } else { + const pageIndexSet = new Set(), + parity = this._spreadMode - 1; + if (parity === -1) { + pageIndexSet.add(pageNumber - 1); + } else if (pageNumber % 2 !== parity) { + pageIndexSet.add(pageNumber - 1); + pageIndexSet.add(pageNumber); + } else { + pageIndexSet.add(pageNumber - 2); + pageIndexSet.add(pageNumber - 1); + } + const spread = document.createElement("div"); + spread.className = "spread"; + if (this.isInPresentationMode) { + const dummyPage = document.createElement("div"); + dummyPage.className = "dummyPage"; + spread.append(dummyPage); + } + for (const i of pageIndexSet) { + const pageView = this._pages[i]; + if (!pageView) { + continue; + } + spread.append(pageView.div); + state.pages.push(pageView); + } + viewer.append(spread); + } + state.scrollDown = pageNumber >= state.previousPageNumber; + state.previousPageNumber = pageNumber; + } + _scrollUpdate() { + if (this.pagesCount === 0) { + return; + } + this.update(); + } + #scrollIntoView(pageView, pageSpot = null) { + const { + div, + id + } = pageView; + if (this._currentPageNumber !== id) { + this._setCurrentPageNumber(id); + } + if (this._scrollMode === _ui_utils.ScrollMode.PAGE) { + this.#ensurePageViewVisible(); + this.update(); + } + if (!pageSpot && !this.isInPresentationMode) { + const left = div.offsetLeft + div.clientLeft, + right = left + div.clientWidth; + const { + scrollLeft, + clientWidth + } = this.container; + if (this._scrollMode === _ui_utils.ScrollMode.HORIZONTAL || left < scrollLeft || right > scrollLeft + clientWidth) { + pageSpot = { + left: 0, + top: 0 + }; + } + } + (0, _ui_utils.scrollIntoView)(div, pageSpot); + if (!this._currentScaleValue && this._location) { + this._location = null; + } + } + #isSameScale(newScale) { + return newScale === this._currentScale || Math.abs(newScale - this._currentScale) < 1e-15; + } + #setScaleUpdatePages(newScale, newValue, { + noScroll = false, + preset = false, + drawingDelay = -1 + }) { + this._currentScaleValue = newValue.toString(); + if (this.#isSameScale(newScale)) { + if (preset) { + this.eventBus.dispatch("scalechanging", { + source: this, + scale: newScale, + presetValue: newValue + }); + } + return; + } + this.viewer.style.setProperty("--scale-factor", newScale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS); + const postponeDrawing = drawingDelay >= 0 && drawingDelay < 1000; + this.refresh(true, { + scale: newScale, + drawingDelay: postponeDrawing ? drawingDelay : -1 + }); + if (postponeDrawing) { + this.#scaleTimeoutId = setTimeout(() => { + this.#scaleTimeoutId = null; + this.refresh(); + }, drawingDelay); + } + this._currentScale = newScale; + if (!noScroll) { + let page = this._currentPageNumber, + dest; + if (this._location && !(this.isInPresentationMode || this.isChangingPresentationMode)) { + page = this._location.pageNumber; + dest = [null, { + name: "XYZ" + }, this._location.left, this._location.top, null]; + } + this.scrollPageIntoView({ + pageNumber: page, + destArray: dest, + allowNegativeOffset: true + }); + } + this.eventBus.dispatch("scalechanging", { + source: this, + scale: newScale, + presetValue: preset ? newValue : undefined + }); + if (this.defaultRenderingQueue) { + this.update(); + } + } + get #pageWidthScaleFactor() { + if (this._spreadMode !== _ui_utils.SpreadMode.NONE && this._scrollMode !== _ui_utils.ScrollMode.HORIZONTAL) { + return 2; + } + return 1; + } + #setScale(value, options) { + let scale = parseFloat(value); + if (scale > 0) { + options.preset = false; + this.#setScaleUpdatePages(scale, value, options); + } else { + const currentPage = this._pages[this._currentPageNumber - 1]; + if (!currentPage) { + return; + } + let hPadding = _ui_utils.SCROLLBAR_PADDING, + vPadding = _ui_utils.VERTICAL_PADDING; + if (this.isInPresentationMode) { + hPadding = vPadding = 4; + if (this._spreadMode !== _ui_utils.SpreadMode.NONE) { + hPadding *= 2; + } + } else if (this.removePageBorders) { + hPadding = vPadding = 0; + } else if (this._scrollMode === _ui_utils.ScrollMode.HORIZONTAL) { + [hPadding, vPadding] = [vPadding, hPadding]; + } + const pageWidthScale = (this.container.clientWidth - hPadding) / currentPage.width * currentPage.scale / this.#pageWidthScaleFactor; + const pageHeightScale = (this.container.clientHeight - vPadding) / currentPage.height * currentPage.scale; + switch (value) { + case "page-actual": + scale = 1; + break; + case "page-width": + scale = pageWidthScale; + break; + case "page-height": + scale = pageHeightScale; + break; + case "page-fit": + scale = Math.min(pageWidthScale, pageHeightScale); + break; + case "auto": + const horizontalScale = (0, _ui_utils.isPortraitOrientation)(currentPage) ? pageWidthScale : Math.min(pageHeightScale, pageWidthScale); + scale = Math.min(_ui_utils.MAX_AUTO_SCALE, horizontalScale); + break; + default: + console.error(`#setScale: "${value}" is an unknown zoom value.`); + return; + } + options.preset = true; + this.#setScaleUpdatePages(scale, value, options); + } + } + #resetCurrentPageView() { + const pageView = this._pages[this._currentPageNumber - 1]; + if (this.isInPresentationMode) { + this.#setScale(this._currentScaleValue, { + noScroll: true + }); + } + this.#scrollIntoView(pageView); + } + pageLabelToPageNumber(label) { + if (!this._pageLabels) { + return null; + } + const i = this._pageLabels.indexOf(label); + if (i < 0) { + return null; + } + return i + 1; + } + scrollPageIntoView({ + pageNumber, + destArray = null, + allowNegativeOffset = false, + ignoreDestinationZoom = false + }) { + if (!this.pdfDocument) { + return; + } + const pageView = Number.isInteger(pageNumber) && this._pages[pageNumber - 1]; + if (!pageView) { + console.error(`scrollPageIntoView: "${pageNumber}" is not a valid pageNumber parameter.`); + return; + } + if (this.isInPresentationMode || !destArray) { + this._setCurrentPageNumber(pageNumber, true); + return; + } + let x = 0, + y = 0; + let width = 0, + height = 0, + widthScale, + heightScale; + const changeOrientation = pageView.rotation % 180 !== 0; + const pageWidth = (changeOrientation ? pageView.height : pageView.width) / pageView.scale / _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS; + const pageHeight = (changeOrientation ? pageView.width : pageView.height) / pageView.scale / _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS; + let scale = 0; + switch (destArray[1].name) { + case "XYZ": + x = destArray[2]; + y = destArray[3]; + scale = destArray[4]; + x = x !== null ? x : 0; + y = y !== null ? y : pageHeight; + break; + case "Fit": + case "FitB": + scale = "page-fit"; + break; + case "FitH": + case "FitBH": + y = destArray[2]; + scale = "page-width"; + if (y === null && this._location) { + x = this._location.left; + y = this._location.top; + } else if (typeof y !== "number" || y < 0) { + y = pageHeight; + } + break; + case "FitV": + case "FitBV": + x = destArray[2]; + width = pageWidth; + height = pageHeight; + scale = "page-height"; + break; + case "FitR": + x = destArray[2]; + y = destArray[3]; + width = destArray[4] - x; + height = destArray[5] - y; + let hPadding = _ui_utils.SCROLLBAR_PADDING, + vPadding = _ui_utils.VERTICAL_PADDING; + if (this.removePageBorders) { + hPadding = vPadding = 0; + } + widthScale = (this.container.clientWidth - hPadding) / width / _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS; + heightScale = (this.container.clientHeight - vPadding) / height / _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS; + scale = Math.min(Math.abs(widthScale), Math.abs(heightScale)); + break; + default: + console.error(`scrollPageIntoView: "${destArray[1].name}" is not a valid destination type.`); + return; + } + if (!ignoreDestinationZoom) { + if (scale && scale !== this._currentScale) { + this.currentScaleValue = scale; + } else if (this._currentScale === _ui_utils.UNKNOWN_SCALE) { + this.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; + } + } + if (scale === "page-fit" && !destArray[4]) { + this.#scrollIntoView(pageView); + return; + } + const boundingRect = [pageView.viewport.convertToViewportPoint(x, y), pageView.viewport.convertToViewportPoint(x + width, y + height)]; + let left = Math.min(boundingRect[0][0], boundingRect[1][0]); + let top = Math.min(boundingRect[0][1], boundingRect[1][1]); + if (!allowNegativeOffset) { + left = Math.max(left, 0); + top = Math.max(top, 0); + } + this.#scrollIntoView(pageView, { + left, + top + }); + } + _updateLocation(firstPage) { + const currentScale = this._currentScale; + const currentScaleValue = this._currentScaleValue; + const normalizedScaleValue = parseFloat(currentScaleValue) === currentScale ? Math.round(currentScale * 10000) / 100 : currentScaleValue; + const pageNumber = firstPage.id; + const currentPageView = this._pages[pageNumber - 1]; + const container = this.container; + const topLeft = currentPageView.getPagePoint(container.scrollLeft - firstPage.x, container.scrollTop - firstPage.y); + const intLeft = Math.round(topLeft[0]); + const intTop = Math.round(topLeft[1]); + let pdfOpenParams = `#page=${pageNumber}`; + if (!this.isInPresentationMode) { + pdfOpenParams += `&zoom=${normalizedScaleValue},${intLeft},${intTop}`; + } + this._location = { + pageNumber, + scale: normalizedScaleValue, + top: intTop, + left: intLeft, + rotation: this._pagesRotation, + pdfOpenParams + }; + } + update() { + const visible = this._getVisiblePages(); + const visiblePages = visible.views, + numVisiblePages = visiblePages.length; + if (numVisiblePages === 0) { + return; + } + const newCacheSize = Math.max(DEFAULT_CACHE_SIZE, 2 * numVisiblePages + 1); + this.#buffer.resize(newCacheSize, visible.ids); + this.renderingQueue.renderHighestPriority(visible); + const isSimpleLayout = this._spreadMode === _ui_utils.SpreadMode.NONE && (this._scrollMode === _ui_utils.ScrollMode.PAGE || this._scrollMode === _ui_utils.ScrollMode.VERTICAL); + const currentId = this._currentPageNumber; + let stillFullyVisible = false; + for (const page of visiblePages) { + if (page.percent < 100) { + break; + } + if (page.id === currentId && isSimpleLayout) { + stillFullyVisible = true; + break; + } + } + this._setCurrentPageNumber(stillFullyVisible ? currentId : visiblePages[0].id); + this._updateLocation(visible.first); + this.eventBus.dispatch("updateviewarea", { + source: this, + location: this._location + }); + } + containsElement(element) { + return this.container.contains(element); + } + focus() { + this.container.focus(); + } + get _isContainerRtl() { + return getComputedStyle(this.container).direction === "rtl"; + } + get isInPresentationMode() { + return this.presentationModeState === _ui_utils.PresentationModeState.FULLSCREEN; + } + get isChangingPresentationMode() { + return this.presentationModeState === _ui_utils.PresentationModeState.CHANGING; + } + get isHorizontalScrollbarEnabled() { + return this.isInPresentationMode ? false : this.container.scrollWidth > this.container.clientWidth; + } + get isVerticalScrollbarEnabled() { + return this.isInPresentationMode ? false : this.container.scrollHeight > this.container.clientHeight; + } + _getVisiblePages() { + const views = this._scrollMode === _ui_utils.ScrollMode.PAGE ? this.#scrollModePageState.pages : this._pages, + horizontal = this._scrollMode === _ui_utils.ScrollMode.HORIZONTAL, + rtl = horizontal && this._isContainerRtl; + return (0, _ui_utils.getVisibleElements)({ + scrollEl: this.container, + views, + sortByVisibility: true, + horizontal, + rtl + }); + } + isPageVisible(pageNumber) { + if (!this.pdfDocument) { + return false; + } + if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) { + console.error(`isPageVisible: "${pageNumber}" is not a valid page.`); + return false; + } + return this._getVisiblePages().ids.has(pageNumber); + } + isPageCached(pageNumber) { + if (!this.pdfDocument) { + return false; + } + if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) { + console.error(`isPageCached: "${pageNumber}" is not a valid page.`); + return false; + } + const pageView = this._pages[pageNumber - 1]; + return this.#buffer.has(pageView); + } + cleanup() { + for (const pageView of this._pages) { + if (pageView.renderingState !== _ui_utils.RenderingStates.FINISHED) { + pageView.reset(); + } + } + } + _cancelRendering() { + for (const pageView of this._pages) { + pageView.cancelRendering(); + } + } + async #ensurePdfPageLoaded(pageView) { + if (pageView.pdfPage) { + return pageView.pdfPage; + } + try { + const pdfPage = await this.pdfDocument.getPage(pageView.id); + if (!pageView.pdfPage) { + pageView.setPdfPage(pdfPage); + } + if (!this.linkService._cachedPageNumber?.(pdfPage.ref)) { + this.linkService.cachePageRef(pageView.id, pdfPage.ref); + } + return pdfPage; + } catch (reason) { + console.error("Unable to get page for page view", reason); + return null; + } + } + #getScrollAhead(visible) { + if (visible.first?.id === 1) { + return true; + } else if (visible.last?.id === this.pagesCount) { + return false; + } + switch (this._scrollMode) { + case _ui_utils.ScrollMode.PAGE: + return this.#scrollModePageState.scrollDown; + case _ui_utils.ScrollMode.HORIZONTAL: + return this.scroll.right; + } + return this.scroll.down; + } + forceRendering(currentlyVisiblePages) { + const visiblePages = currentlyVisiblePages || this._getVisiblePages(); + const scrollAhead = this.#getScrollAhead(visiblePages); + const preRenderExtra = this._spreadMode !== _ui_utils.SpreadMode.NONE && this._scrollMode !== _ui_utils.ScrollMode.HORIZONTAL; + const pageView = this.renderingQueue.getHighestPriority(visiblePages, this._pages, scrollAhead, preRenderExtra); + if (pageView) { + this.#ensurePdfPageLoaded(pageView).then(() => { + this.renderingQueue.renderView(pageView); + }); + return true; + } + return false; + } + get hasEqualPageSizes() { + const firstPageView = this._pages[0]; + for (let i = 1, ii = this._pages.length; i < ii; ++i) { + const pageView = this._pages[i]; + if (pageView.width !== firstPageView.width || pageView.height !== firstPageView.height) { + return false; + } + } + return true; + } + getPagesOverview() { + return this._pages.map(pageView => { + const viewport = pageView.pdfPage.getViewport({ + scale: 1 + }); + if (!this.enablePrintAutoRotate || (0, _ui_utils.isPortraitOrientation)(viewport)) { + return { + width: viewport.width, + height: viewport.height, + rotation: viewport.rotation + }; + } + return { + width: viewport.height, + height: viewport.width, + rotation: (viewport.rotation - 90) % 360 + }; + }); + } + get optionalContentConfigPromise() { + if (!this.pdfDocument) { + return Promise.resolve(null); + } + if (!this._optionalContentConfigPromise) { + console.error("optionalContentConfigPromise: Not initialized yet."); + return this.pdfDocument.getOptionalContentConfig(); + } + return this._optionalContentConfigPromise; + } + set optionalContentConfigPromise(promise) { + if (!(promise instanceof Promise)) { + throw new Error(`Invalid optionalContentConfigPromise: ${promise}`); + } + if (!this.pdfDocument) { + return; + } + if (!this._optionalContentConfigPromise) { + return; + } + this._optionalContentConfigPromise = promise; + this.refresh(false, { + optionalContentConfigPromise: promise + }); + this.eventBus.dispatch("optionalcontentconfigchanged", { + source: this, + promise + }); + } + get scrollMode() { + return this._scrollMode; + } + set scrollMode(mode) { + if (this._scrollMode === mode) { + return; + } + if (!(0, _ui_utils.isValidScrollMode)(mode)) { + throw new Error(`Invalid scroll mode: ${mode}`); + } + if (this.pagesCount > PagesCountLimit.FORCE_SCROLL_MODE_PAGE) { + return; + } + this._previousScrollMode = this._scrollMode; + this._scrollMode = mode; + this.eventBus.dispatch("scrollmodechanged", { + source: this, + mode + }); + this._updateScrollMode(this._currentPageNumber); + } + _updateScrollMode(pageNumber = null) { + const scrollMode = this._scrollMode, + viewer = this.viewer; + viewer.classList.toggle("scrollHorizontal", scrollMode === _ui_utils.ScrollMode.HORIZONTAL); + viewer.classList.toggle("scrollWrapped", scrollMode === _ui_utils.ScrollMode.WRAPPED); + if (!this.pdfDocument || !pageNumber) { + return; + } + if (scrollMode === _ui_utils.ScrollMode.PAGE) { + this.#ensurePageViewVisible(); + } else if (this._previousScrollMode === _ui_utils.ScrollMode.PAGE) { + this._updateSpreadMode(); + } + if (this._currentScaleValue && isNaN(this._currentScaleValue)) { + this.#setScale(this._currentScaleValue, { + noScroll: true + }); + } + this._setCurrentPageNumber(pageNumber, true); + this.update(); + } + get spreadMode() { + return this._spreadMode; + } + set spreadMode(mode) { + if (this._spreadMode === mode) { + return; + } + if (!(0, _ui_utils.isValidSpreadMode)(mode)) { + throw new Error(`Invalid spread mode: ${mode}`); + } + this._spreadMode = mode; + this.eventBus.dispatch("spreadmodechanged", { + source: this, + mode + }); + this._updateSpreadMode(this._currentPageNumber); + } + _updateSpreadMode(pageNumber = null) { + if (!this.pdfDocument) { + return; + } + const viewer = this.viewer, + pages = this._pages; + if (this._scrollMode === _ui_utils.ScrollMode.PAGE) { + this.#ensurePageViewVisible(); + } else { + viewer.textContent = ""; + if (this._spreadMode === _ui_utils.SpreadMode.NONE) { + for (const pageView of this._pages) { + viewer.append(pageView.div); + } + } else { + const parity = this._spreadMode - 1; + let spread = null; + for (let i = 0, ii = pages.length; i < ii; ++i) { + if (spread === null) { + spread = document.createElement("div"); + spread.className = "spread"; + viewer.append(spread); + } else if (i % 2 === parity) { + spread = spread.cloneNode(false); + viewer.append(spread); + } + spread.append(pages[i].div); + } + } + } + if (!pageNumber) { + return; + } + if (this._currentScaleValue && isNaN(this._currentScaleValue)) { + this.#setScale(this._currentScaleValue, { + noScroll: true + }); + } + this._setCurrentPageNumber(pageNumber, true); + this.update(); + } + _getPageAdvance(currentPageNumber, previous = false) { + switch (this._scrollMode) { + case _ui_utils.ScrollMode.WRAPPED: + { + const { + views + } = this._getVisiblePages(), + pageLayout = new Map(); + for (const { + id, + y, + percent, + widthPercent + } of views) { + if (percent === 0 || widthPercent < 100) { + continue; + } + let yArray = pageLayout.get(y); + if (!yArray) { + pageLayout.set(y, yArray ||= []); + } + yArray.push(id); + } + for (const yArray of pageLayout.values()) { + const currentIndex = yArray.indexOf(currentPageNumber); + if (currentIndex === -1) { + continue; + } + const numPages = yArray.length; + if (numPages === 1) { + break; + } + if (previous) { + for (let i = currentIndex - 1, ii = 0; i >= ii; i--) { + const currentId = yArray[i], + expectedId = yArray[i + 1] - 1; + if (currentId < expectedId) { + return currentPageNumber - expectedId; + } + } + } else { + for (let i = currentIndex + 1, ii = numPages; i < ii; i++) { + const currentId = yArray[i], + expectedId = yArray[i - 1] + 1; + if (currentId > expectedId) { + return expectedId - currentPageNumber; + } + } + } + if (previous) { + const firstId = yArray[0]; + if (firstId < currentPageNumber) { + return currentPageNumber - firstId + 1; + } + } else { + const lastId = yArray[numPages - 1]; + if (lastId > currentPageNumber) { + return lastId - currentPageNumber + 1; + } + } + break; + } + break; + } + case _ui_utils.ScrollMode.HORIZONTAL: + { + break; + } + case _ui_utils.ScrollMode.PAGE: + case _ui_utils.ScrollMode.VERTICAL: + { + if (this._spreadMode === _ui_utils.SpreadMode.NONE) { + break; + } + const parity = this._spreadMode - 1; + if (previous && currentPageNumber % 2 !== parity) { + break; + } else if (!previous && currentPageNumber % 2 === parity) { + break; + } + const { + views + } = this._getVisiblePages(), + expectedId = previous ? currentPageNumber - 1 : currentPageNumber + 1; + for (const { + id, + percent, + widthPercent + } of views) { + if (id !== expectedId) { + continue; + } + if (percent > 0 && widthPercent === 100) { + return 2; + } + break; + } + break; + } + } + return 1; + } + nextPage() { + const currentPageNumber = this._currentPageNumber, + pagesCount = this.pagesCount; + if (currentPageNumber >= pagesCount) { + return false; + } + const advance = this._getPageAdvance(currentPageNumber, false) || 1; + this.currentPageNumber = Math.min(currentPageNumber + advance, pagesCount); + return true; + } + previousPage() { + const currentPageNumber = this._currentPageNumber; + if (currentPageNumber <= 1) { + return false; + } + const advance = this._getPageAdvance(currentPageNumber, true) || 1; + this.currentPageNumber = Math.max(currentPageNumber - advance, 1); + return true; + } + increaseScale({ + drawingDelay, + scaleFactor, + steps + } = {}) { + if (!this.pdfDocument) { + return; + } + let newScale = this._currentScale; + if (scaleFactor > 1) { + newScale = Math.round(newScale * scaleFactor * 100) / 100; + } else { + steps ??= 1; + do { + newScale = Math.ceil((newScale * _ui_utils.DEFAULT_SCALE_DELTA).toFixed(2) * 10) / 10; + } while (--steps > 0 && newScale < _ui_utils.MAX_SCALE); + } + this.#setScale(Math.min(_ui_utils.MAX_SCALE, newScale), { + noScroll: false, + drawingDelay + }); + } + decreaseScale({ + drawingDelay, + scaleFactor, + steps + } = {}) { + if (!this.pdfDocument) { + return; + } + let newScale = this._currentScale; + if (scaleFactor > 0 && scaleFactor < 1) { + newScale = Math.round(newScale * scaleFactor * 100) / 100; + } else { + steps ??= 1; + do { + newScale = Math.floor((newScale / _ui_utils.DEFAULT_SCALE_DELTA).toFixed(2) * 10) / 10; + } while (--steps > 0 && newScale > _ui_utils.MIN_SCALE); + } + this.#setScale(Math.max(_ui_utils.MIN_SCALE, newScale), { + noScroll: false, + drawingDelay + }); + } + #updateContainerHeightCss(height = this.container.clientHeight) { + if (height !== this.#previousContainerHeight) { + this.#previousContainerHeight = height; + _ui_utils.docStyle.setProperty("--viewer-container-height", `${height}px`); + } + } + #resizeObserverCallback(entries) { + for (const entry of entries) { + if (entry.target === this.container) { + this.#updateContainerHeightCss(Math.floor(entry.borderBoxSize[0].blockSize)); + this.#containerTopLeft = null; + break; + } + } + } + get containerTopLeft() { + return this.#containerTopLeft ||= [this.container.offsetTop, this.container.offsetLeft]; + } + get annotationEditorMode() { + return this.#annotationEditorUIManager ? this.#annotationEditorMode : _pdfjsLib.AnnotationEditorType.DISABLE; + } + set annotationEditorMode(mode) { + if (!this.#annotationEditorUIManager) { + throw new Error(`The AnnotationEditor is not enabled.`); + } + if (this.#annotationEditorMode === mode) { + return; + } + if (!isValidAnnotationEditorMode(mode)) { + throw new Error(`Invalid AnnotationEditor mode: ${mode}`); + } + if (!this.pdfDocument) { + return; + } + this.#annotationEditorMode = mode; + this.eventBus.dispatch("annotationeditormodechanged", { + source: this, + mode + }); + this.#annotationEditorUIManager.updateMode(mode); + } + set annotationEditorParams({ + type, + value + }) { + if (!this.#annotationEditorUIManager) { + throw new Error(`The AnnotationEditor is not enabled.`); + } + this.#annotationEditorUIManager.updateParams(type, value); + } + refresh(noUpdate = false, updateArgs = Object.create(null)) { + if (!this.pdfDocument) { + return; + } + for (const pageView of this._pages) { + pageView.update(updateArgs); + } + if (this.#scaleTimeoutId !== null) { + clearTimeout(this.#scaleTimeoutId); + this.#scaleTimeoutId = null; + } + if (!noUpdate) { + this.update(); + } + } +} +exports.PDFViewer = PDFViewer; + +/***/ }), +/* 30 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.NullL10n = void 0; +exports.fixupLangCode = fixupLangCode; +exports.getL10nFallback = getL10nFallback; +const DEFAULT_L10N_STRINGS = { + of_pages: "of {{pagesCount}}", + page_of_pages: "({{pageNumber}} of {{pagesCount}})", + document_properties_kb: "{{size_kb}} KB ({{size_b}} bytes)", + document_properties_mb: "{{size_mb}} MB ({{size_b}} bytes)", + document_properties_date_string: "{{date}}, {{time}}", + document_properties_page_size_unit_inches: "in", + document_properties_page_size_unit_millimeters: "mm", + document_properties_page_size_orientation_portrait: "portrait", + document_properties_page_size_orientation_landscape: "landscape", + document_properties_page_size_name_a3: "A3", + document_properties_page_size_name_a4: "A4", + document_properties_page_size_name_letter: "Letter", + document_properties_page_size_name_legal: "Legal", + document_properties_page_size_dimension_string: "{{width}} × {{height}} {{unit}} ({{orientation}})", + document_properties_page_size_dimension_name_string: "{{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})", + document_properties_linearized_yes: "Yes", + document_properties_linearized_no: "No", + additional_layers: "Additional Layers", + page_landmark: "Page {{page}}", + thumb_page_title: "Page {{page}}", + thumb_page_canvas: "Thumbnail of Page {{page}}", + find_reached_top: "Reached top of document, continued from bottom", + find_reached_bottom: "Reached end of document, continued from top", + "find_match_count[one]": "{{current}} of {{total}} match", + "find_match_count[other]": "{{current}} of {{total}} matches", + "find_match_count_limit[one]": "More than {{limit}} match", + "find_match_count_limit[other]": "More than {{limit}} matches", + find_not_found: "Phrase not found", + page_scale_width: "Page Width", + page_scale_fit: "Page Fit", + page_scale_auto: "Automatic Zoom", + page_scale_actual: "Actual Size", + page_scale_percent: "{{scale}}%", + loading_error: "An error occurred while loading the PDF.", + invalid_file_error: "Invalid or corrupted PDF file.", + missing_file_error: "Missing PDF file.", + unexpected_response_error: "Unexpected server response.", + rendering_error: "An error occurred while rendering the page.", + printing_not_supported: "Warning: Printing is not fully supported by this browser.", + printing_not_ready: "Warning: The PDF is not fully loaded for printing.", + web_fonts_disabled: "Web fonts are disabled: unable to use embedded PDF fonts.", + free_text2_default_content: "Start typing…", + editor_free_text2_aria_label: "Text Editor", + editor_ink2_aria_label: "Draw Editor", + editor_ink_canvas_aria_label: "User-created image" +}; +{ + DEFAULT_L10N_STRINGS.print_progress_percent = "{{progress}}%"; +} +function getL10nFallback(key, args) { + switch (key) { + case "find_match_count": + key = `find_match_count[${args.total === 1 ? "one" : "other"}]`; + break; + case "find_match_count_limit": + key = `find_match_count_limit[${args.limit === 1 ? "one" : "other"}]`; + break; + } + return DEFAULT_L10N_STRINGS[key] || ""; +} +const PARTIAL_LANG_CODES = { + en: "en-US", + es: "es-ES", + fy: "fy-NL", + ga: "ga-IE", + gu: "gu-IN", + hi: "hi-IN", + hy: "hy-AM", + nb: "nb-NO", + ne: "ne-NP", + nn: "nn-NO", + pa: "pa-IN", + pt: "pt-PT", + sv: "sv-SE", + zh: "zh-CN" +}; +function fixupLangCode(langCode) { + return PARTIAL_LANG_CODES[langCode?.toLowerCase()] || langCode; +} +function formatL10nValue(text, args) { + if (!args) { + return text; + } + return text.replaceAll(/\{\{\s*(\w+)\s*\}\}/g, (all, name) => { + return name in args ? args[name] : "{{" + name + "}}"; + }); +} +const NullL10n = { + async getLanguage() { + return "en-us"; + }, + async getDirection() { + return "ltr"; + }, + async get(key, args = null, fallback = getL10nFallback(key, args)) { + return formatL10nValue(fallback, args); + }, + async translate(element) {} +}; +exports.NullL10n = NullL10n; + +/***/ }), +/* 31 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFPageView = void 0; +var _pdfjsLib = __webpack_require__(4); +var _ui_utils = __webpack_require__(3); +var _annotation_editor_layer_builder = __webpack_require__(32); +var _annotation_layer_builder = __webpack_require__(33); +var _app_options = __webpack_require__(5); +var _l10n_utils = __webpack_require__(30); +var _pdf_link_service = __webpack_require__(7); +var _struct_tree_layer_builder = __webpack_require__(34); +var _text_accessibility = __webpack_require__(35); +var _text_highlighter = __webpack_require__(36); +var _text_layer_builder = __webpack_require__(37); +var _xfa_layer_builder = __webpack_require__(38); +const MAX_CANVAS_PIXELS = _app_options.compatibilityParams.maxCanvasPixels || 16777216; +const DEFAULT_LAYER_PROPERTIES = () => { + return null; +}; +class PDFPageView { + #annotationMode = _pdfjsLib.AnnotationMode.ENABLE_FORMS; + #layerProperties = null; + #loadingId = null; + #previousRotation = null; + #renderingState = _ui_utils.RenderingStates.INITIAL; + #useThumbnailCanvas = { + initialOptionalContent: true, + regularAnnotations: true + }; + constructor(options) { + const container = options.container; + const defaultViewport = options.defaultViewport; + this.id = options.id; + this.renderingId = "page" + this.id; + this.#layerProperties = options.layerProperties || DEFAULT_LAYER_PROPERTIES; + this.pdfPage = null; + this.pageLabel = null; + this.rotation = 0; + this.scale = options.scale || _ui_utils.DEFAULT_SCALE; + this.viewport = defaultViewport; + this.pdfPageRotate = defaultViewport.rotation; + this._optionalContentConfigPromise = options.optionalContentConfigPromise || null; + this.hasRestrictedScaling = false; + this.textLayerMode = options.textLayerMode ?? _ui_utils.TextLayerMode.ENABLE; + this.#annotationMode = options.annotationMode ?? _pdfjsLib.AnnotationMode.ENABLE_FORMS; + this.imageResourcesPath = options.imageResourcesPath || ""; + this.useOnlyCssZoom = options.useOnlyCssZoom || false; + this.isOffscreenCanvasSupported = options.isOffscreenCanvasSupported ?? true; + this.maxCanvasPixels = options.maxCanvasPixels || MAX_CANVAS_PIXELS; + this.pageColors = options.pageColors || null; + this.eventBus = options.eventBus; + this.renderingQueue = options.renderingQueue; + this.renderer = options.renderer || _ui_utils.RendererType.CANVAS; + this.l10n = options.l10n || _l10n_utils.NullL10n; + this.paintTask = null; + this.paintedViewportMap = new WeakMap(); + this.resume = null; + this._renderError = null; + this._isStandalone = !this.renderingQueue?.hasViewer(); + this._annotationCanvasMap = null; + this.annotationLayer = null; + this.annotationEditorLayer = null; + this.textLayer = null; + this.zoomLayer = null; + this.xfaLayer = null; + this.structTreeLayer = null; + const div = document.createElement("div"); + div.className = "page"; + div.setAttribute("data-page-number", this.id); + div.setAttribute("role", "region"); + this.l10n.get("page_landmark", { + page: this.id + }).then(msg => { + div.setAttribute("aria-label", msg); + }); + this.div = div; + this.#setDimensions(); + container?.append(div); + if (this._isStandalone) { + container?.style.setProperty("--scale-factor", this.scale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS); + const { + optionalContentConfigPromise + } = options; + if (optionalContentConfigPromise) { + optionalContentConfigPromise.then(optionalContentConfig => { + if (optionalContentConfigPromise !== this._optionalContentConfigPromise) { + return; + } + this.#useThumbnailCanvas.initialOptionalContent = optionalContentConfig.hasInitialVisibility; + }); + } + } + } + get renderingState() { + return this.#renderingState; + } + set renderingState(state) { + if (state === this.#renderingState) { + return; + } + this.#renderingState = state; + if (this.#loadingId) { + clearTimeout(this.#loadingId); + this.#loadingId = null; + } + switch (state) { + case _ui_utils.RenderingStates.PAUSED: + this.div.classList.remove("loading"); + break; + case _ui_utils.RenderingStates.RUNNING: + this.div.classList.add("loadingIcon"); + this.#loadingId = setTimeout(() => { + this.div.classList.add("loading"); + this.#loadingId = null; + }, 0); + break; + case _ui_utils.RenderingStates.INITIAL: + case _ui_utils.RenderingStates.FINISHED: + this.div.classList.remove("loadingIcon", "loading"); + break; + } + } + #setDimensions() { + const { + viewport + } = this; + if (this.pdfPage) { + if (this.#previousRotation === viewport.rotation) { + return; + } + this.#previousRotation = viewport.rotation; + } + (0, _pdfjsLib.setLayerDimensions)(this.div, viewport, true, false); + } + setPdfPage(pdfPage) { + this.pdfPage = pdfPage; + this.pdfPageRotate = pdfPage.rotate; + const totalRotation = (this.rotation + this.pdfPageRotate) % 360; + this.viewport = pdfPage.getViewport({ + scale: this.scale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS, + rotation: totalRotation + }); + this.#setDimensions(); + this.reset(); + } + destroy() { + this.reset(); + this.pdfPage?.cleanup(); + } + get _textHighlighter() { + return (0, _pdfjsLib.shadow)(this, "_textHighlighter", new _text_highlighter.TextHighlighter({ + pageIndex: this.id - 1, + eventBus: this.eventBus, + findController: this.#layerProperties().findController + })); + } + async #renderAnnotationLayer() { + let error = null; + try { + await this.annotationLayer.render(this.viewport, "display"); + } catch (ex) { + console.error(`#renderAnnotationLayer: "${ex}".`); + error = ex; + } finally { + this.eventBus.dispatch("annotationlayerrendered", { + source: this, + pageNumber: this.id, + error + }); + } + } + async #renderAnnotationEditorLayer() { + let error = null; + try { + await this.annotationEditorLayer.render(this.viewport, "display"); + } catch (ex) { + console.error(`#renderAnnotationEditorLayer: "${ex}".`); + error = ex; + } finally { + this.eventBus.dispatch("annotationeditorlayerrendered", { + source: this, + pageNumber: this.id, + error + }); + } + } + async #renderXfaLayer() { + let error = null; + try { + const result = await this.xfaLayer.render(this.viewport, "display"); + if (result?.textDivs && this._textHighlighter) { + this.#buildXfaTextContentItems(result.textDivs); + } + } catch (ex) { + console.error(`#renderXfaLayer: "${ex}".`); + error = ex; + } finally { + this.eventBus.dispatch("xfalayerrendered", { + source: this, + pageNumber: this.id, + error + }); + } + } + async #renderTextLayer() { + const { + pdfPage, + textLayer, + viewport + } = this; + if (!textLayer) { + return; + } + let error = null; + try { + if (!textLayer.renderingDone) { + const readableStream = pdfPage.streamTextContent({ + includeMarkedContent: true + }); + textLayer.setTextContentSource(readableStream); + } + await textLayer.render(viewport); + } catch (ex) { + if (ex instanceof _pdfjsLib.AbortException) { + return; + } + console.error(`#renderTextLayer: "${ex}".`); + error = ex; + } + this.eventBus.dispatch("textlayerrendered", { + source: this, + pageNumber: this.id, + numTextDivs: textLayer.numTextDivs, + error + }); + this.#renderStructTreeLayer(); + } + async #renderStructTreeLayer() { + if (!this.textLayer) { + return; + } + this.structTreeLayer ||= new _struct_tree_layer_builder.StructTreeLayerBuilder(); + const tree = await (!this.structTreeLayer.renderingDone ? this.pdfPage.getStructTree() : null); + const treeDom = this.structTreeLayer?.render(tree); + if (treeDom) { + this.canvas?.append(treeDom); + } + this.structTreeLayer?.show(); + } + async #buildXfaTextContentItems(textDivs) { + const text = await this.pdfPage.getTextContent(); + const items = []; + for (const item of text.items) { + items.push(item.str); + } + this._textHighlighter.setTextMapping(textDivs, items); + this._textHighlighter.enable(); + } + _resetZoomLayer(removeFromDOM = false) { + if (!this.zoomLayer) { + return; + } + const zoomLayerCanvas = this.zoomLayer.firstChild; + this.paintedViewportMap.delete(zoomLayerCanvas); + zoomLayerCanvas.width = 0; + zoomLayerCanvas.height = 0; + if (removeFromDOM) { + this.zoomLayer.remove(); + } + this.zoomLayer = null; + } + reset({ + keepZoomLayer = false, + keepAnnotationLayer = false, + keepAnnotationEditorLayer = false, + keepXfaLayer = false, + keepTextLayer = false + } = {}) { + this.cancelRendering({ + keepAnnotationLayer, + keepAnnotationEditorLayer, + keepXfaLayer, + keepTextLayer + }); + this.renderingState = _ui_utils.RenderingStates.INITIAL; + const div = this.div; + const childNodes = div.childNodes, + zoomLayerNode = keepZoomLayer && this.zoomLayer || null, + annotationLayerNode = keepAnnotationLayer && this.annotationLayer?.div || null, + annotationEditorLayerNode = keepAnnotationEditorLayer && this.annotationEditorLayer?.div || null, + xfaLayerNode = keepXfaLayer && this.xfaLayer?.div || null, + textLayerNode = keepTextLayer && this.textLayer?.div || null; + for (let i = childNodes.length - 1; i >= 0; i--) { + const node = childNodes[i]; + switch (node) { + case zoomLayerNode: + case annotationLayerNode: + case annotationEditorLayerNode: + case xfaLayerNode: + case textLayerNode: + continue; + } + node.remove(); + } + div.removeAttribute("data-loaded"); + if (annotationLayerNode) { + this.annotationLayer.hide(); + } + if (annotationEditorLayerNode) { + this.annotationEditorLayer.hide(); + } + if (xfaLayerNode) { + this.xfaLayer.hide(); + } + if (textLayerNode) { + this.textLayer.hide(); + } + this.structTreeLayer?.hide(); + if (!zoomLayerNode) { + if (this.canvas) { + this.paintedViewportMap.delete(this.canvas); + this.canvas.width = 0; + this.canvas.height = 0; + delete this.canvas; + } + this._resetZoomLayer(); + } + if (this.svg) { + this.paintedViewportMap.delete(this.svg); + delete this.svg; + } + } + update({ + scale = 0, + rotation = null, + optionalContentConfigPromise = null, + drawingDelay = -1 + }) { + this.scale = scale || this.scale; + if (typeof rotation === "number") { + this.rotation = rotation; + } + if (optionalContentConfigPromise instanceof Promise) { + this._optionalContentConfigPromise = optionalContentConfigPromise; + optionalContentConfigPromise.then(optionalContentConfig => { + if (optionalContentConfigPromise !== this._optionalContentConfigPromise) { + return; + } + this.#useThumbnailCanvas.initialOptionalContent = optionalContentConfig.hasInitialVisibility; + }); + } + const totalRotation = (this.rotation + this.pdfPageRotate) % 360; + this.viewport = this.viewport.clone({ + scale: this.scale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS, + rotation: totalRotation + }); + this.#setDimensions(); + if (this._isStandalone) { + this.div.parentNode?.style.setProperty("--scale-factor", this.viewport.scale); + } + if (this.svg) { + this.cssTransform({ + target: this.svg, + redrawAnnotationLayer: true, + redrawAnnotationEditorLayer: true, + redrawXfaLayer: true, + redrawTextLayer: true + }); + this.eventBus.dispatch("pagerendered", { + source: this, + pageNumber: this.id, + cssTransform: true, + timestamp: performance.now(), + error: this._renderError + }); + return; + } + let isScalingRestricted = false; + if (this.canvas && this.maxCanvasPixels > 0) { + const outputScale = this.outputScale; + if ((Math.floor(this.viewport.width) * outputScale.sx | 0) * (Math.floor(this.viewport.height) * outputScale.sy | 0) > this.maxCanvasPixels) { + isScalingRestricted = true; + } + } + const onlyCssZoom = this.useOnlyCssZoom || this.hasRestrictedScaling && isScalingRestricted; + const postponeDrawing = !onlyCssZoom && drawingDelay >= 0 && drawingDelay < 1000; + if (this.canvas) { + if (postponeDrawing || onlyCssZoom) { + if (postponeDrawing && this.renderingState !== _ui_utils.RenderingStates.FINISHED) { + this.cancelRendering({ + keepZoomLayer: true, + keepAnnotationLayer: true, + keepAnnotationEditorLayer: true, + keepXfaLayer: true, + keepTextLayer: true, + cancelExtraDelay: drawingDelay + }); + this.renderingState = _ui_utils.RenderingStates.FINISHED; + } + this.cssTransform({ + target: this.canvas, + redrawAnnotationLayer: true, + redrawAnnotationEditorLayer: true, + redrawXfaLayer: true, + redrawTextLayer: !postponeDrawing, + hideTextLayer: postponeDrawing + }); + this.eventBus.dispatch("pagerendered", { + source: this, + pageNumber: this.id, + cssTransform: true, + timestamp: performance.now(), + error: this._renderError + }); + return; + } + if (!this.zoomLayer && !this.canvas.hidden) { + this.zoomLayer = this.canvas.parentNode; + this.zoomLayer.style.position = "absolute"; + } + } + if (this.zoomLayer) { + this.cssTransform({ + target: this.zoomLayer.firstChild + }); + } + this.reset({ + keepZoomLayer: true, + keepAnnotationLayer: true, + keepAnnotationEditorLayer: true, + keepXfaLayer: true, + keepTextLayer: true + }); + } + cancelRendering({ + keepAnnotationLayer = false, + keepAnnotationEditorLayer = false, + keepXfaLayer = false, + keepTextLayer = false, + cancelExtraDelay = 0 + } = {}) { + if (this.paintTask) { + this.paintTask.cancel(cancelExtraDelay); + this.paintTask = null; + } + this.resume = null; + if (this.textLayer && (!keepTextLayer || !this.textLayer.div)) { + this.textLayer.cancel(); + this.textLayer = null; + } + if (this.structTreeLayer && !this.textLayer) { + this.structTreeLayer = null; + } + if (this.annotationLayer && (!keepAnnotationLayer || !this.annotationLayer.div)) { + this.annotationLayer.cancel(); + this.annotationLayer = null; + this._annotationCanvasMap = null; + } + if (this.annotationEditorLayer && (!keepAnnotationEditorLayer || !this.annotationEditorLayer.div)) { + this.annotationEditorLayer.cancel(); + this.annotationEditorLayer = null; + } + if (this.xfaLayer && (!keepXfaLayer || !this.xfaLayer.div)) { + this.xfaLayer.cancel(); + this.xfaLayer = null; + this._textHighlighter?.disable(); + } + } + cssTransform({ + target, + redrawAnnotationLayer = false, + redrawAnnotationEditorLayer = false, + redrawXfaLayer = false, + redrawTextLayer = false, + hideTextLayer = false + }) { + if (target instanceof HTMLCanvasElement) { + if (!target.hasAttribute("zooming")) { + target.setAttribute("zooming", true); + const { + style + } = target; + style.width = style.height = ""; + } + } else { + const div = this.div; + const { + width, + height + } = this.viewport; + target.style.width = target.parentNode.style.width = div.style.width = Math.floor(width) + "px"; + target.style.height = target.parentNode.style.height = div.style.height = Math.floor(height) + "px"; + } + const originalViewport = this.paintedViewportMap.get(target); + if (this.viewport !== originalViewport) { + const relativeRotation = this.viewport.rotation - originalViewport.rotation; + const absRotation = Math.abs(relativeRotation); + let scaleX = 1, + scaleY = 1; + if (absRotation === 90 || absRotation === 270) { + const { + width, + height + } = this.viewport; + scaleX = height / width; + scaleY = width / height; + } + target.style.transform = `rotate(${relativeRotation}deg) scale(${scaleX}, ${scaleY})`; + } + if (redrawAnnotationLayer && this.annotationLayer) { + this.#renderAnnotationLayer(); + } + if (redrawAnnotationEditorLayer && this.annotationEditorLayer) { + this.#renderAnnotationEditorLayer(); + } + if (redrawXfaLayer && this.xfaLayer) { + this.#renderXfaLayer(); + } + if (this.textLayer) { + if (hideTextLayer) { + this.textLayer.hide(); + this.structTreeLayer?.hide(); + } else if (redrawTextLayer) { + this.#renderTextLayer(); + } + } + } + get width() { + return this.viewport.width; + } + get height() { + return this.viewport.height; + } + getPagePoint(x, y) { + return this.viewport.convertToPdfPoint(x, y); + } + draw() { + if (this.renderingState !== _ui_utils.RenderingStates.INITIAL) { + console.error("Must be in new state before drawing"); + this.reset(); + } + const { + div, + pdfPage + } = this; + if (!pdfPage) { + this.renderingState = _ui_utils.RenderingStates.FINISHED; + return Promise.reject(new Error("pdfPage is not loaded")); + } + this.renderingState = _ui_utils.RenderingStates.RUNNING; + const canvasWrapper = document.createElement("div"); + canvasWrapper.classList.add("canvasWrapper"); + div.append(canvasWrapper); + if (!this.textLayer && this.textLayerMode !== _ui_utils.TextLayerMode.DISABLE && !pdfPage.isPureXfa) { + this._accessibilityManager ||= new _text_accessibility.TextAccessibilityManager(); + this.textLayer = new _text_layer_builder.TextLayerBuilder({ + highlighter: this._textHighlighter, + accessibilityManager: this._accessibilityManager, + isOffscreenCanvasSupported: this.isOffscreenCanvasSupported + }); + div.append(this.textLayer.div); + } + if (!this.annotationLayer && this.#annotationMode !== _pdfjsLib.AnnotationMode.DISABLE) { + const { + annotationStorage, + downloadManager, + enableScripting, + fieldObjectsPromise, + hasJSActionsPromise, + linkService + } = this.#layerProperties(); + this._annotationCanvasMap ||= new Map(); + this.annotationLayer = new _annotation_layer_builder.AnnotationLayerBuilder({ + pageDiv: div, + pdfPage, + annotationStorage, + imageResourcesPath: this.imageResourcesPath, + renderForms: this.#annotationMode === _pdfjsLib.AnnotationMode.ENABLE_FORMS, + linkService, + downloadManager, + l10n: this.l10n, + enableScripting, + hasJSActionsPromise, + fieldObjectsPromise, + annotationCanvasMap: this._annotationCanvasMap, + accessibilityManager: this._accessibilityManager + }); + } + let renderContinueCallback = null; + if (this.renderingQueue) { + renderContinueCallback = cont => { + if (!this.renderingQueue.isHighestPriority(this)) { + this.renderingState = _ui_utils.RenderingStates.PAUSED; + this.resume = () => { + this.renderingState = _ui_utils.RenderingStates.RUNNING; + cont(); + }; + return; + } + cont(); + }; + } + const finishPaintTask = async (error = null) => { + if (paintTask === this.paintTask) { + this.paintTask = null; + } + if (error instanceof _pdfjsLib.RenderingCancelledException) { + this._renderError = null; + return; + } + this._renderError = error; + this.renderingState = _ui_utils.RenderingStates.FINISHED; + this._resetZoomLayer(true); + this.#useThumbnailCanvas.regularAnnotations = !paintTask.separateAnnots; + this.eventBus.dispatch("pagerendered", { + source: this, + pageNumber: this.id, + cssTransform: false, + timestamp: performance.now(), + error: this._renderError + }); + if (error) { + throw error; + } + }; + const paintTask = this.renderer === _ui_utils.RendererType.SVG ? this.paintOnSvg(canvasWrapper) : this.paintOnCanvas(canvasWrapper); + paintTask.onRenderContinue = renderContinueCallback; + this.paintTask = paintTask; + const resultPromise = paintTask.promise.then(() => { + return finishPaintTask(null).then(async () => { + this.#renderTextLayer(); + if (this.annotationLayer) { + await this.#renderAnnotationLayer(); + } + if (!this.annotationEditorLayer) { + const { + annotationEditorUIManager + } = this.#layerProperties(); + if (!annotationEditorUIManager) { + return; + } + this.annotationEditorLayer = new _annotation_editor_layer_builder.AnnotationEditorLayerBuilder({ + uiManager: annotationEditorUIManager, + pageDiv: div, + pdfPage, + l10n: this.l10n, + accessibilityManager: this._accessibilityManager + }); + } + this.#renderAnnotationEditorLayer(); + }); + }, function (reason) { + return finishPaintTask(reason); + }); + if (pdfPage.isPureXfa) { + if (!this.xfaLayer) { + const { + annotationStorage, + linkService + } = this.#layerProperties(); + this.xfaLayer = new _xfa_layer_builder.XfaLayerBuilder({ + pageDiv: div, + pdfPage, + annotationStorage, + linkService + }); + } else if (this.xfaLayer.div) { + div.append(this.xfaLayer.div); + } + this.#renderXfaLayer(); + } + div.setAttribute("data-loaded", true); + this.eventBus.dispatch("pagerender", { + source: this, + pageNumber: this.id + }); + return resultPromise; + } + paintOnCanvas(canvasWrapper) { + const renderCapability = (0, _pdfjsLib.createPromiseCapability)(); + const result = { + promise: renderCapability.promise, + onRenderContinue(cont) { + cont(); + }, + cancel(extraDelay = 0) { + renderTask.cancel(extraDelay); + }, + get separateAnnots() { + return renderTask.separateAnnots; + } + }; + const viewport = this.viewport; + const { + width, + height + } = viewport; + const canvas = document.createElement("canvas"); + canvas.setAttribute("role", "presentation"); + canvas.hidden = true; + let isCanvasHidden = true; + const hasHCM = !!(this.pageColors?.background && this.pageColors?.foreground); + const showCanvas = function (isLastShow) { + if (isCanvasHidden && (!hasHCM || isLastShow)) { + canvas.hidden = false; + isCanvasHidden = false; + } + }; + canvasWrapper.append(canvas); + this.canvas = canvas; + const ctx = canvas.getContext("2d", { + alpha: false + }); + const outputScale = this.outputScale = new _ui_utils.OutputScale(); + if (this.useOnlyCssZoom) { + const actualSizeViewport = viewport.clone({ + scale: _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS + }); + outputScale.sx *= actualSizeViewport.width / width; + outputScale.sy *= actualSizeViewport.height / height; + } + if (this.maxCanvasPixels > 0) { + const pixelsInViewport = width * height; + const maxScale = Math.sqrt(this.maxCanvasPixels / pixelsInViewport); + if (outputScale.sx > maxScale || outputScale.sy > maxScale) { + outputScale.sx = maxScale; + outputScale.sy = maxScale; + this.hasRestrictedScaling = true; + } else { + this.hasRestrictedScaling = false; + } + } + const sfx = (0, _ui_utils.approximateFraction)(outputScale.sx); + const sfy = (0, _ui_utils.approximateFraction)(outputScale.sy); + canvas.width = (0, _ui_utils.roundToDivide)(viewport.width * outputScale.sx, sfx[0]); + canvas.height = (0, _ui_utils.roundToDivide)(viewport.height * outputScale.sy, sfy[0]); + const { + style + } = canvas; + style.width = (0, _ui_utils.roundToDivide)(viewport.width, sfx[1]) + "px"; + style.height = (0, _ui_utils.roundToDivide)(viewport.height, sfy[1]) + "px"; + this.paintedViewportMap.set(canvas, viewport); + const transform = outputScale.scaled ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0] : null; + const renderContext = { + canvasContext: ctx, + transform, + viewport, + annotationMode: this.#annotationMode, + optionalContentConfigPromise: this._optionalContentConfigPromise, + annotationCanvasMap: this._annotationCanvasMap, + pageColors: this.pageColors + }; + const renderTask = this.pdfPage.render(renderContext); + renderTask.onContinue = function (cont) { + showCanvas(false); + if (result.onRenderContinue) { + result.onRenderContinue(cont); + } else { + cont(); + } + }; + renderTask.promise.then(function () { + showCanvas(true); + renderCapability.resolve(); + }, function (error) { + if (!(error instanceof _pdfjsLib.RenderingCancelledException)) { + showCanvas(true); + } + renderCapability.reject(error); + }); + return result; + } + paintOnSvg(wrapper) { + let cancelled = false; + const ensureNotCancelled = () => { + if (cancelled) { + throw new _pdfjsLib.RenderingCancelledException(`Rendering cancelled, page ${this.id}`, "svg"); + } + }; + const pdfPage = this.pdfPage; + const actualSizeViewport = this.viewport.clone({ + scale: _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS + }); + const promise = pdfPage.getOperatorList({ + annotationMode: this.#annotationMode + }).then(opList => { + ensureNotCancelled(); + const svgGfx = new _pdfjsLib.SVGGraphics(pdfPage.commonObjs, pdfPage.objs); + return svgGfx.getSVG(opList, actualSizeViewport).then(svg => { + ensureNotCancelled(); + this.svg = svg; + this.paintedViewportMap.set(svg, actualSizeViewport); + svg.style.width = wrapper.style.width; + svg.style.height = wrapper.style.height; + this.renderingState = _ui_utils.RenderingStates.FINISHED; + wrapper.append(svg); + }); + }); + return { + promise, + onRenderContinue(cont) { + cont(); + }, + cancel() { + cancelled = true; + }, + get separateAnnots() { + return false; + } + }; + } + setPageLabel(label) { + this.pageLabel = typeof label === "string" ? label : null; + if (this.pageLabel !== null) { + this.div.setAttribute("data-page-label", this.pageLabel); + } else { + this.div.removeAttribute("data-page-label"); + } + } + get thumbnailCanvas() { + const { + initialOptionalContent, + regularAnnotations + } = this.#useThumbnailCanvas; + return initialOptionalContent && regularAnnotations ? this.canvas : null; + } +} +exports.PDFPageView = PDFPageView; + +/***/ }), +/* 32 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnnotationEditorLayerBuilder = void 0; +var _pdfjsLib = __webpack_require__(4); +var _l10n_utils = __webpack_require__(30); +class AnnotationEditorLayerBuilder { + #uiManager; + constructor(options) { + this.pageDiv = options.pageDiv; + this.pdfPage = options.pdfPage; + this.accessibilityManager = options.accessibilityManager; + this.l10n = options.l10n || _l10n_utils.NullL10n; + this.annotationEditorLayer = null; + this.div = null; + this._cancelled = false; + this.#uiManager = options.uiManager; + } + async render(viewport, intent = "display") { + if (intent !== "display") { + return; + } + if (this._cancelled) { + return; + } + const clonedViewport = viewport.clone({ + dontFlip: true + }); + if (this.div) { + this.annotationEditorLayer.update({ + viewport: clonedViewport + }); + this.show(); + return; + } + const div = this.div = document.createElement("div"); + div.className = "annotationEditorLayer"; + div.tabIndex = 0; + div.hidden = true; + this.pageDiv.append(div); + this.annotationEditorLayer = new _pdfjsLib.AnnotationEditorLayer({ + uiManager: this.#uiManager, + div, + accessibilityManager: this.accessibilityManager, + pageIndex: this.pdfPage.pageNumber - 1, + l10n: this.l10n, + viewport: clonedViewport + }); + const parameters = { + viewport: clonedViewport, + div, + annotations: null, + intent + }; + this.annotationEditorLayer.render(parameters); + this.show(); + } + cancel() { + this._cancelled = true; + if (!this.div) { + return; + } + this.pageDiv = null; + this.annotationEditorLayer.destroy(); + this.div.remove(); + } + hide() { + if (!this.div) { + return; + } + this.div.hidden = true; + } + show() { + if (!this.div || this.annotationEditorLayer.isEmpty) { + return; + } + this.div.hidden = false; + } +} +exports.AnnotationEditorLayerBuilder = AnnotationEditorLayerBuilder; + +/***/ }), +/* 33 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnnotationLayerBuilder = void 0; +var _pdfjsLib = __webpack_require__(4); +var _l10n_utils = __webpack_require__(30); +var _ui_utils = __webpack_require__(3); +class AnnotationLayerBuilder { + #numAnnotations = 0; + #onPresentationModeChanged = null; + constructor({ + pageDiv, + pdfPage, + linkService, + downloadManager, + annotationStorage = null, + imageResourcesPath = "", + renderForms = true, + l10n = _l10n_utils.NullL10n, + enableScripting = false, + hasJSActionsPromise = null, + fieldObjectsPromise = null, + annotationCanvasMap = null, + accessibilityManager = null + }) { + this.pageDiv = pageDiv; + this.pdfPage = pdfPage; + this.linkService = linkService; + this.downloadManager = downloadManager; + this.imageResourcesPath = imageResourcesPath; + this.renderForms = renderForms; + this.l10n = l10n; + this.annotationStorage = annotationStorage; + this.enableScripting = enableScripting; + this._hasJSActionsPromise = hasJSActionsPromise || Promise.resolve(false); + this._fieldObjectsPromise = fieldObjectsPromise || Promise.resolve(null); + this._annotationCanvasMap = annotationCanvasMap; + this._accessibilityManager = accessibilityManager; + this.div = null; + this._cancelled = false; + this._eventBus = linkService.eventBus; + } + async render(viewport, intent = "display") { + if (this.div) { + if (this._cancelled || this.#numAnnotations === 0) { + return; + } + _pdfjsLib.AnnotationLayer.update({ + viewport: viewport.clone({ + dontFlip: true + }), + div: this.div, + annotationCanvasMap: this._annotationCanvasMap + }); + return; + } + const [annotations, hasJSActions, fieldObjects] = await Promise.all([this.pdfPage.getAnnotations({ + intent + }), this._hasJSActionsPromise, this._fieldObjectsPromise]); + if (this._cancelled) { + return; + } + this.#numAnnotations = annotations.length; + this.div = document.createElement("div"); + this.div.className = "annotationLayer"; + this.pageDiv.append(this.div); + if (this.#numAnnotations === 0) { + this.hide(); + return; + } + _pdfjsLib.AnnotationLayer.render({ + viewport: viewport.clone({ + dontFlip: true + }), + div: this.div, + annotations, + page: this.pdfPage, + imageResourcesPath: this.imageResourcesPath, + renderForms: this.renderForms, + linkService: this.linkService, + downloadManager: this.downloadManager, + annotationStorage: this.annotationStorage, + enableScripting: this.enableScripting, + hasJSActions, + fieldObjects, + annotationCanvasMap: this._annotationCanvasMap, + accessibilityManager: this._accessibilityManager + }); + this.l10n.translate(this.div); + if (this.linkService.isInPresentationMode) { + this.#updatePresentationModeState(_ui_utils.PresentationModeState.FULLSCREEN); + } + if (!this.#onPresentationModeChanged) { + this.#onPresentationModeChanged = evt => { + this.#updatePresentationModeState(evt.state); + }; + this._eventBus?._on("presentationmodechanged", this.#onPresentationModeChanged); + } + } + cancel() { + this._cancelled = true; + if (this.#onPresentationModeChanged) { + this._eventBus?._off("presentationmodechanged", this.#onPresentationModeChanged); + this.#onPresentationModeChanged = null; + } + } + hide() { + if (!this.div) { + return; + } + this.div.hidden = true; + } + #updatePresentationModeState(state) { + if (!this.div) { + return; + } + let disableFormElements = false; + switch (state) { + case _ui_utils.PresentationModeState.FULLSCREEN: + disableFormElements = true; + break; + case _ui_utils.PresentationModeState.NORMAL: + break; + default: + return; + } + for (const section of this.div.childNodes) { + if (section.hasAttribute("data-internal-link")) { + continue; + } + section.inert = disableFormElements; + } + } +} +exports.AnnotationLayerBuilder = AnnotationLayerBuilder; + +/***/ }), +/* 34 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.StructTreeLayerBuilder = void 0; +const PDF_ROLE_TO_HTML_ROLE = { + Document: null, + DocumentFragment: null, + Part: "group", + Sect: "group", + Div: "group", + Aside: "note", + NonStruct: "none", + P: null, + H: "heading", + Title: null, + FENote: "note", + Sub: "group", + Lbl: null, + Span: null, + Em: null, + Strong: null, + Link: "link", + Annot: "note", + Form: "form", + Ruby: null, + RB: null, + RT: null, + RP: null, + Warichu: null, + WT: null, + WP: null, + L: "list", + LI: "listitem", + LBody: null, + Table: "table", + TR: "row", + TH: "columnheader", + TD: "cell", + THead: "columnheader", + TBody: null, + TFoot: null, + Caption: null, + Figure: "figure", + Formula: null, + Artifact: null +}; +const HEADING_PATTERN = /^H(\d+)$/; +class StructTreeLayerBuilder { + #treeDom = undefined; + get renderingDone() { + return this.#treeDom !== undefined; + } + render(structTree) { + if (this.#treeDom !== undefined) { + return this.#treeDom; + } + const treeDom = this.#walk(structTree); + treeDom?.classList.add("structTree"); + return this.#treeDom = treeDom; + } + hide() { + if (this.#treeDom && !this.#treeDom.hidden) { + this.#treeDom.hidden = true; + } + } + show() { + if (this.#treeDom?.hidden) { + this.#treeDom.hidden = false; + } + } + #setAttributes(structElement, htmlElement) { + if (structElement.alt !== undefined) { + htmlElement.setAttribute("aria-label", structElement.alt); + } + if (structElement.id !== undefined) { + htmlElement.setAttribute("aria-owns", structElement.id); + } + if (structElement.lang !== undefined) { + htmlElement.setAttribute("lang", structElement.lang); + } + } + #walk(node) { + if (!node) { + return null; + } + const element = document.createElement("span"); + if ("role" in node) { + const { + role + } = node; + const match = role.match(HEADING_PATTERN); + if (match) { + element.setAttribute("role", "heading"); + element.setAttribute("aria-level", match[1]); + } else if (PDF_ROLE_TO_HTML_ROLE[role]) { + element.setAttribute("role", PDF_ROLE_TO_HTML_ROLE[role]); + } + } + this.#setAttributes(node, element); + if (node.children) { + if (node.children.length === 1 && "id" in node.children[0]) { + this.#setAttributes(node.children[0], element); + } else { + for (const kid of node.children) { + element.append(this.#walk(kid)); + } + } + } + return element; + } +} +exports.StructTreeLayerBuilder = StructTreeLayerBuilder; + +/***/ }), +/* 35 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TextAccessibilityManager = void 0; +var _ui_utils = __webpack_require__(3); +class TextAccessibilityManager { + #enabled = false; + #textChildren = null; + #textNodes = new Map(); + #waitingElements = new Map(); + setTextMapping(textDivs) { + this.#textChildren = textDivs; + } + static #compareElementPositions(e1, e2) { + const rect1 = e1.getBoundingClientRect(); + const rect2 = e2.getBoundingClientRect(); + if (rect1.width === 0 && rect1.height === 0) { + return +1; + } + if (rect2.width === 0 && rect2.height === 0) { + return -1; + } + const top1 = rect1.y; + const bot1 = rect1.y + rect1.height; + const mid1 = rect1.y + rect1.height / 2; + const top2 = rect2.y; + const bot2 = rect2.y + rect2.height; + const mid2 = rect2.y + rect2.height / 2; + if (mid1 <= top2 && mid2 >= bot1) { + return -1; + } + if (mid2 <= top1 && mid1 >= bot2) { + return +1; + } + const centerX1 = rect1.x + rect1.width / 2; + const centerX2 = rect2.x + rect2.width / 2; + return centerX1 - centerX2; + } + enable() { + if (this.#enabled) { + throw new Error("TextAccessibilityManager is already enabled."); + } + if (!this.#textChildren) { + throw new Error("Text divs and strings have not been set."); + } + this.#enabled = true; + this.#textChildren = this.#textChildren.slice(); + this.#textChildren.sort(TextAccessibilityManager.#compareElementPositions); + if (this.#textNodes.size > 0) { + const textChildren = this.#textChildren; + for (const [id, nodeIndex] of this.#textNodes) { + const element = document.getElementById(id); + if (!element) { + this.#textNodes.delete(id); + continue; + } + this.#addIdToAriaOwns(id, textChildren[nodeIndex]); + } + } + for (const [element, isRemovable] of this.#waitingElements) { + this.addPointerInTextLayer(element, isRemovable); + } + this.#waitingElements.clear(); + } + disable() { + if (!this.#enabled) { + return; + } + this.#waitingElements.clear(); + this.#textChildren = null; + this.#enabled = false; + } + removePointerInTextLayer(element) { + if (!this.#enabled) { + this.#waitingElements.delete(element); + return; + } + const children = this.#textChildren; + if (!children || children.length === 0) { + return; + } + const { + id + } = element; + const nodeIndex = this.#textNodes.get(id); + if (nodeIndex === undefined) { + return; + } + const node = children[nodeIndex]; + this.#textNodes.delete(id); + let owns = node.getAttribute("aria-owns"); + if (owns?.includes(id)) { + owns = owns.split(" ").filter(x => x !== id).join(" "); + if (owns) { + node.setAttribute("aria-owns", owns); + } else { + node.removeAttribute("aria-owns"); + node.setAttribute("role", "presentation"); + } + } + } + #addIdToAriaOwns(id, node) { + const owns = node.getAttribute("aria-owns"); + if (!owns?.includes(id)) { + node.setAttribute("aria-owns", owns ? `${owns} ${id}` : id); + } + node.removeAttribute("role"); + } + addPointerInTextLayer(element, isRemovable) { + const { + id + } = element; + if (!id) { + return; + } + if (!this.#enabled) { + this.#waitingElements.set(element, isRemovable); + return; + } + if (isRemovable) { + this.removePointerInTextLayer(element); + } + const children = this.#textChildren; + if (!children || children.length === 0) { + return; + } + const index = (0, _ui_utils.binarySearchFirstItem)(children, node => TextAccessibilityManager.#compareElementPositions(element, node) < 0); + const nodeIndex = Math.max(0, index - 1); + this.#addIdToAriaOwns(id, children[nodeIndex]); + this.#textNodes.set(id, nodeIndex); + } + moveElementInDOM(container, element, contentElement, isRemovable) { + this.addPointerInTextLayer(contentElement, isRemovable); + if (!container.hasChildNodes()) { + container.append(element); + return; + } + const children = Array.from(container.childNodes).filter(node => node !== element); + if (children.length === 0) { + return; + } + const elementToCompare = contentElement || element; + const index = (0, _ui_utils.binarySearchFirstItem)(children, node => TextAccessibilityManager.#compareElementPositions(elementToCompare, node) < 0); + if (index === 0) { + children[0].before(element); + } else { + children[index - 1].after(element); + } + } +} +exports.TextAccessibilityManager = TextAccessibilityManager; + +/***/ }), +/* 36 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TextHighlighter = void 0; +class TextHighlighter { + constructor({ + findController, + eventBus, + pageIndex + }) { + this.findController = findController; + this.matches = []; + this.eventBus = eventBus; + this.pageIdx = pageIndex; + this._onUpdateTextLayerMatches = null; + this.textDivs = null; + this.textContentItemsStr = null; + this.enabled = false; + } + setTextMapping(divs, texts) { + this.textDivs = divs; + this.textContentItemsStr = texts; + } + enable() { + if (!this.textDivs || !this.textContentItemsStr) { + throw new Error("Text divs and strings have not been set."); + } + if (this.enabled) { + throw new Error("TextHighlighter is already enabled."); + } + this.enabled = true; + if (!this._onUpdateTextLayerMatches) { + this._onUpdateTextLayerMatches = evt => { + if (evt.pageIndex === this.pageIdx || evt.pageIndex === -1) { + this._updateMatches(); + } + }; + this.eventBus._on("updatetextlayermatches", this._onUpdateTextLayerMatches); + } + this._updateMatches(); + } + disable() { + if (!this.enabled) { + return; + } + this.enabled = false; + if (this._onUpdateTextLayerMatches) { + this.eventBus._off("updatetextlayermatches", this._onUpdateTextLayerMatches); + this._onUpdateTextLayerMatches = null; + } + this._updateMatches(true); + } + _convertMatches(matches, matchesLength) { + if (!matches) { + return []; + } + const { + textContentItemsStr + } = this; + let i = 0, + iIndex = 0; + const end = textContentItemsStr.length - 1; + const result = []; + for (let m = 0, mm = matches.length; m < mm; m++) { + let matchIdx = matches[m]; + while (i !== end && matchIdx >= iIndex + textContentItemsStr[i].length) { + iIndex += textContentItemsStr[i].length; + i++; + } + if (i === textContentItemsStr.length) { + console.error("Could not find a matching mapping"); + } + const match = { + begin: { + divIdx: i, + offset: matchIdx - iIndex + } + }; + matchIdx += matchesLength[m]; + while (i !== end && matchIdx > iIndex + textContentItemsStr[i].length) { + iIndex += textContentItemsStr[i].length; + i++; + } + match.end = { + divIdx: i, + offset: matchIdx - iIndex + }; + result.push(match); + } + return result; + } + _renderMatches(matches) { + if (matches.length === 0) { + return; + } + const { + findController, + pageIdx + } = this; + const { + textContentItemsStr, + textDivs + } = this; + const isSelectedPage = pageIdx === findController.selected.pageIdx; + const selectedMatchIdx = findController.selected.matchIdx; + const highlightAll = findController.state.highlightAll; + let prevEnd = null; + const infinity = { + divIdx: -1, + offset: undefined + }; + function beginText(begin, className) { + const divIdx = begin.divIdx; + textDivs[divIdx].textContent = ""; + return appendTextToDiv(divIdx, 0, begin.offset, className); + } + function appendTextToDiv(divIdx, fromOffset, toOffset, className) { + let div = textDivs[divIdx]; + if (div.nodeType === Node.TEXT_NODE) { + const span = document.createElement("span"); + div.before(span); + span.append(div); + textDivs[divIdx] = span; + div = span; + } + const content = textContentItemsStr[divIdx].substring(fromOffset, toOffset); + const node = document.createTextNode(content); + if (className) { + const span = document.createElement("span"); + span.className = `${className} appended`; + span.append(node); + div.append(span); + return className.includes("selected") ? span.offsetLeft : 0; + } + div.append(node); + return 0; + } + let i0 = selectedMatchIdx, + i1 = i0 + 1; + if (highlightAll) { + i0 = 0; + i1 = matches.length; + } else if (!isSelectedPage) { + return; + } + for (let i = i0; i < i1; i++) { + const match = matches[i]; + const begin = match.begin; + const end = match.end; + const isSelected = isSelectedPage && i === selectedMatchIdx; + const highlightSuffix = isSelected ? " selected" : ""; + let selectedLeft = 0; + if (!prevEnd || begin.divIdx !== prevEnd.divIdx) { + if (prevEnd !== null) { + appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset); + } + beginText(begin); + } else { + appendTextToDiv(prevEnd.divIdx, prevEnd.offset, begin.offset); + } + if (begin.divIdx === end.divIdx) { + selectedLeft = appendTextToDiv(begin.divIdx, begin.offset, end.offset, "highlight" + highlightSuffix); + } else { + selectedLeft = appendTextToDiv(begin.divIdx, begin.offset, infinity.offset, "highlight begin" + highlightSuffix); + for (let n0 = begin.divIdx + 1, n1 = end.divIdx; n0 < n1; n0++) { + textDivs[n0].className = "highlight middle" + highlightSuffix; + } + beginText(end, "highlight end" + highlightSuffix); + } + prevEnd = end; + if (isSelected) { + findController.scrollMatchIntoView({ + element: textDivs[begin.divIdx], + selectedLeft, + pageIndex: pageIdx, + matchIndex: selectedMatchIdx + }); + } + } + if (prevEnd) { + appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset); + } + } + _updateMatches(reset = false) { + if (!this.enabled && !reset) { + return; + } + const { + findController, + matches, + pageIdx + } = this; + const { + textContentItemsStr, + textDivs + } = this; + let clearedUntilDivIdx = -1; + for (const match of matches) { + const begin = Math.max(clearedUntilDivIdx, match.begin.divIdx); + for (let n = begin, end = match.end.divIdx; n <= end; n++) { + const div = textDivs[n]; + div.textContent = textContentItemsStr[n]; + div.className = ""; + } + clearedUntilDivIdx = match.end.divIdx + 1; + } + if (!findController?.highlightMatches || reset) { + return; + } + const pageMatches = findController.pageMatches[pageIdx] || null; + const pageMatchesLength = findController.pageMatchesLength[pageIdx] || null; + this.matches = this._convertMatches(pageMatches, pageMatchesLength); + this._renderMatches(this.matches); + } +} +exports.TextHighlighter = TextHighlighter; + +/***/ }), +/* 37 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TextLayerBuilder = void 0; +var _pdfjsLib = __webpack_require__(4); +class TextLayerBuilder { + #rotation = 0; + #scale = 0; + #textContentSource = null; + constructor({ + highlighter = null, + accessibilityManager = null, + isOffscreenCanvasSupported = true + }) { + this.textContentItemsStr = []; + this.renderingDone = false; + this.textDivs = []; + this.textDivProperties = new WeakMap(); + this.textLayerRenderTask = null; + this.highlighter = highlighter; + this.accessibilityManager = accessibilityManager; + this.isOffscreenCanvasSupported = isOffscreenCanvasSupported; + this.div = document.createElement("div"); + this.div.className = "textLayer"; + this.hide(); + } + #finishRendering() { + this.renderingDone = true; + const endOfContent = document.createElement("div"); + endOfContent.className = "endOfContent"; + this.div.append(endOfContent); + this.#bindMouse(); + } + get numTextDivs() { + return this.textDivs.length; + } + async render(viewport) { + if (!this.#textContentSource) { + throw new Error('No "textContentSource" parameter specified.'); + } + const scale = viewport.scale * (globalThis.devicePixelRatio || 1); + const { + rotation + } = viewport; + if (this.renderingDone) { + const mustRotate = rotation !== this.#rotation; + const mustRescale = scale !== this.#scale; + if (mustRotate || mustRescale) { + this.hide(); + (0, _pdfjsLib.updateTextLayer)({ + container: this.div, + viewport, + textDivs: this.textDivs, + textDivProperties: this.textDivProperties, + isOffscreenCanvasSupported: this.isOffscreenCanvasSupported, + mustRescale, + mustRotate + }); + this.#scale = scale; + this.#rotation = rotation; + } + this.show(); + return; + } + this.cancel(); + this.highlighter?.setTextMapping(this.textDivs, this.textContentItemsStr); + this.accessibilityManager?.setTextMapping(this.textDivs); + this.textLayerRenderTask = (0, _pdfjsLib.renderTextLayer)({ + textContentSource: this.#textContentSource, + container: this.div, + viewport, + textDivs: this.textDivs, + textDivProperties: this.textDivProperties, + textContentItemsStr: this.textContentItemsStr, + isOffscreenCanvasSupported: this.isOffscreenCanvasSupported + }); + await this.textLayerRenderTask.promise; + this.#finishRendering(); + this.#scale = scale; + this.#rotation = rotation; + this.show(); + this.accessibilityManager?.enable(); + } + hide() { + if (!this.div.hidden) { + this.highlighter?.disable(); + this.div.hidden = true; + } + } + show() { + if (this.div.hidden && this.renderingDone) { + this.div.hidden = false; + this.highlighter?.enable(); + } + } + cancel() { + if (this.textLayerRenderTask) { + this.textLayerRenderTask.cancel(); + this.textLayerRenderTask = null; + } + this.highlighter?.disable(); + this.accessibilityManager?.disable(); + this.textContentItemsStr.length = 0; + this.textDivs.length = 0; + this.textDivProperties = new WeakMap(); + } + setTextContentSource(source) { + this.cancel(); + this.#textContentSource = source; + } + #bindMouse() { + const { + div + } = this; + div.addEventListener("mousedown", evt => { + const end = div.querySelector(".endOfContent"); + if (!end) { + return; + } + let adjustTop = evt.target !== div; + adjustTop &&= getComputedStyle(end).getPropertyValue("-moz-user-select") !== "none"; + if (adjustTop) { + const divBounds = div.getBoundingClientRect(); + const r = Math.max(0, (evt.pageY - divBounds.top) / divBounds.height); + end.style.top = (r * 100).toFixed(2) + "%"; + } + end.classList.add("active"); + }); + div.addEventListener("mouseup", () => { + const end = div.querySelector(".endOfContent"); + if (!end) { + return; + } + end.style.top = ""; + end.classList.remove("active"); + }); + } +} +exports.TextLayerBuilder = TextLayerBuilder; + +/***/ }), +/* 38 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XfaLayerBuilder = void 0; +var _pdfjsLib = __webpack_require__(4); +class XfaLayerBuilder { + constructor({ + pageDiv, + pdfPage, + annotationStorage = null, + linkService, + xfaHtml = null + }) { + this.pageDiv = pageDiv; + this.pdfPage = pdfPage; + this.annotationStorage = annotationStorage; + this.linkService = linkService; + this.xfaHtml = xfaHtml; + this.div = null; + this._cancelled = false; + } + async render(viewport, intent = "display") { + if (intent === "print") { + const parameters = { + viewport: viewport.clone({ + dontFlip: true + }), + div: this.div, + xfaHtml: this.xfaHtml, + annotationStorage: this.annotationStorage, + linkService: this.linkService, + intent + }; + const div = document.createElement("div"); + this.pageDiv.append(div); + parameters.div = div; + return _pdfjsLib.XfaLayer.render(parameters); + } + const xfaHtml = await this.pdfPage.getXfa(); + if (this._cancelled || !xfaHtml) { + return { + textDivs: [] + }; + } + const parameters = { + viewport: viewport.clone({ + dontFlip: true + }), + div: this.div, + xfaHtml, + annotationStorage: this.annotationStorage, + linkService: this.linkService, + intent + }; + if (this.div) { + return _pdfjsLib.XfaLayer.update(parameters); + } + this.div = document.createElement("div"); + this.pageDiv.append(this.div); + parameters.div = this.div; + return _pdfjsLib.XfaLayer.render(parameters); + } + cancel() { + this._cancelled = true; + } + hide() { + if (!this.div) { + return; + } + this.div.hidden = true; + } +} +exports.XfaLayerBuilder = XfaLayerBuilder; + +/***/ }), +/* 39 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SecondaryToolbar = void 0; +var _ui_utils = __webpack_require__(3); +var _pdf_viewer = __webpack_require__(29); +class SecondaryToolbar { + constructor(options, eventBus, externalServices) { + this.toolbar = options.toolbar; + this.toggleButton = options.toggleButton; + this.buttons = [{ + element: options.presentationModeButton, + eventName: "presentationmode", + close: true + }, { + element: options.printButton, + eventName: "print", + close: true + }, { + element: options.downloadButton, + eventName: "download", + close: true + }, { + element: options.viewBookmarkButton, + eventName: null, + close: true + }, { + element: options.firstPageButton, + eventName: "firstpage", + close: true + }, { + element: options.lastPageButton, + eventName: "lastpage", + close: true + }, { + element: options.pageRotateCwButton, + eventName: "rotatecw", + close: false + }, { + element: options.pageRotateCcwButton, + eventName: "rotateccw", + close: false + }, { + element: options.cursorSelectToolButton, + eventName: "switchcursortool", + eventDetails: { + tool: _ui_utils.CursorTool.SELECT + }, + close: true + }, { + element: options.cursorHandToolButton, + eventName: "switchcursortool", + eventDetails: { + tool: _ui_utils.CursorTool.HAND + }, + close: true + }, { + element: options.scrollPageButton, + eventName: "switchscrollmode", + eventDetails: { + mode: _ui_utils.ScrollMode.PAGE + }, + close: true + }, { + element: options.scrollVerticalButton, + eventName: "switchscrollmode", + eventDetails: { + mode: _ui_utils.ScrollMode.VERTICAL + }, + close: true + }, { + element: options.scrollHorizontalButton, + eventName: "switchscrollmode", + eventDetails: { + mode: _ui_utils.ScrollMode.HORIZONTAL + }, + close: true + }, { + element: options.scrollWrappedButton, + eventName: "switchscrollmode", + eventDetails: { + mode: _ui_utils.ScrollMode.WRAPPED + }, + close: true + }, { + element: options.spreadNoneButton, + eventName: "switchspreadmode", + eventDetails: { + mode: _ui_utils.SpreadMode.NONE + }, + close: true + }, { + element: options.spreadOddButton, + eventName: "switchspreadmode", + eventDetails: { + mode: _ui_utils.SpreadMode.ODD + }, + close: true + }, { + element: options.spreadEvenButton, + eventName: "switchspreadmode", + eventDetails: { + mode: _ui_utils.SpreadMode.EVEN + }, + close: true + }, { + element: options.documentPropertiesButton, + eventName: "documentproperties", + close: true + }]; + this.buttons.push({ + element: options.openFileButton, + eventName: "openfile", + close: true + }); + this.items = { + firstPage: options.firstPageButton, + lastPage: options.lastPageButton, + pageRotateCw: options.pageRotateCwButton, + pageRotateCcw: options.pageRotateCcwButton + }; + this.eventBus = eventBus; + this.externalServices = externalServices; + this.opened = false; + this.#bindClickListeners(); + this.#bindCursorToolsListener(options); + this.#bindScrollModeListener(options); + this.#bindSpreadModeListener(options); + this.reset(); + } + get isOpen() { + return this.opened; + } + setPageNumber(pageNumber) { + this.pageNumber = pageNumber; + this.#updateUIState(); + } + setPagesCount(pagesCount) { + this.pagesCount = pagesCount; + this.#updateUIState(); + } + reset() { + this.pageNumber = 0; + this.pagesCount = 0; + this.#updateUIState(); + this.eventBus.dispatch("secondarytoolbarreset", { + source: this + }); + } + #updateUIState() { + this.items.firstPage.disabled = this.pageNumber <= 1; + this.items.lastPage.disabled = this.pageNumber >= this.pagesCount; + this.items.pageRotateCw.disabled = this.pagesCount === 0; + this.items.pageRotateCcw.disabled = this.pagesCount === 0; + } + #bindClickListeners() { + this.toggleButton.addEventListener("click", this.toggle.bind(this)); + for (const { + element, + eventName, + close, + eventDetails + } of this.buttons) { + element.addEventListener("click", evt => { + if (eventName !== null) { + this.eventBus.dispatch(eventName, { + source: this, + ...eventDetails + }); + } + if (close) { + this.close(); + } + this.externalServices.reportTelemetry({ + type: "buttons", + data: { + id: element.id + } + }); + }); + } + } + #bindCursorToolsListener({ + cursorSelectToolButton, + cursorHandToolButton + }) { + this.eventBus._on("cursortoolchanged", function ({ + tool + }) { + const isSelect = tool === _ui_utils.CursorTool.SELECT, + isHand = tool === _ui_utils.CursorTool.HAND; + cursorSelectToolButton.classList.toggle("toggled", isSelect); + cursorHandToolButton.classList.toggle("toggled", isHand); + cursorSelectToolButton.setAttribute("aria-checked", isSelect); + cursorHandToolButton.setAttribute("aria-checked", isHand); + }); + } + #bindScrollModeListener({ + scrollPageButton, + scrollVerticalButton, + scrollHorizontalButton, + scrollWrappedButton, + spreadNoneButton, + spreadOddButton, + spreadEvenButton + }) { + const scrollModeChanged = ({ + mode + }) => { + const isPage = mode === _ui_utils.ScrollMode.PAGE, + isVertical = mode === _ui_utils.ScrollMode.VERTICAL, + isHorizontal = mode === _ui_utils.ScrollMode.HORIZONTAL, + isWrapped = mode === _ui_utils.ScrollMode.WRAPPED; + scrollPageButton.classList.toggle("toggled", isPage); + scrollVerticalButton.classList.toggle("toggled", isVertical); + scrollHorizontalButton.classList.toggle("toggled", isHorizontal); + scrollWrappedButton.classList.toggle("toggled", isWrapped); + scrollPageButton.setAttribute("aria-checked", isPage); + scrollVerticalButton.setAttribute("aria-checked", isVertical); + scrollHorizontalButton.setAttribute("aria-checked", isHorizontal); + scrollWrappedButton.setAttribute("aria-checked", isWrapped); + const forceScrollModePage = this.pagesCount > _pdf_viewer.PagesCountLimit.FORCE_SCROLL_MODE_PAGE; + scrollPageButton.disabled = forceScrollModePage; + scrollVerticalButton.disabled = forceScrollModePage; + scrollHorizontalButton.disabled = forceScrollModePage; + scrollWrappedButton.disabled = forceScrollModePage; + spreadNoneButton.disabled = isHorizontal; + spreadOddButton.disabled = isHorizontal; + spreadEvenButton.disabled = isHorizontal; + }; + this.eventBus._on("scrollmodechanged", scrollModeChanged); + this.eventBus._on("secondarytoolbarreset", evt => { + if (evt.source === this) { + scrollModeChanged({ + mode: _ui_utils.ScrollMode.VERTICAL + }); + } + }); + } + #bindSpreadModeListener({ + spreadNoneButton, + spreadOddButton, + spreadEvenButton + }) { + function spreadModeChanged({ + mode + }) { + const isNone = mode === _ui_utils.SpreadMode.NONE, + isOdd = mode === _ui_utils.SpreadMode.ODD, + isEven = mode === _ui_utils.SpreadMode.EVEN; + spreadNoneButton.classList.toggle("toggled", isNone); + spreadOddButton.classList.toggle("toggled", isOdd); + spreadEvenButton.classList.toggle("toggled", isEven); + spreadNoneButton.setAttribute("aria-checked", isNone); + spreadOddButton.setAttribute("aria-checked", isOdd); + spreadEvenButton.setAttribute("aria-checked", isEven); + } + this.eventBus._on("spreadmodechanged", spreadModeChanged); + this.eventBus._on("secondarytoolbarreset", evt => { + if (evt.source === this) { + spreadModeChanged({ + mode: _ui_utils.SpreadMode.NONE + }); + } + }); + } + open() { + if (this.opened) { + return; + } + this.opened = true; + this.toggleButton.classList.add("toggled"); + this.toggleButton.setAttribute("aria-expanded", "true"); + this.toolbar.classList.remove("hidden"); + } + close() { + if (!this.opened) { + return; + } + this.opened = false; + this.toolbar.classList.add("hidden"); + this.toggleButton.classList.remove("toggled"); + this.toggleButton.setAttribute("aria-expanded", "false"); + } + toggle() { + if (this.opened) { + this.close(); + } else { + this.open(); + } + } +} +exports.SecondaryToolbar = SecondaryToolbar; + +/***/ }), +/* 40 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Toolbar = void 0; +var _ui_utils = __webpack_require__(3); +var _pdfjsLib = __webpack_require__(4); +const PAGE_NUMBER_LOADING_INDICATOR = "visiblePageIsLoading"; +class Toolbar { + #wasLocalized = false; + constructor(options, eventBus, l10n) { + this.toolbar = options.container; + this.eventBus = eventBus; + this.l10n = l10n; + this.buttons = [{ + element: options.previous, + eventName: "previouspage" + }, { + element: options.next, + eventName: "nextpage" + }, { + element: options.zoomIn, + eventName: "zoomin" + }, { + element: options.zoomOut, + eventName: "zoomout" + }, { + element: options.print, + eventName: "print" + }, { + element: options.download, + eventName: "download" + }, { + element: options.editorFreeTextButton, + eventName: "switchannotationeditormode", + eventDetails: { + get mode() { + const { + classList + } = options.editorFreeTextButton; + return classList.contains("toggled") ? _pdfjsLib.AnnotationEditorType.NONE : _pdfjsLib.AnnotationEditorType.FREETEXT; + } + } + }, { + element: options.editorInkButton, + eventName: "switchannotationeditormode", + eventDetails: { + get mode() { + const { + classList + } = options.editorInkButton; + return classList.contains("toggled") ? _pdfjsLib.AnnotationEditorType.NONE : _pdfjsLib.AnnotationEditorType.INK; + } + } + }]; + this.buttons.push({ + element: options.openFile, + eventName: "openfile" + }); + this.items = { + numPages: options.numPages, + pageNumber: options.pageNumber, + scaleSelect: options.scaleSelect, + customScaleOption: options.customScaleOption, + previous: options.previous, + next: options.next, + zoomIn: options.zoomIn, + zoomOut: options.zoomOut + }; + this.#bindListeners(options); + this.reset(); + } + setPageNumber(pageNumber, pageLabel) { + this.pageNumber = pageNumber; + this.pageLabel = pageLabel; + this.#updateUIState(false); + } + setPagesCount(pagesCount, hasPageLabels) { + this.pagesCount = pagesCount; + this.hasPageLabels = hasPageLabels; + this.#updateUIState(true); + } + setPageScale(pageScaleValue, pageScale) { + this.pageScaleValue = (pageScaleValue || pageScale).toString(); + this.pageScale = pageScale; + this.#updateUIState(false); + } + reset() { + this.pageNumber = 0; + this.pageLabel = null; + this.hasPageLabels = false; + this.pagesCount = 0; + this.pageScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; + this.pageScale = _ui_utils.DEFAULT_SCALE; + this.#updateUIState(true); + this.updateLoadingIndicatorState(); + this.eventBus.dispatch("toolbarreset", { + source: this + }); + } + #bindListeners(options) { + const { + pageNumber, + scaleSelect + } = this.items; + const self = this; + for (const { + element, + eventName, + eventDetails + } of this.buttons) { + element.addEventListener("click", evt => { + if (eventName !== null) { + this.eventBus.dispatch(eventName, { + source: this, + ...eventDetails + }); + } + }); + } + pageNumber.addEventListener("click", function () { + this.select(); + }); + pageNumber.addEventListener("change", function () { + self.eventBus.dispatch("pagenumberchanged", { + source: self, + value: this.value + }); + }); + scaleSelect.addEventListener("change", function () { + if (this.value === "custom") { + return; + } + self.eventBus.dispatch("scalechanged", { + source: self, + value: this.value + }); + }); + scaleSelect.addEventListener("click", function (evt) { + const target = evt.target; + if (this.value === self.pageScaleValue && target.tagName.toUpperCase() === "OPTION") { + this.blur(); + } + }); + scaleSelect.oncontextmenu = _ui_utils.noContextMenuHandler; + this.eventBus._on("localized", () => { + this.#wasLocalized = true; + this.#adjustScaleWidth(); + this.#updateUIState(true); + }); + this.#bindEditorToolsListener(options); + } + #bindEditorToolsListener({ + editorFreeTextButton, + editorFreeTextParamsToolbar, + editorInkButton, + editorInkParamsToolbar + }) { + const editorModeChanged = (evt, disableButtons = false) => { + const editorButtons = [{ + mode: _pdfjsLib.AnnotationEditorType.FREETEXT, + button: editorFreeTextButton, + toolbar: editorFreeTextParamsToolbar + }, { + mode: _pdfjsLib.AnnotationEditorType.INK, + button: editorInkButton, + toolbar: editorInkParamsToolbar + }]; + for (const { + mode, + button, + toolbar + } of editorButtons) { + const checked = mode === evt.mode; + button.classList.toggle("toggled", checked); + button.setAttribute("aria-checked", checked); + button.disabled = disableButtons; + toolbar?.classList.toggle("hidden", !checked); + } + }; + this.eventBus._on("annotationeditormodechanged", editorModeChanged); + this.eventBus._on("toolbarreset", evt => { + if (evt.source === this) { + editorModeChanged({ + mode: _pdfjsLib.AnnotationEditorType.NONE + }, true); + } + }); + } + #updateUIState(resetNumPages = false) { + if (!this.#wasLocalized) { + return; + } + const { + pageNumber, + pagesCount, + pageScaleValue, + pageScale, + items + } = this; + if (resetNumPages) { + if (this.hasPageLabels) { + items.pageNumber.type = "text"; + } else { + items.pageNumber.type = "number"; + this.l10n.get("of_pages", { + pagesCount + }).then(msg => { + items.numPages.textContent = msg; + }); + } + items.pageNumber.max = pagesCount; + } + if (this.hasPageLabels) { + items.pageNumber.value = this.pageLabel; + this.l10n.get("page_of_pages", { + pageNumber, + pagesCount + }).then(msg => { + items.numPages.textContent = msg; + }); + } else { + items.pageNumber.value = pageNumber; + } + items.previous.disabled = pageNumber <= 1; + items.next.disabled = pageNumber >= pagesCount; + items.zoomOut.disabled = pageScale <= _ui_utils.MIN_SCALE; + items.zoomIn.disabled = pageScale >= _ui_utils.MAX_SCALE; + this.l10n.get("page_scale_percent", { + scale: Math.round(pageScale * 10000) / 100 + }).then(msg => { + let predefinedValueFound = false; + for (const option of items.scaleSelect.options) { + if (option.value !== pageScaleValue) { + option.selected = false; + continue; + } + option.selected = true; + predefinedValueFound = true; + } + if (!predefinedValueFound) { + items.customScaleOption.textContent = msg; + items.customScaleOption.selected = true; + } + }); + } + updateLoadingIndicatorState(loading = false) { + const { + pageNumber + } = this.items; + pageNumber.classList.toggle(PAGE_NUMBER_LOADING_INDICATOR, loading); + } + async #adjustScaleWidth() { + const { + items, + l10n + } = this; + const predefinedValuesPromise = Promise.all([l10n.get("page_scale_auto"), l10n.get("page_scale_actual"), l10n.get("page_scale_fit"), l10n.get("page_scale_width")]); + await _ui_utils.animationStarted; + const style = getComputedStyle(items.scaleSelect); + const scaleSelectWidth = parseFloat(style.getPropertyValue("--scale-select-width")); + const canvas = document.createElement("canvas"); + const ctx = canvas.getContext("2d", { + alpha: false + }); + ctx.font = `${style.fontSize} ${style.fontFamily}`; + let maxWidth = 0; + for (const predefinedValue of await predefinedValuesPromise) { + const { + width + } = ctx.measureText(predefinedValue); + if (width > maxWidth) { + maxWidth = width; + } + } + maxWidth += 0.3 * scaleSelectWidth; + if (maxWidth > scaleSelectWidth) { + const container = items.scaleSelect.parentNode; + container.style.setProperty("--scale-select-width", `${maxWidth}px`); + } + canvas.width = 0; + canvas.height = 0; + } +} +exports.Toolbar = Toolbar; + +/***/ }), +/* 41 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ViewHistory = void 0; +const DEFAULT_VIEW_HISTORY_CACHE_SIZE = 20; +class ViewHistory { + constructor(fingerprint, cacheSize = DEFAULT_VIEW_HISTORY_CACHE_SIZE) { + this.fingerprint = fingerprint; + this.cacheSize = cacheSize; + this._initializedPromise = this._readFromStorage().then(databaseStr => { + const database = JSON.parse(databaseStr || "{}"); + let index = -1; + if (!Array.isArray(database.files)) { + database.files = []; + } else { + while (database.files.length >= this.cacheSize) { + database.files.shift(); + } + for (let i = 0, ii = database.files.length; i < ii; i++) { + const branch = database.files[i]; + if (branch.fingerprint === this.fingerprint) { + index = i; + break; + } + } + } + if (index === -1) { + index = database.files.push({ + fingerprint: this.fingerprint + }) - 1; + } + this.file = database.files[index]; + this.database = database; + }); + } + async _writeToStorage() { + const databaseStr = JSON.stringify(this.database); + localStorage.setItem("pdfjs.history", databaseStr); + } + async _readFromStorage() { + return localStorage.getItem("pdfjs.history"); + } + async set(name, val) { + await this._initializedPromise; + this.file[name] = val; + return this._writeToStorage(); + } + async setMultiple(properties) { + await this._initializedPromise; + for (const name in properties) { + this.file[name] = properties[name]; + } + return this._writeToStorage(); + } + async get(name, defaultValue) { + await this._initializedPromise; + const val = this.file[name]; + return val !== undefined ? val : defaultValue; + } + async getMultiple(properties) { + await this._initializedPromise; + const values = Object.create(null); + for (const name in properties) { + const val = this.file[name]; + values[name] = val !== undefined ? val : properties[name]; + } + return values; + } +} +exports.ViewHistory = ViewHistory; + +/***/ }), +/* 42 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.BasePreferences = void 0; +var _app_options = __webpack_require__(5); +class BasePreferences { + #defaults = Object.freeze({ + "annotationEditorMode": 0, + "annotationMode": 2, + "cursorToolOnLoad": 1, //handTool, 커서툴 초기 세팅 + "defaultZoomDelay": 400, + "defaultZoomValue": "", + "disablePageLabels": false, + "enablePermissions": false, + "enablePrintAutoRotate": true, + "enableScripting": true, + "externalLinkTarget": 0, + "historyUpdateUrl": false, + "ignoreDestinationZoom": false, + "forcePageColors": false, + "pageColorsBackground": "Canvas", + "pageColorsForeground": "CanvasText", + "pdfBugEnabled": false, + "sidebarViewOnLoad": -1, + "scrollModeOnLoad": -1, + "spreadModeOnLoad": -1, + "textLayerMode": 1, + "useOnlyCssZoom": false, + "viewerCssTheme": 0, + "viewOnLoad": 0, + "disableAutoFetch": false, + "disableFontFace": false, + "disableRange": false, + "disableStream": false, + "enableXfa": true, + "renderer": "canvas" + }); + #prefs = Object.create(null); + #initializedPromise = null; + constructor() { + if (this.constructor === BasePreferences) { + throw new Error("Cannot initialize BasePreferences."); + } + this.#initializedPromise = this._readFromStorage(this.#defaults).then(prefs => { + for (const name in this.#defaults) { + const prefValue = prefs?.[name]; + if (typeof prefValue === typeof this.#defaults[name]) { + this.#prefs[name] = prefValue; + } + } + }); + } + async _writeToStorage(prefObj) { + throw new Error("Not implemented: _writeToStorage"); + } + async _readFromStorage(prefObj) { + throw new Error("Not implemented: _readFromStorage"); + } + async reset() { + await this.#initializedPromise; + const prefs = this.#prefs; + this.#prefs = Object.create(null); + return this._writeToStorage(this.#defaults).catch(reason => { + this.#prefs = prefs; + throw reason; + }); + } + async set(name, value) { + await this.#initializedPromise; + const defaultValue = this.#defaults[name], + prefs = this.#prefs; + if (defaultValue === undefined) { + throw new Error(`Set preference: "${name}" is undefined.`); + } else if (value === undefined) { + throw new Error("Set preference: no value is specified."); + } + const valueType = typeof value, + defaultType = typeof defaultValue; + if (valueType !== defaultType) { + if (valueType === "number" && defaultType === "string") { + value = value.toString(); + } else { + throw new Error(`Set preference: "${value}" is a ${valueType}, expected a ${defaultType}.`); + } + } else { + if (valueType === "number" && !Number.isInteger(value)) { + throw new Error(`Set preference: "${value}" must be an integer.`); + } + } + this.#prefs[name] = value; + return this._writeToStorage(this.#prefs).catch(reason => { + this.#prefs = prefs; + throw reason; + }); + } + async get(name) { + await this.#initializedPromise; + const defaultValue = this.#defaults[name]; + if (defaultValue === undefined) { + throw new Error(`Get preference: "${name}" is undefined.`); + } + return this.#prefs[name] ?? defaultValue; + } + async getAll() { + await this.#initializedPromise; + const obj = Object.create(null); + for (const name in this.#defaults) { + obj[name] = this.#prefs[name] ?? this.#defaults[name]; + } + return obj; + } +} +exports.BasePreferences = BasePreferences; + +/***/ }), +/* 43 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.DownloadManager = void 0; +var _pdfjsLib = __webpack_require__(4); +; +function download(blobUrl, filename) { + const a = document.createElement("a"); + if (!a.click) { + throw new Error('DownloadManager: "a.click()" is not supported.'); + } + a.href = blobUrl; + a.target = "_parent"; + if ("download" in a) { + a.download = filename; + } + (document.body || document.documentElement).append(a); + a.click(); + a.remove(); +} +class DownloadManager { + #openBlobUrls = new WeakMap(); + downloadUrl(url, filename) { + if (!(0, _pdfjsLib.createValidAbsoluteUrl)(url, "http://example.com")) { + console.error(`downloadUrl - not a valid URL: ${url}`); + return; + } + download(url + "#pdfjs.action=download", filename); + } + downloadData(data, filename, contentType) { + const blobUrl = URL.createObjectURL(new Blob([data], { + type: contentType + })); + download(blobUrl, filename); + } + openOrDownloadData(element, data, filename) { + const isPdfData = (0, _pdfjsLib.isPdfFile)(filename); + const contentType = isPdfData ? "application/pdf" : ""; + if (isPdfData) { + let blobUrl = this.#openBlobUrls.get(element); + if (!blobUrl) { + blobUrl = URL.createObjectURL(new Blob([data], { + type: contentType + })); + this.#openBlobUrls.set(element, blobUrl); + } + let viewerUrl; + viewerUrl = "?file=" + encodeURIComponent(blobUrl + "#" + filename); + try { + window.open(viewerUrl); + return true; + } catch (ex) { + console.error(`openOrDownloadData: ${ex}`); + URL.revokeObjectURL(blobUrl); + this.#openBlobUrls.delete(element); + } + } + this.downloadData(data, filename, contentType); + return false; + } + download(blob, url, filename) { + const blobUrl = URL.createObjectURL(blob); + download(blobUrl, filename); + } +} +exports.DownloadManager = DownloadManager; + +/***/ }), +/* 44 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.GenericL10n = void 0; +__webpack_require__(45); +var _l10n_utils = __webpack_require__(30); +const webL10n = document.webL10n; +class GenericL10n { + constructor(lang) { + this._lang = lang; + this._ready = new Promise((resolve, reject) => { + webL10n.setLanguage((0, _l10n_utils.fixupLangCode)(lang), () => { + resolve(webL10n); + }); + }); + } + async getLanguage() { + const l10n = await this._ready; + return l10n.getLanguage(); + } + async getDirection() { + const l10n = await this._ready; + return l10n.getDirection(); + } + async get(key, args = null, fallback = (0, _l10n_utils.getL10nFallback)(key, args)) { + const l10n = await this._ready; + return l10n.get(key, args, fallback); + } + async translate(element) { + const l10n = await this._ready; + return l10n.translate(element); + } +} +exports.GenericL10n = GenericL10n; + +/***/ }), +/* 45 */ +/***/ (() => { + + + +document.webL10n = function (window, document, undefined) { + var gL10nData = {}; + var gTextData = ''; + var gTextProp = 'textContent'; + var gLanguage = ''; + var gMacros = {}; + var gReadyState = 'loading'; + var gAsyncResourceLoading = true; + function getL10nResourceLinks() { + return document.querySelectorAll('link[type="application/l10n"]'); + } + function getL10nDictionary() { + var script = document.querySelector('script[type="application/l10n"]'); + return script ? JSON.parse(script.innerHTML) : null; + } + function getTranslatableChildren(element) { + return element ? element.querySelectorAll('*[data-l10n-id]') : []; + } + function getL10nAttributes(element) { + if (!element) return {}; + var l10nId = element.getAttribute('data-l10n-id'); + var l10nArgs = element.getAttribute('data-l10n-args'); + var args = {}; + if (l10nArgs) { + try { + args = JSON.parse(l10nArgs); + } catch (e) { + console.warn('could not parse arguments for #' + l10nId); + } + } + return { + id: l10nId, + args: args + }; + } + function xhrLoadText(url, onSuccess, onFailure) { + onSuccess = onSuccess || function _onSuccess(data) {}; + onFailure = onFailure || function _onFailure() {}; + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, gAsyncResourceLoading); + if (xhr.overrideMimeType) { + xhr.overrideMimeType('text/plain; charset=utf-8'); + } + xhr.onreadystatechange = function () { + if (xhr.readyState == 4) { + if (xhr.status == 200 || xhr.status === 0) { + onSuccess(xhr.responseText); + } else { + onFailure(); + } + } + }; + xhr.onerror = onFailure; + xhr.ontimeout = onFailure; + try { + xhr.send(null); + } catch (e) { + onFailure(); + } + } + function parseResource(href, lang, successCallback, failureCallback) { + var baseURL = href.replace(/[^\/]*$/, '') || './'; + function evalString(text) { + if (text.lastIndexOf('\\') < 0) return text; + return text.replace(/\\\\/g, '\\').replace(/\\n/g, '\n').replace(/\\r/g, '\r').replace(/\\t/g, '\t').replace(/\\b/g, '\b').replace(/\\f/g, '\f').replace(/\\{/g, '{').replace(/\\}/g, '}').replace(/\\"/g, '"').replace(/\\'/g, "'"); + } + function parseProperties(text, parsedPropertiesCallback) { + var dictionary = {}; + var reBlank = /^\s*|\s*$/; + var reComment = /^\s*#|^\s*$/; + var reSection = /^\s*\[(.*)\]\s*$/; + var reImport = /^\s*@import\s+url\((.*)\)\s*$/i; + var reSplit = /^([^=\s]*)\s*=\s*(.+)$/; + function parseRawLines(rawText, extendedSyntax, parsedRawLinesCallback) { + var entries = rawText.replace(reBlank, '').split(/[\r\n]+/); + var currentLang = '*'; + var genericLang = lang.split('-', 1)[0]; + var skipLang = false; + var match = ''; + function nextEntry() { + while (true) { + if (!entries.length) { + parsedRawLinesCallback(); + return; + } + var line = entries.shift(); + if (reComment.test(line)) continue; + if (extendedSyntax) { + match = reSection.exec(line); + if (match) { + currentLang = match[1].toLowerCase(); + skipLang = currentLang !== '*' && currentLang !== lang && currentLang !== genericLang; + continue; + } else if (skipLang) { + continue; + } + match = reImport.exec(line); + if (match) { + loadImport(baseURL + match[1], nextEntry); + return; + } + } + var tmp = line.match(reSplit); + if (tmp && tmp.length == 3) { + dictionary[tmp[1]] = evalString(tmp[2]); + } + } + } + nextEntry(); + } + function loadImport(url, callback) { + xhrLoadText(url, function (content) { + parseRawLines(content, false, callback); + }, function () { + console.warn(url + ' not found.'); + callback(); + }); + } + parseRawLines(text, true, function () { + parsedPropertiesCallback(dictionary); + }); + } + xhrLoadText(href, function (response) { + gTextData += response; + parseProperties(response, function (data) { + for (var key in data) { + var id, + prop, + index = key.lastIndexOf('.'); + if (index > 0) { + id = key.substring(0, index); + prop = key.substring(index + 1); + } else { + id = key; + prop = gTextProp; + } + if (!gL10nData[id]) { + gL10nData[id] = {}; + } + gL10nData[id][prop] = data[key]; + } + if (successCallback) { + successCallback(); + } + }); + }, failureCallback); + } + function loadLocale(lang, callback) { + if (lang) { + lang = lang.toLowerCase(); + } + callback = callback || function _callback() {}; + clear(); + gLanguage = lang; + var langLinks = getL10nResourceLinks(); + var langCount = langLinks.length; + if (langCount === 0) { + var dict = getL10nDictionary(); + if (dict && dict.locales && dict.default_locale) { + console.log('using the embedded JSON directory, early way out'); + gL10nData = dict.locales[lang]; + if (!gL10nData) { + var defaultLocale = dict.default_locale.toLowerCase(); + for (var anyCaseLang in dict.locales) { + anyCaseLang = anyCaseLang.toLowerCase(); + if (anyCaseLang === lang) { + gL10nData = dict.locales[lang]; + break; + } else if (anyCaseLang === defaultLocale) { + gL10nData = dict.locales[defaultLocale]; + } + } + } + callback(); + } else { + console.log('no resource to load, early way out'); + } + gReadyState = 'complete'; + return; + } + var onResourceLoaded = null; + var gResourceCount = 0; + onResourceLoaded = function () { + gResourceCount++; + if (gResourceCount >= langCount) { + callback(); + gReadyState = 'complete'; + } + }; + function L10nResourceLink(link) { + var href = link.href; + this.load = function (lang, callback) { + parseResource(href, lang, callback, function () { + console.warn(href + ' not found.'); + console.warn('"' + lang + '" resource not found'); + gLanguage = ''; + callback(); + }); + }; + } + for (var i = 0; i < langCount; i++) { + var resource = new L10nResourceLink(langLinks[i]); + resource.load(lang, onResourceLoaded); + } + } + function clear() { + gL10nData = {}; + gTextData = ''; + gLanguage = ''; + } + function getPluralRules(lang) { + var locales2rules = { + 'af': 3, + 'ak': 4, + 'am': 4, + 'ar': 1, + 'asa': 3, + 'az': 0, + 'be': 11, + 'bem': 3, + 'bez': 3, + 'bg': 3, + 'bh': 4, + 'bm': 0, + 'bn': 3, + 'bo': 0, + 'br': 20, + 'brx': 3, + 'bs': 11, + 'ca': 3, + 'cgg': 3, + 'chr': 3, + 'cs': 12, + 'cy': 17, + 'da': 3, + 'de': 3, + 'dv': 3, + 'dz': 0, + 'ee': 3, + 'el': 3, + 'en': 3, + 'eo': 3, + 'es': 3, + 'et': 3, + 'eu': 3, + 'fa': 0, + 'ff': 5, + 'fi': 3, + 'fil': 4, + 'fo': 3, + 'fr': 5, + 'fur': 3, + 'fy': 3, + 'ga': 8, + 'gd': 24, + 'gl': 3, + 'gsw': 3, + 'gu': 3, + 'guw': 4, + 'gv': 23, + 'ha': 3, + 'haw': 3, + 'he': 2, + 'hi': 4, + 'hr': 11, + 'hu': 0, + 'id': 0, + 'ig': 0, + 'ii': 0, + 'is': 3, + 'it': 3, + 'iu': 7, + 'ja': 0, + 'jmc': 3, + 'jv': 0, + 'ka': 0, + 'kab': 5, + 'kaj': 3, + 'kcg': 3, + 'kde': 0, + 'kea': 0, + 'kk': 3, + 'kl': 3, + 'km': 0, + 'kn': 0, + 'ko': 0, + 'ksb': 3, + 'ksh': 21, + 'ku': 3, + 'kw': 7, + 'lag': 18, + 'lb': 3, + 'lg': 3, + 'ln': 4, + 'lo': 0, + 'lt': 10, + 'lv': 6, + 'mas': 3, + 'mg': 4, + 'mk': 16, + 'ml': 3, + 'mn': 3, + 'mo': 9, + 'mr': 3, + 'ms': 0, + 'mt': 15, + 'my': 0, + 'nah': 3, + 'naq': 7, + 'nb': 3, + 'nd': 3, + 'ne': 3, + 'nl': 3, + 'nn': 3, + 'no': 3, + 'nr': 3, + 'nso': 4, + 'ny': 3, + 'nyn': 3, + 'om': 3, + 'or': 3, + 'pa': 3, + 'pap': 3, + 'pl': 13, + 'ps': 3, + 'pt': 3, + 'rm': 3, + 'ro': 9, + 'rof': 3, + 'ru': 11, + 'rwk': 3, + 'sah': 0, + 'saq': 3, + 'se': 7, + 'seh': 3, + 'ses': 0, + 'sg': 0, + 'sh': 11, + 'shi': 19, + 'sk': 12, + 'sl': 14, + 'sma': 7, + 'smi': 7, + 'smj': 7, + 'smn': 7, + 'sms': 7, + 'sn': 3, + 'so': 3, + 'sq': 3, + 'sr': 11, + 'ss': 3, + 'ssy': 3, + 'st': 3, + 'sv': 3, + 'sw': 3, + 'syr': 3, + 'ta': 3, + 'te': 3, + 'teo': 3, + 'th': 0, + 'ti': 4, + 'tig': 3, + 'tk': 3, + 'tl': 4, + 'tn': 3, + 'to': 0, + 'tr': 0, + 'ts': 3, + 'tzm': 22, + 'uk': 11, + 'ur': 3, + 've': 3, + 'vi': 0, + 'vun': 3, + 'wa': 4, + 'wae': 3, + 'wo': 0, + 'xh': 3, + 'xog': 3, + 'yo': 0, + 'zh': 0, + 'zu': 3 + }; + function isIn(n, list) { + return list.indexOf(n) !== -1; + } + function isBetween(n, start, end) { + return start <= n && n <= end; + } + var pluralRules = { + '0': function (n) { + return 'other'; + }, + '1': function (n) { + if (isBetween(n % 100, 3, 10)) return 'few'; + if (n === 0) return 'zero'; + if (isBetween(n % 100, 11, 99)) return 'many'; + if (n == 2) return 'two'; + if (n == 1) return 'one'; + return 'other'; + }, + '2': function (n) { + if (n !== 0 && n % 10 === 0) return 'many'; + if (n == 2) return 'two'; + if (n == 1) return 'one'; + return 'other'; + }, + '3': function (n) { + if (n == 1) return 'one'; + return 'other'; + }, + '4': function (n) { + if (isBetween(n, 0, 1)) return 'one'; + return 'other'; + }, + '5': function (n) { + if (isBetween(n, 0, 2) && n != 2) return 'one'; + return 'other'; + }, + '6': function (n) { + if (n === 0) return 'zero'; + if (n % 10 == 1 && n % 100 != 11) return 'one'; + return 'other'; + }, + '7': function (n) { + if (n == 2) return 'two'; + if (n == 1) return 'one'; + return 'other'; + }, + '8': function (n) { + if (isBetween(n, 3, 6)) return 'few'; + if (isBetween(n, 7, 10)) return 'many'; + if (n == 2) return 'two'; + if (n == 1) return 'one'; + return 'other'; + }, + '9': function (n) { + if (n === 0 || n != 1 && isBetween(n % 100, 1, 19)) return 'few'; + if (n == 1) return 'one'; + return 'other'; + }, + '10': function (n) { + if (isBetween(n % 10, 2, 9) && !isBetween(n % 100, 11, 19)) return 'few'; + if (n % 10 == 1 && !isBetween(n % 100, 11, 19)) return 'one'; + return 'other'; + }, + '11': function (n) { + if (isBetween(n % 10, 2, 4) && !isBetween(n % 100, 12, 14)) return 'few'; + if (n % 10 === 0 || isBetween(n % 10, 5, 9) || isBetween(n % 100, 11, 14)) return 'many'; + if (n % 10 == 1 && n % 100 != 11) return 'one'; + return 'other'; + }, + '12': function (n) { + if (isBetween(n, 2, 4)) return 'few'; + if (n == 1) return 'one'; + return 'other'; + }, + '13': function (n) { + if (isBetween(n % 10, 2, 4) && !isBetween(n % 100, 12, 14)) return 'few'; + if (n != 1 && isBetween(n % 10, 0, 1) || isBetween(n % 10, 5, 9) || isBetween(n % 100, 12, 14)) return 'many'; + if (n == 1) return 'one'; + return 'other'; + }, + '14': function (n) { + if (isBetween(n % 100, 3, 4)) return 'few'; + if (n % 100 == 2) return 'two'; + if (n % 100 == 1) return 'one'; + return 'other'; + }, + '15': function (n) { + if (n === 0 || isBetween(n % 100, 2, 10)) return 'few'; + if (isBetween(n % 100, 11, 19)) return 'many'; + if (n == 1) return 'one'; + return 'other'; + }, + '16': function (n) { + if (n % 10 == 1 && n != 11) return 'one'; + return 'other'; + }, + '17': function (n) { + if (n == 3) return 'few'; + if (n === 0) return 'zero'; + if (n == 6) return 'many'; + if (n == 2) return 'two'; + if (n == 1) return 'one'; + return 'other'; + }, + '18': function (n) { + if (n === 0) return 'zero'; + if (isBetween(n, 0, 2) && n !== 0 && n != 2) return 'one'; + return 'other'; + }, + '19': function (n) { + if (isBetween(n, 2, 10)) return 'few'; + if (isBetween(n, 0, 1)) return 'one'; + return 'other'; + }, + '20': function (n) { + if ((isBetween(n % 10, 3, 4) || n % 10 == 9) && !(isBetween(n % 100, 10, 19) || isBetween(n % 100, 70, 79) || isBetween(n % 100, 90, 99))) return 'few'; + if (n % 1000000 === 0 && n !== 0) return 'many'; + if (n % 10 == 2 && !isIn(n % 100, [12, 72, 92])) return 'two'; + if (n % 10 == 1 && !isIn(n % 100, [11, 71, 91])) return 'one'; + return 'other'; + }, + '21': function (n) { + if (n === 0) return 'zero'; + if (n == 1) return 'one'; + return 'other'; + }, + '22': function (n) { + if (isBetween(n, 0, 1) || isBetween(n, 11, 99)) return 'one'; + return 'other'; + }, + '23': function (n) { + if (isBetween(n % 10, 1, 2) || n % 20 === 0) return 'one'; + return 'other'; + }, + '24': function (n) { + if (isBetween(n, 3, 10) || isBetween(n, 13, 19)) return 'few'; + if (isIn(n, [2, 12])) return 'two'; + if (isIn(n, [1, 11])) return 'one'; + return 'other'; + } + }; + var index = locales2rules[lang.replace(/-.*$/, '')]; + if (!(index in pluralRules)) { + console.warn('plural form unknown for [' + lang + ']'); + return function () { + return 'other'; + }; + } + return pluralRules[index]; + } + gMacros.plural = function (str, param, key, prop) { + var n = parseFloat(param); + if (isNaN(n)) return str; + if (prop != gTextProp) return str; + if (!gMacros._pluralRules) { + gMacros._pluralRules = getPluralRules(gLanguage); + } + var index = '[' + gMacros._pluralRules(n) + ']'; + if (n === 0 && key + '[zero]' in gL10nData) { + str = gL10nData[key + '[zero]'][prop]; + } else if (n == 1 && key + '[one]' in gL10nData) { + str = gL10nData[key + '[one]'][prop]; + } else if (n == 2 && key + '[two]' in gL10nData) { + str = gL10nData[key + '[two]'][prop]; + } else if (key + index in gL10nData) { + str = gL10nData[key + index][prop]; + } else if (key + '[other]' in gL10nData) { + str = gL10nData[key + '[other]'][prop]; + } + return str; + }; + function getL10nData(key, args, fallback) { + var data = gL10nData[key]; + if (!data) { + console.warn('#' + key + ' is undefined.'); + if (!fallback) { + return null; + } + data = fallback; + } + var rv = {}; + for (var prop in data) { + var str = data[prop]; + str = substIndexes(str, args, key, prop); + str = substArguments(str, args, key); + rv[prop] = str; + } + return rv; + } + function substIndexes(str, args, key, prop) { + var reIndex = /\{\[\s*([a-zA-Z]+)\(([a-zA-Z]+)\)\s*\]\}/; + var reMatch = reIndex.exec(str); + if (!reMatch || !reMatch.length) return str; + var macroName = reMatch[1]; + var paramName = reMatch[2]; + var param; + if (args && paramName in args) { + param = args[paramName]; + } else if (paramName in gL10nData) { + param = gL10nData[paramName]; + } + if (macroName in gMacros) { + var macro = gMacros[macroName]; + str = macro(str, param, key, prop); + } + return str; + } + function substArguments(str, args, key) { + var reArgs = /\{\{\s*(.+?)\s*\}\}/g; + return str.replace(reArgs, function (matched_text, arg) { + if (args && arg in args) { + return args[arg]; + } + if (arg in gL10nData) { + return gL10nData[arg]; + } + console.log('argument {{' + arg + '}} for #' + key + ' is undefined.'); + return matched_text; + }); + } + function translateElement(element) { + var l10n = getL10nAttributes(element); + if (!l10n.id) return; + var data = getL10nData(l10n.id, l10n.args); + if (!data) { + console.warn('#' + l10n.id + ' is undefined.'); + return; + } + if (data[gTextProp]) { + if (getChildElementCount(element) === 0) { + element[gTextProp] = data[gTextProp]; + } else { + var children = element.childNodes; + var found = false; + for (var i = 0, l = children.length; i < l; i++) { + if (children[i].nodeType === 3 && /\S/.test(children[i].nodeValue)) { + if (found) { + children[i].nodeValue = ''; + } else { + children[i].nodeValue = data[gTextProp]; + found = true; + } + } + } + if (!found) { + var textNode = document.createTextNode(data[gTextProp]); + element.prepend(textNode); + } + } + delete data[gTextProp]; + } + for (var k in data) { + element[k] = data[k]; + } + } + function getChildElementCount(element) { + if (element.children) { + return element.children.length; + } + if (typeof element.childElementCount !== 'undefined') { + return element.childElementCount; + } + var count = 0; + for (var i = 0; i < element.childNodes.length; i++) { + count += element.nodeType === 1 ? 1 : 0; + } + return count; + } + function translateFragment(element) { + element = element || document.documentElement; + var children = getTranslatableChildren(element); + var elementCount = children.length; + for (var i = 0; i < elementCount; i++) { + translateElement(children[i]); + } + translateElement(element); + } + return { + get: function (key, args, fallbackString) { + var index = key.lastIndexOf('.'); + var prop = gTextProp; + if (index > 0) { + prop = key.substring(index + 1); + key = key.substring(0, index); + } + var fallback; + if (fallbackString) { + fallback = {}; + fallback[prop] = fallbackString; + } + var data = getL10nData(key, args, fallback); + if (data && prop in data) { + return data[prop]; + } + return '{{' + key + '}}'; + }, + getData: function () { + return gL10nData; + }, + getText: function () { + return gTextData; + }, + getLanguage: function () { + return gLanguage; + }, + setLanguage: function (lang, callback) { + loadLocale(lang, function () { + if (callback) callback(); + }); + }, + getDirection: function () { + var rtlList = ['ar', 'he', 'fa', 'ps', 'ur']; + var shortCode = gLanguage.split('-', 1)[0]; + return rtlList.indexOf(shortCode) >= 0 ? 'rtl' : 'ltr'; + }, + translate: translateFragment, + getReadyState: function () { + return gReadyState; + }, + ready: function (callback) { + if (!callback) { + return; + } else if (gReadyState == 'complete' || gReadyState == 'interactive') { + window.setTimeout(function () { + callback(); + }); + } else if (document.addEventListener) { + document.addEventListener('localized', function once() { + document.removeEventListener('localized', once); + callback(); + }); + } + } + }; +}(window, document); + +/***/ }), +/* 46 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.GenericScripting = void 0; +exports.docPropertiesLookup = docPropertiesLookup; +var _pdfjsLib = __webpack_require__(4); +async function docPropertiesLookup(pdfDocument) { + const url = "", + baseUrl = url.split("#")[0]; + let { + info, + metadata, + contentDispositionFilename, + contentLength + } = await pdfDocument.getMetadata(); + if (!contentLength) { + const { + length + } = await pdfDocument.getDownloadInfo(); + contentLength = length; + } + return { + ...info, + baseURL: baseUrl, + filesize: contentLength, + filename: contentDispositionFilename || (0, _pdfjsLib.getPdfFilenameFromUrl)(url), + metadata: metadata?.getRaw(), + authors: metadata?.get("dc:creator"), + numPages: pdfDocument.numPages, + URL: url + }; +} +class GenericScripting { + constructor(sandboxBundleSrc) { + this._ready = (0, _pdfjsLib.loadScript)(sandboxBundleSrc, true).then(() => { + return window.pdfjsSandbox.QuickJSSandbox(); + }); + } + async createSandbox(data) { + const sandbox = await this._ready; + sandbox.create(data); + } + async dispatchEventInSandbox(event) { + const sandbox = await this._ready; + setTimeout(() => sandbox.dispatchEvent(event), 0); + } + async destroySandbox() { + const sandbox = await this._ready; + sandbox.nukeSandbox(); + } +} +exports.GenericScripting = GenericScripting; + +/***/ }), +/* 47 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFPrintService = PDFPrintService; +var _pdfjsLib = __webpack_require__(4); +var _app = __webpack_require__(2); +var _print_utils = __webpack_require__(48); +let activeService = null; +let dialog = null; +let overlayManager = null; +function renderPage(activeServiceOnEntry, pdfDocument, pageNumber, size, printResolution, optionalContentConfigPromise, printAnnotationStoragePromise) { + const scratchCanvas = activeService.scratchCanvas; + const PRINT_UNITS = printResolution / _pdfjsLib.PixelsPerInch.PDF; + scratchCanvas.width = Math.floor(size.width * PRINT_UNITS); + scratchCanvas.height = Math.floor(size.height * PRINT_UNITS); + const ctx = scratchCanvas.getContext("2d"); + ctx.save(); + ctx.fillStyle = "rgb(255, 255, 255)"; + ctx.fillRect(0, 0, scratchCanvas.width, scratchCanvas.height); + ctx.restore(); + return Promise.all([pdfDocument.getPage(pageNumber), printAnnotationStoragePromise]).then(function ([pdfPage, printAnnotationStorage]) { + const renderContext = { + canvasContext: ctx, + transform: [PRINT_UNITS, 0, 0, PRINT_UNITS, 0, 0], + viewport: pdfPage.getViewport({ + scale: 1, + rotation: size.rotation + }), + intent: "print", + annotationMode: _pdfjsLib.AnnotationMode.ENABLE_STORAGE, + optionalContentConfigPromise, + printAnnotationStorage + }; + return pdfPage.render(renderContext).promise; + }); +} +function PDFPrintService(pdfDocument, pagesOverview, printContainer, printResolution, optionalContentConfigPromise = null, printAnnotationStoragePromise = null, l10n) { + this.pdfDocument = pdfDocument; + this.pagesOverview = pagesOverview; + this.printContainer = printContainer; + this._printResolution = printResolution || 150; + this._optionalContentConfigPromise = optionalContentConfigPromise || pdfDocument.getOptionalContentConfig(); + this._printAnnotationStoragePromise = printAnnotationStoragePromise || Promise.resolve(); + this.l10n = l10n; + this.currentPage = -1; + this.scratchCanvas = document.createElement("canvas"); +} +PDFPrintService.prototype = { + layout() { + this.throwIfInactive(); + const body = document.querySelector("body"); + body.setAttribute("data-pdfjsprinting", true); + const hasEqualPageSizes = this.pagesOverview.every(function (size) { + return size.width === this.pagesOverview[0].width && size.height === this.pagesOverview[0].height; + }, this); + if (!hasEqualPageSizes) { + console.warn("Not all pages have the same size. The printed " + "result may be incorrect!"); + } + this.pageStyleSheet = document.createElement("style"); + const pageSize = this.pagesOverview[0]; + this.pageStyleSheet.textContent = "@page { size: " + pageSize.width + "pt " + pageSize.height + "pt;}"; + body.append(this.pageStyleSheet); + }, + destroy() { + if (activeService !== this) { + return; + } + this.printContainer.textContent = ""; + const body = document.querySelector("body"); + body.removeAttribute("data-pdfjsprinting"); + if (this.pageStyleSheet) { + this.pageStyleSheet.remove(); + this.pageStyleSheet = null; + } + this.scratchCanvas.width = this.scratchCanvas.height = 0; + this.scratchCanvas = null; + activeService = null; + ensureOverlay().then(function () { + if (overlayManager.active === dialog) { + overlayManager.close(dialog); + } + }); + }, + renderPages() { + if (this.pdfDocument.isPureXfa) { + (0, _print_utils.getXfaHtmlForPrinting)(this.printContainer, this.pdfDocument); + return Promise.resolve(); + } + const pageCount = this.pagesOverview.length; + const renderNextPage = (resolve, reject) => { + this.throwIfInactive(); + if (++this.currentPage >= pageCount) { + renderProgress(pageCount, pageCount, this.l10n); + resolve(); + return; + } + const index = this.currentPage; + renderProgress(index, pageCount, this.l10n); + renderPage(this, this.pdfDocument, index + 1, this.pagesOverview[index], this._printResolution, this._optionalContentConfigPromise, this._printAnnotationStoragePromise).then(this.useRenderedPage.bind(this)).then(function () { + renderNextPage(resolve, reject); + }, reject); + }; + return new Promise(renderNextPage); + }, + useRenderedPage() { + this.throwIfInactive(); + const img = document.createElement("img"); + const scratchCanvas = this.scratchCanvas; + if ("toBlob" in scratchCanvas) { + scratchCanvas.toBlob(function (blob) { + img.src = URL.createObjectURL(blob); + }); + } else { + img.src = scratchCanvas.toDataURL(); + } + const wrapper = document.createElement("div"); + wrapper.className = "printedPage"; + wrapper.append(img); + this.printContainer.append(wrapper); + return new Promise(function (resolve, reject) { + img.onload = resolve; + img.onerror = reject; + }); + }, + performPrint() { + this.throwIfInactive(); + return new Promise(resolve => { + setTimeout(() => { + if (!this.active) { + resolve(); + return; + } + print.call(window); + setTimeout(resolve, 20); + }, 0); + }); + }, + get active() { + return this === activeService; + }, + throwIfInactive() { + if (!this.active) { + throw new Error("This print request was cancelled or completed."); + } + } +}; +const print = window.print; +window.print = function () { + if (activeService) { + console.warn("Ignored window.print() because of a pending print job."); + return; + } + ensureOverlay().then(function () { + if (activeService) { + overlayManager.open(dialog); + } + }); + try { + dispatchEvent("beforeprint"); + } finally { + if (!activeService) { + console.error("Expected print service to be initialized."); + ensureOverlay().then(function () { + if (overlayManager.active === dialog) { + overlayManager.close(dialog); + } + }); + return; + } + const activeServiceOnEntry = activeService; + activeService.renderPages().then(function () { + return activeServiceOnEntry.performPrint(); + }).catch(function () {}).then(function () { + if (activeServiceOnEntry.active) { + abort(); + } + }); + } +}; +function dispatchEvent(eventType) { + const event = document.createEvent("CustomEvent"); + event.initCustomEvent(eventType, false, false, "custom"); + window.dispatchEvent(event); +} +function abort() { + if (activeService) { + activeService.destroy(); + dispatchEvent("afterprint"); + } +} +function renderProgress(index, total, l10n) { + dialog ||= document.getElementById("printServiceDialog"); + const progress = Math.round(100 * index / total); + const progressBar = dialog.querySelector("progress"); + const progressPerc = dialog.querySelector(".relative-progress"); + progressBar.value = progress; + l10n.get("print_progress_percent", { + progress + }).then(msg => { + progressPerc.textContent = msg; + }); +} +window.addEventListener("keydown", function (event) { + if (event.keyCode === 80 && (event.ctrlKey || event.metaKey) && !event.altKey && (!event.shiftKey || window.chrome || window.opera)) { + window.print(); + event.preventDefault(); + event.stopImmediatePropagation(); + } +}, true); +if ("onbeforeprint" in window) { + const stopPropagationIfNeeded = function (event) { + if (event.detail !== "custom") { + event.stopImmediatePropagation(); + } + }; + window.addEventListener("beforeprint", stopPropagationIfNeeded); + window.addEventListener("afterprint", stopPropagationIfNeeded); +} +let overlayPromise; +function ensureOverlay() { + if (!overlayPromise) { + overlayManager = _app.PDFViewerApplication.overlayManager; + if (!overlayManager) { + throw new Error("The overlay manager has not yet been initialized."); + } + dialog ||= document.getElementById("printServiceDialog"); + overlayPromise = overlayManager.register(dialog, true); + document.getElementById("printCancel").onclick = abort; + dialog.addEventListener("close", abort); + } + return overlayPromise; +} +_app.PDFPrintServiceFactory.instance = { + supportsPrinting: true, + createPrintService(pdfDocument, pagesOverview, printContainer, printResolution, optionalContentConfigPromise, printAnnotationStoragePromise, l10n) { + if (activeService) { + throw new Error("The print service is created and active."); + } + activeService = new PDFPrintService(pdfDocument, pagesOverview, printContainer, printResolution, optionalContentConfigPromise, printAnnotationStoragePromise, l10n); + return activeService; + } +}; + +/***/ }), +/* 48 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getXfaHtmlForPrinting = getXfaHtmlForPrinting; +var _pdfjsLib = __webpack_require__(4); +var _pdf_link_service = __webpack_require__(7); +var _xfa_layer_builder = __webpack_require__(38); +function getXfaHtmlForPrinting(printContainer, pdfDocument) { + const xfaHtml = pdfDocument.allXfaHtml; + const linkService = new _pdf_link_service.SimpleLinkService(); + const scale = Math.round(_pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS * 100) / 100; + for (const xfaPage of xfaHtml.children) { + const page = document.createElement("div"); + page.className = "xfaPrintedPage"; + printContainer.append(page); + const builder = new _xfa_layer_builder.XfaLayerBuilder({ + pageDiv: page, + pdfPage: null, + annotationStorage: pdfDocument.annotationStorage, + linkService, + xfaHtml: xfaPage + }); + const viewport = (0, _pdfjsLib.getXfaPageViewport)(xfaPage, { + scale + }); + builder.render(viewport, "print"); + } +} + +/***/ }) +/******/ ]); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. +(() => { +var exports = __webpack_exports__; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "PDFViewerApplication", ({ + enumerable: true, + get: function () { + return _app.PDFViewerApplication; + } +})); +exports.PDFViewerApplicationConstants = void 0; +Object.defineProperty(exports, "PDFViewerApplicationOptions", ({ + enumerable: true, + get: function () { + return _app_options.AppOptions; + } +})); +__webpack_require__(1); +__webpack_require__(47); +var _ui_utils = __webpack_require__(3); +var _app_options = __webpack_require__(5); +var _pdf_link_service = __webpack_require__(7); +var _app = __webpack_require__(2); +const pdfjsVersion = '3.5.141'; +const pdfjsBuild = 'be0f6ee08'; +const AppConstants = { + LinkTarget: _pdf_link_service.LinkTarget, + RenderingStates: _ui_utils.RenderingStates, + ScrollMode: _ui_utils.ScrollMode, + SpreadMode: _ui_utils.SpreadMode +}; +exports.PDFViewerApplicationConstants = AppConstants; +window.PDFViewerApplication = _app.PDFViewerApplication; +window.PDFViewerApplicationConstants = AppConstants; +window.PDFViewerApplicationOptions = _app_options.AppOptions; +function getViewerConfiguration() { + return { + appContainer: document.body, + mainContainer: document.getElementById("viewerContainer"), + viewerContainer: document.getElementById("viewer"), + toolbar: { + container: document.getElementById("toolbarViewer"), + numPages: document.getElementById("numPages"), + pageNumber: document.getElementById("pageNumber"), + scaleSelect: document.getElementById("scaleSelect"), + customScaleOption: document.getElementById("customScaleOption"), + previous: document.getElementById("previous"), + next: document.getElementById("next"), + zoomIn: document.getElementById("zoomIn"), + zoomOut: document.getElementById("zoomOut"), + viewFind: document.getElementById("viewFind"), + openFile: document.getElementById("openFile"), + print: document.getElementById("print"), + editorFreeTextButton: document.getElementById("editorFreeText"), + editorFreeTextParamsToolbar: document.getElementById("editorFreeTextParamsToolbar"), + editorInkButton: document.getElementById("editorInk"), + editorInkParamsToolbar: document.getElementById("editorInkParamsToolbar"), + download: document.getElementById("download") + }, + secondaryToolbar: { + toolbar: document.getElementById("secondaryToolbar"), + toggleButton: document.getElementById("secondaryToolbarToggle"), + presentationModeButton: document.getElementById("presentationMode"), + openFileButton: document.getElementById("secondaryOpenFile"), + printButton: document.getElementById("secondaryPrint"), + downloadButton: document.getElementById("secondaryDownload"), + viewBookmarkButton: document.getElementById("viewBookmark"), + firstPageButton: document.getElementById("firstPage"), + lastPageButton: document.getElementById("lastPage"), + pageRotateCwButton: document.getElementById("pageRotateCw"), + pageRotateCcwButton: document.getElementById("pageRotateCcw"), + cursorSelectToolButton: document.getElementById("cursorSelectTool"), + cursorHandToolButton: document.getElementById("cursorHandTool"), + scrollPageButton: document.getElementById("scrollPage"), + scrollVerticalButton: document.getElementById("scrollVertical"), + scrollHorizontalButton: document.getElementById("scrollHorizontal"), + scrollWrappedButton: document.getElementById("scrollWrapped"), + spreadNoneButton: document.getElementById("spreadNone"), + spreadOddButton: document.getElementById("spreadOdd"), + spreadEvenButton: document.getElementById("spreadEven"), + documentPropertiesButton: document.getElementById("documentProperties") + }, + sidebar: { + outerContainer: document.getElementById("outerContainer"), + sidebarContainer: document.getElementById("sidebarContainer"), + toggleButton: document.getElementById("sidebarToggle"), + thumbnailButton: document.getElementById("viewThumbnail"), + outlineButton: document.getElementById("viewOutline"), + attachmentsButton: document.getElementById("viewAttachments"), + layersButton: document.getElementById("viewLayers"), + thumbnailView: document.getElementById("thumbnailView"), + outlineView: document.getElementById("outlineView"), + attachmentsView: document.getElementById("attachmentsView"), + layersView: document.getElementById("layersView"), + outlineOptionsContainer: document.getElementById("outlineOptionsContainer"), + currentOutlineItemButton: document.getElementById("currentOutlineItem") + }, + sidebarResizer: { + outerContainer: document.getElementById("outerContainer"), + resizer: document.getElementById("sidebarResizer") + }, + findBar: { + bar: document.getElementById("findbar"), + toggleButton: document.getElementById("viewFind"), + findField: document.getElementById("findInput"), + highlightAllCheckbox: document.getElementById("findHighlightAll"), + caseSensitiveCheckbox: document.getElementById("findMatchCase"), + matchDiacriticsCheckbox: document.getElementById("findMatchDiacritics"), + entireWordCheckbox: document.getElementById("findEntireWord"), + findMsg: document.getElementById("findMsg"), + findResultsCount: document.getElementById("findResultsCount"), + findPreviousButton: document.getElementById("findPrevious"), + findNextButton: document.getElementById("findNext") + }, + passwordOverlay: { + dialog: document.getElementById("passwordDialog"), + label: document.getElementById("passwordText"), + input: document.getElementById("password"), + submitButton: document.getElementById("passwordSubmit"), + cancelButton: document.getElementById("passwordCancel") + }, + documentProperties: { + dialog: document.getElementById("documentPropertiesDialog"), + closeButton: document.getElementById("documentPropertiesClose"), + fields: { + fileName: document.getElementById("fileNameField"), + fileSize: document.getElementById("fileSizeField"), + title: document.getElementById("titleField"), + author: document.getElementById("authorField"), + subject: document.getElementById("subjectField"), + keywords: document.getElementById("keywordsField"), + creationDate: document.getElementById("creationDateField"), + modificationDate: document.getElementById("modificationDateField"), + creator: document.getElementById("creatorField"), + producer: document.getElementById("producerField"), + version: document.getElementById("versionField"), + pageCount: document.getElementById("pageCountField"), + pageSize: document.getElementById("pageSizeField"), + linearized: document.getElementById("linearizedField") + } + }, + annotationEditorParams: { + editorFreeTextFontSize: document.getElementById("editorFreeTextFontSize"), + editorFreeTextColor: document.getElementById("editorFreeTextColor"), + editorInkColor: document.getElementById("editorInkColor"), + editorInkThickness: document.getElementById("editorInkThickness"), + editorInkOpacity: document.getElementById("editorInkOpacity") + }, + printContainer: document.getElementById("printContainer"), + openFileInput: document.getElementById("fileInput"), + debuggerScriptPath: "./debugger.js" + }; +} +function webViewerLoad() { + const config = getViewerConfiguration(); + const event = document.createEvent("CustomEvent"); + event.initCustomEvent("webviewerloaded", true, true, { + source: window + }); + try { + parent.document.dispatchEvent(event); + } catch (ex) { + console.error(`webviewerloaded: ${ex}`); + document.dispatchEvent(event); + } + _app.PDFViewerApplication.run(config); +} +document.blockUnblockOnload?.(true); +if (document.readyState === "interactive" || document.readyState === "complete") { + webViewerLoad(); +} else { + document.addEventListener("DOMContentLoaded", webViewerLoad, true); +} +})(); + +/******/ })() +; +//# sourceMappingURL=viewer.js.map \ No newline at end of file diff --git a/www/include/vendor/pdfjs/web/viewer.js.map b/www/include/vendor/pdfjs/web/viewer.js.map new file mode 100644 index 0000000..ce35e6a --- /dev/null +++ b/www/include/vendor/pdfjs/web/viewer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"viewer.js","mappings":"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","sources":["webpack://pdf.js/web/genericcom.js","webpack://pdf.js/web/app.js","webpack://pdf.js/web/ui_utils.js","webpack://pdf.js/web/pdfjs.js","webpack://pdf.js/web/app_options.js","webpack://pdf.js/web/event_utils.js","webpack://pdf.js/web/pdf_link_service.js","webpack://pdf.js/web/annotation_editor_params.js","webpack://pdf.js/web/overlay_manager.js","webpack://pdf.js/web/password_prompt.js","webpack://pdf.js/web/pdf_attachment_viewer.js","webpack://pdf.js/web/base_tree_viewer.js","webpack://pdf.js/web/pdf_cursor_tools.js","webpack://pdf.js/web/grab_to_pan.js","webpack://pdf.js/web/pdf_document_properties.js","webpack://pdf.js/web/pdf_find_bar.js","webpack://pdf.js/web/pdf_find_controller.js","webpack://pdf.js/web/pdf_find_utils.js","webpack://pdf.js/web/pdf_history.js","webpack://pdf.js/web/pdf_layer_viewer.js","webpack://pdf.js/web/pdf_outline_viewer.js","webpack://pdf.js/web/pdf_presentation_mode.js","webpack://pdf.js/web/pdf_rendering_queue.js","webpack://pdf.js/web/pdf_scripting_manager.js","webpack://pdf.js/web/pdf_sidebar.js","webpack://pdf.js/web/pdf_sidebar_resizer.js","webpack://pdf.js/web/pdf_thumbnail_viewer.js","webpack://pdf.js/web/pdf_thumbnail_view.js","webpack://pdf.js/web/pdf_viewer.js","webpack://pdf.js/web/l10n_utils.js","webpack://pdf.js/web/pdf_page_view.js","webpack://pdf.js/web/annotation_editor_layer_builder.js","webpack://pdf.js/web/annotation_layer_builder.js","webpack://pdf.js/web/struct_tree_layer_builder.js","webpack://pdf.js/web/text_accessibility.js","webpack://pdf.js/web/text_highlighter.js","webpack://pdf.js/web/text_layer_builder.js","webpack://pdf.js/web/xfa_layer_builder.js","webpack://pdf.js/web/secondary_toolbar.js","webpack://pdf.js/web/toolbar.js","webpack://pdf.js/web/view_history.js","webpack://pdf.js/web/preferences.js","webpack://pdf.js/web/download_manager.js","webpack://pdf.js/web/genericl10n.js","webpack://pdf.js/external/webL10n/l10n.js","webpack://pdf.js/web/generic_scripting.js","webpack://pdf.js/web/pdf_print_service.js","webpack://pdf.js/web/print_utils.js","webpack://pdf.js/webpack/bootstrap","webpack://pdf.js/web/viewer.js"],"sourcesContent":["/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DefaultExternalServices, PDFViewerApplication } from \"./app.js\";\nimport { BasePreferences } from \"./preferences.js\";\nimport { DownloadManager } from \"./download_manager.js\";\nimport { GenericL10n } from \"./genericl10n.js\";\nimport { GenericScripting } from \"./generic_scripting.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"GENERIC\")) {\n throw new Error(\n 'Module \"pdfjs-web/genericcom\" shall not be used outside GENERIC build.'\n );\n}\n\nconst GenericCom = {};\n\nclass GenericPreferences extends BasePreferences {\n async _writeToStorage(prefObj) {\n localStorage.setItem(\"pdfjs.preferences\", JSON.stringify(prefObj));\n }\n\n async _readFromStorage(prefObj) {\n return JSON.parse(localStorage.getItem(\"pdfjs.preferences\"));\n }\n}\n\nclass GenericExternalServices extends DefaultExternalServices {\n static createDownloadManager() {\n return new DownloadManager();\n }\n\n static createPreferences() {\n return new GenericPreferences();\n }\n\n static createL10n({ locale = \"en-US\" }) {\n return new GenericL10n(locale);\n }\n\n static createScripting({ sandboxBundleSrc }) {\n return new GenericScripting(sandboxBundleSrc);\n }\n}\nPDFViewerApplication.externalServices = GenericExternalServices;\n\nexport { GenericCom };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n animationStarted,\n apiPageLayoutToViewerModes,\n apiPageModeToSidebarView,\n AutoPrintRegExp,\n CursorTool,\n DEFAULT_SCALE_VALUE,\n getActiveOrFocusedElement,\n isValidRotation,\n isValidScrollMode,\n isValidSpreadMode,\n normalizeWheelEventDirection,\n parseQueryString,\n ProgressBar,\n RendererType,\n RenderingStates,\n ScrollMode,\n SidebarView,\n SpreadMode,\n TextLayerMode,\n} from \"./ui_utils.js\";\nimport {\n AnnotationEditorType,\n build,\n createPromiseCapability,\n FeatureTest,\n getDocument,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n GlobalWorkerOptions,\n InvalidPDFException,\n isDataScheme,\n isPdfFile,\n loadScript,\n MissingPDFException,\n OPS,\n PDFWorker,\n shadow,\n UnexpectedResponseException,\n version,\n} from \"pdfjs-lib\";\nimport { AppOptions, OptionKind } from \"./app_options.js\";\nimport { AutomationEventBus, EventBus } from \"./event_utils.js\";\nimport { LinkTarget, PDFLinkService } from \"./pdf_link_service.js\";\nimport { AnnotationEditorParams } from \"web-annotation_editor_params\";\nimport { OverlayManager } from \"./overlay_manager.js\";\nimport { PasswordPrompt } from \"./password_prompt.js\";\nimport { PDFAttachmentViewer } from \"web-pdf_attachment_viewer\";\nimport { PDFCursorTools } from \"web-pdf_cursor_tools\";\nimport { PDFDocumentProperties } from \"web-pdf_document_properties\";\nimport { PDFFindBar } from \"web-pdf_find_bar\";\nimport { PDFFindController } from \"./pdf_find_controller.js\";\nimport { PDFHistory } from \"./pdf_history.js\";\nimport { PDFLayerViewer } from \"web-pdf_layer_viewer\";\nimport { PDFOutlineViewer } from \"web-pdf_outline_viewer\";\nimport { PDFPresentationMode } from \"web-pdf_presentation_mode\";\nimport { PDFRenderingQueue } from \"./pdf_rendering_queue.js\";\nimport { PDFScriptingManager } from \"./pdf_scripting_manager.js\";\nimport { PDFSidebar } from \"web-pdf_sidebar\";\nimport { PDFSidebarResizer } from \"web-pdf_sidebar_resizer\";\nimport { PDFThumbnailViewer } from \"web-pdf_thumbnail_viewer\";\nimport { PDFViewer } from \"./pdf_viewer.js\";\nimport { SecondaryToolbar } from \"web-secondary_toolbar\";\nimport { Toolbar } from \"web-toolbar\";\nimport { ViewHistory } from \"./view_history.js\";\n\nconst FORCE_PAGES_LOADED_TIMEOUT = 10000; // ms\nconst WHEEL_ZOOM_DISABLED_TIMEOUT = 1000; // ms\n\nconst ViewOnLoad = {\n UNKNOWN: -1,\n PREVIOUS: 0, // Default value.\n INITIAL: 1,\n};\n\nconst ViewerCssTheme = {\n AUTOMATIC: 0, // Default value.\n LIGHT: 1,\n DARK: 2,\n};\n\nclass DefaultExternalServices {\n constructor() {\n throw new Error(\"Cannot initialize DefaultExternalServices.\");\n }\n\n static updateFindControlState(data) {}\n\n static updateFindMatchesCount(data) {}\n\n static initPassiveLoading(callbacks) {}\n\n static reportTelemetry(data) {}\n\n static createDownloadManager() {\n throw new Error(\"Not implemented: createDownloadManager\");\n }\n\n static createPreferences() {\n throw new Error(\"Not implemented: createPreferences\");\n }\n\n static createL10n(options) {\n throw new Error(\"Not implemented: createL10n\");\n }\n\n static createScripting(options) {\n throw new Error(\"Not implemented: createScripting\");\n }\n\n static get supportsPinchToZoom() {\n return shadow(this, \"supportsPinchToZoom\", true);\n }\n\n static get supportsIntegratedFind() {\n return shadow(this, \"supportsIntegratedFind\", false);\n }\n\n static get supportsDocumentFonts() {\n return shadow(this, \"supportsDocumentFonts\", true);\n }\n\n static get supportedMouseWheelZoomModifierKeys() {\n return shadow(this, \"supportedMouseWheelZoomModifierKeys\", {\n ctrlKey: true,\n metaKey: true,\n });\n }\n\n static get isInAutomation() {\n return shadow(this, \"isInAutomation\", false);\n }\n\n static updateEditorStates(data) {\n throw new Error(\"Not implemented: updateEditorStates\");\n }\n\n static get canvasMaxAreaInBytes() {\n return shadow(this, \"canvasMaxAreaInBytes\", -1);\n }\n}\n\nconst PDFViewerApplication = {\n initialBookmark: document.location.hash.substring(1),\n _initializedCapability: createPromiseCapability(),\n appConfig: null,\n pdfDocument: null,\n pdfLoadingTask: null,\n printService: null,\n /** @type {PDFViewer} */\n pdfViewer: null,\n /** @type {PDFThumbnailViewer} */\n pdfThumbnailViewer: null,\n /** @type {PDFRenderingQueue} */\n pdfRenderingQueue: null,\n /** @type {PDFPresentationMode} */\n pdfPresentationMode: null,\n /** @type {PDFDocumentProperties} */\n pdfDocumentProperties: null,\n /** @type {PDFLinkService} */\n pdfLinkService: null,\n /** @type {PDFHistory} */\n pdfHistory: null,\n /** @type {PDFSidebar} */\n pdfSidebar: null,\n /** @type {PDFSidebarResizer} */\n pdfSidebarResizer: null,\n /** @type {PDFOutlineViewer} */\n pdfOutlineViewer: null,\n /** @type {PDFAttachmentViewer} */\n pdfAttachmentViewer: null,\n /** @type {PDFLayerViewer} */\n pdfLayerViewer: null,\n /** @type {PDFCursorTools} */\n pdfCursorTools: null,\n /** @type {PDFScriptingManager} */\n pdfScriptingManager: null,\n /** @type {ViewHistory} */\n store: null,\n /** @type {DownloadManager} */\n downloadManager: null,\n /** @type {OverlayManager} */\n overlayManager: null,\n /** @type {Preferences} */\n preferences: null,\n /** @type {Toolbar} */\n toolbar: null,\n /** @type {SecondaryToolbar} */\n secondaryToolbar: null,\n /** @type {EventBus} */\n eventBus: null,\n /** @type {IL10n} */\n l10n: null,\n /** @type {AnnotationEditorParams} */\n annotationEditorParams: null,\n isInitialViewSet: false,\n downloadComplete: false,\n isViewerEmbedded: window.parent !== window,\n url: \"\",\n baseUrl: \"\",\n _downloadUrl: \"\",\n externalServices: DefaultExternalServices,\n _boundEvents: Object.create(null),\n documentInfo: null,\n metadata: null,\n _contentDispositionFilename: null,\n _contentLength: null,\n _saveInProgress: false,\n _wheelUnusedTicks: 0,\n _wheelUnusedFactor: 1,\n _touchUnusedTicks: 0,\n _touchUnusedFactor: 1,\n _PDFBug: null,\n _hasAnnotationEditors: false,\n _title: document.title,\n _printAnnotationStoragePromise: null,\n _touchInfo: null,\n _isCtrlKeyDown: false,\n\n // Called once when the document is loaded.\n async initialize(appConfig) {\n this.preferences = this.externalServices.createPreferences();\n this.appConfig = appConfig;\n\n await this._initializeOptions();\n this._forceCssTheme();\n await this._initializeL10n();\n\n if (\n this.isViewerEmbedded &&\n AppOptions.get(\"externalLinkTarget\") === LinkTarget.NONE\n ) {\n // Prevent external links from \"replacing\" the viewer,\n // when it's embedded in e.g. an ")?{type:"fragmented",fragments:t,content:"",bookmark:null,beforeBookmark:null}:{type:"complete",fragments:null,content:r,bookmark:null,beforeBookmark:null}}function sh(e,t,n){var r,o,i,g,p,a,h,v,c,l,u,s=n?t.beforeBookmark:t.bookmark;function b(e,t,n,r){for(var o=e;o-tc){for(var l=0;l]*>( | |\\s|\xa0|
|)<\\/"+u+">[\r\n]*|
[\r\n]*)$"),a.replace(s,"")),T(["text","tree"],l.format)||yo(kt.fromDom(r))?l.content=f:l.content=Et.trim(f),(l.no_events?l:t.fire("GetContent",l)).content;var t,n,r,o,i,a,u,s,c,l,f});var d,m,g},setContent:function(e,t){return Rg(c,e,t)},insertContent:function(e,t){return Ng(c,e,t)},addVisual:function(e){var i,t=e,a=(i=c).dom,n=V(t)?t:i.getBody();b(i.hasVisual)&&(i.hasVisual=i.getParam("visual",!0,"boolean")),Y(a.select("table,a",n),function(e){switch(e.nodeName){case"TABLE":var t=i.getParam("visual_table_class","mce-item-table","string"),n=a.getAttrib(e,"border");n&&"0"!==n||!i.hasVisual?a.removeClass(e,t):a.addClass(e,t);break;case"A":var r,o;a.getAttrib(e,"href")||(r=a.getAttrib(e,"name")||e.id,o=i.getParam("visual_anchor_class","mce-item-anchor","string"),r&&i.hasVisual?a.addClass(e,o):a.removeClass(e,o))}}),i.fire("VisualAid",{element:t,hasVisual:i.hasVisual})}},selection:{getContent:function(e,t){return function(e,t,n){var r,o=(r=t,_e(_e({},n=void 0===n?{}:n),{format:r,get:!0,selection:!0})),i=e.fire("BeforeGetContent",o);if(i.isDefaultPrevented())return e.fire("GetContent",i),i.content;if("text"===i.format)return m=e,ve.from(m.selection.getRng()).map(function(e){var t=ve.from(m.dom.getParent(e.commonAncestorContainer,m.dom.isBlock)),n=m.getBody(),r=t.map(function(e){return e.nodeName}).getOr("div").toLowerCase(),o=xt.browser.isIE()&&"pre"!==r,i=m.dom.add(n,r,{"data-mce-bogus":"all",style:"overflow: hidden; opacity: 0;"},e.cloneContents()),a=oh(i,o),u=Eo(i.textContent);if(m.dom.remove(i),rh(u,0)||rh(u,u.length-1)){var s=oh(t.getOr(n),o),c=s.indexOf(a);return-1===c?a:(rh(s,c-1)?" ":"")+a+(rh(s,c+a.length)?" ":"")}return a}).getOr("");i.getInner=!0;var a,u,s,c,l,f,d,m,g=(u=i,s=(a=e).selection.getRng(),c=a.dom.create("body"),l=a.selection.getSel(),f=Ed(a,_l(l)),(d=u.contextual?nh(kt.fromDom(a.getBody()),f).dom:s.cloneContents())&&c.appendChild(d),a.selection.serializer.serialize(c,u));return"tree"===i.format?g:(i.content=e.selection.isCollapsed()?"":g,e.fire("GetContent",i),i.content)}(c,e,t)}},raw:{getModel:function(){return ve.none()}}}}function hh(e){return ke(e.plugins,"rtc")}function vh(e){var u=e;return ue(e.plugins,"rtc").bind(function(e){return ve.from(e.setup)}).fold(function(){return u.rtcInstance=ph(e),ve.none()},function(e){var t,n;return u.rtcInstance=(t=J(null),n=J(""),{undoManager:{beforeChange:te,add:t,undo:t,redo:t,clear:te,reset:te,hasUndo:D,hasRedo:D,transact:t,ignore:te,extra:te},formatter:{match:D,matchAll:J([]),matchNode:J(void 0),canApply:D,closest:n,apply:te,remove:te,toggle:te,formatChanged:J({unbind:te})},editor:{getContent:n,setContent:n,insertContent:te,addVisual:te},selection:{getContent:n},raw:{getModel:J(ve.none())}}),ve.some(function(){return e().then(function(e){return u.rtcInstance=(i=e.undoManager,a=e.formatter,n=e.editor,r=e.selection,t=e.raw,{undoManager:{beforeChange:i.beforeChange,add:i.add,undo:i.undo,redo:i.redo,clear:i.clear,reset:i.reset,hasUndo:i.hasUndo,hasRedo:i.hasRedo,transact:function(e,t,n){return i.transact(n)},ignore:function(e,t){return i.ignore(t)},extra:function(e,t,n,r){return i.extra(n,r)}},formatter:{match:function(e,t,n,r){return a.match(e,o(t),r)},matchAll:a.matchAll,matchNode:a.matchNode,canApply:function(e){return a.canApply(e)},closest:function(e){return a.closest(e)},apply:function(e,t,n){return a.apply(e,o(t))},remove:function(e,t,n,r){return a.remove(e,o(t))},toggle:function(e,t,n){return a.toggle(e,o(t))},formatChanged:function(e,t,n,r,o){return a.formatChanged(t,n,r,o)}},editor:{getContent:function(e,t){return n.getContent(e)},setContent:function(e,t){return n.setContent(e,t)},insertContent:function(e,t){return n.insertContent(e)},addVisual:n.addVisual},selection:{getContent:function(e,t){return r.getContent(t)}},raw:{getModel:function(){return ve.some(t.getRawModel())}}}),e.rtc.isRemote;function o(e){return h(e)?e:{}}var i,a,n,r,t})})})}function bh(e){return e.rtcInstance||ph(e)}function yh(e){var t=e.rtcInstance;if(t)return t;throw new Error("Failed to get RTC instance not yet initialized.")}function Ch(e){return 0===e.dom.length?(Ln(e),ve.none()):ve.some(e)}function xh(e,t,u,s){e.bind(function(a){return(s?jm:Hm)(a.dom,s?a.dom.length:0),t.filter(_n).map(function(e){var t=u,n=s,r=a.dom,o=e.dom,i=(n?r:o).length;n?(Vm(r,o,!1,!n),t.setStart(o,i)):(Vm(o,r,!1,!n),t.setEnd(o,i))})}).orThunk(function(){var e=s;return t.filter(function(e){return zl.isBookmarkNode(e.dom)}).bind(e?Pt:Bt).or(t).filter(_n).map(function(e){var n,r=s;Ot(n=e).each(function(e){var t=n.dom;r&&Bm(e,ss(t,0))?Hm(t,0):!r&&Pm(e,ss(t,t.length))&&jm(t,t.length)})})})}function wh(e,t,n){var r,o=(r=t,_e(_e({format:"html"},n=void 0===n?{}:n),{set:!0,selection:!0,content:r})),i=o;if(!o.no_events){var a=e.fire("BeforeSetContent",o);if(a.isDefaultPrevented())return void e.fire("SetContent",a);i=a}i.content=function(e,t){if("raw"===t.format)return t.content;var n=e.selection.getRng(),r=e.dom.getParent(n.commonAncestorContainer,e.dom.isBlock),o=r?{context:r.nodeName.toLowerCase()}:{},i=e.parser.parse(t.content,_e(_e({isRootContent:!0,forced_root_block:!1},o),t));return im({validate:e.validate},e.schema).serialize(i)}(e,i);var u=e.selection.getRng();!function(e,t){var n=ve.from(t.firstChild).map(kt.fromDom),r=ve.from(t.lastChild).map(kt.fromDom);e.deleteContents(),e.insertNode(t);var o=n.bind(Bt).filter(_n).bind(Ch),i=r.bind(Pt).filter(_n).bind(Ch);xh(o,n,e,!0),xh(i,r,e,!1),e.collapse(!1)}(u,u.createContextualFragment(i.content)),e.selection.setRng(u),td(e,u),i.no_events||e.fire("SetContent",i)}function Sh(e,t,n){var r;e&&ke(e,t)&&(0===(r=U(e[t],function(e){return e!==n})).length?delete e[t]:e[t]=r)}Kg=function(e){var t,n=e.selection.getRng(),r=on(["pre"]);n.collapsed||(t=e.selection.getSelectedBlocks(),Ep(Sp(Sp(t,r),function(e){return r(e.previousSibling)&&-1!==de(t,e.previousSibling)}),function(e){var t,n=e.previousSibling;Xa(t=e).remove(),Xa(n).append("

").append(t.childNodes)}))},wp["pre"]||(wp.pre=[]),wp.pre.push(Kg);var Eh=Et.each,kh=function(e,t,n){Eh(e.childNodes,function(e){kp(e)&&(t(e)&&n(e),e.hasChildNodes()&&kh(e,t,n))})},Nh=or([{keep:[]},{rename:["name"]},{removed:[]}]),_h=/^(src|href|style)$/,Ah=Et.each,Rh=al,Dh=Et.each,Th=Et.each,Oh=function(S,E,k,r){function N(n,e){var t;y((e=void 0===e?A:e).onformat)&&e.onformat(n,e,k,r),Th(e.styles,function(e,t){u.setStyle(n,t,il(e,k))}),!e.styles||(t=u.getAttrib(n,"style"))&&u.setAttrib(n,"data-mce-style",t),Th(e.attributes,function(e,t){u.setAttrib(n,t,il(e,k))}),Th(e.classes,function(e){e=il(e,k),u.hasClass(n,e)||u.addClass(n,e)})}function g(e,t){var n=!1;return Th(e,function(e){return!!ml(e)&&(V(e.collapsed)&&e.collapsed!==a||!u.is(t,e.selector)||jc(t)?void 0:(N(t,e),!(n=!0)))}),n}function o(x,e,l){var w=[],f=!0,d=A.inline||A.block,m=function(e){if(X(e)){var t=u.create(e);return N(t),t}return null}(d);Nl(x,e,function(e){var s,c=function(e){var t=!1,n=f,r=e.nodeName.toLowerCase(),o=e.parentNode,i=o.nodeName.toLowerCase();if(zn(e)&&x.getContentEditable(e)&&(n=f,f="true"===x.getContentEditable(e),t=!0),Wn(e)&&!function(e,t,n,r){if(e.getParam("format_empty_lines",!1,"boolean")&&gl(t)){var o=to(e.schema),i=(a=kt.fromDom(n),s=function(e){return jc(e.dom)},((c=(u=a).dom).parentNode?kr(kt.fromDom(c.parentNode),function(e){return!je(u,e)&&s(e)}):ve.none()).isSome());return se(o,r)&&Wr(kt.fromDom(n.parentNode),!1)&&!i}var a,u,s,c}(S,A,e,i))return s=null,void(dl(A)&&x.remove(e));if(dl(A)&&A.wrapper&&yp(S,e,E,k))s=null;else{if(f&&!t&&dl(A)&&!A.wrapper&&rl(S,r)&&ol(S,i,d)){var a=x.rename(e,d);return N(a),w.push(a),void(s=null)}if(ml(A)){var u=g(_,e);if(!u&&V(o)&&pl(A)&&(u=g(_,o)),!gl(A)||u)return void(s=null)}!f||t||!ol(S,d,r)||!ol(S,i,d)||!l&&jn(e)&&So(e.data)||jc(e)||gl(A)&&x.isBlock(e)?(s=null,Y(xe(e.childNodes),c),t&&(f=n),s=null):(s||(s=x.clone(m,!1),e.parentNode.insertBefore(s,e),w.push(s)),s.appendChild(e))}};Y(e,c)}),!0===A.links&&Y(w,function(e){var t=function(e){"A"===e.nodeName&&N(e,A),Y(xe(e.childNodes),t)};t(e)}),Y(w,function(e){var n,t,r,o,i,a,u,s,c,l,f,d,m,g,p,h,v,b,y=(n=0,Y(e.childNodes,function(e){var t;V(t=e)&&jn(t)&&0===t.length||Jc(e)||n++}),n);function C(e){var t;1===e.nodeType&&e.parentNode&&1===e.parentNode.nodeType&&(t=cl(m,e.parentNode),m.getStyle(e,"color")&&t?m.setStyle(e,"text-decoration",t):m.getStyle(e,"text-decoration")===t&&m.setStyle(e,"text-decoration",null))}!(1t.clientHeight){e=t;break}t=t.parentNode}return e},scrollIntoView:function(e,t){V(e)?(s.inline?Qf:ed)(s,e,t):td(s,p(),t)},placeCaretAt:function(e,t){return h(Ef(e,t,s.getDoc()))},getBoundingClientRect:function(){var e=p();return e.collapsed?ss.fromRangeStart(e).getClientRects()[0]:e.getBoundingClientRect()},destroy:function(){u=l=f=null,y.destroy()}},b=zl(v),y=wf(v,s);function C(t,e){return M(e,function(e){return o.is(e,t)})}function x(e){return o.getParents(e,null,o.getRoot())}return v.bookmarkManager=b,v.controlSelection=y,v}function Uh(e,t){var n,r,a,u,o=io();t.convert_fonts_to_spans&&(r=e,a=o,u=Et.explode(t.font_size_legacy_values),r.addNodeFilter("font",function(e){Y(e,function(e){var t,n=a.parse(e.attr("style")),r=e.attr("color"),o=e.attr("face"),i=e.attr("size");r&&(n.color=r),o&&(n["font-family"]=o),i&&(n["font-size"]=u[parseInt(e.attr("size"),10)-1]),e.name="span",e.attr("style",a.serialize(n)),t=e,Y(["color","face","size"],function(e){t.attr(e,null)})})})),n=o,e.addNodeFilter("strike",function(e){Y(e,function(e){var t=n.parse(e.attr("style"));t["text-decoration"]="line-through",e.name="span",e.attr("style",n.serialize(t))})})}function zh(e){var t,n=decodeURIComponent(e).split(","),r=/data:([^;]+)/.exec(n[0]);return{type:t=r?r[1]:t,data:n[1]}}function Hh(e,t){var n;try{n=atob(t)}catch(e){return ve.none()}for(var r=new Uint8Array(n.length),o=0;o)/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*(()?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")},r=e.length;r--;){var o,i=e[r],a=i.firstChild?i.firstChild.value:"";"script"===t?((o=i.attr("type"))&&i.attr("type","mce-no/type"===o?null:o.replace(/^mce\-/,"")),"xhtml"===s.element_format&&0")):"xhtml"===s.element_format&&0)\s*/g,"$1"),Et.map(s.split(/(?:>|\s+(?![^\[\]]+\]))/),function(e){var t=Et.map(e.split(/(?:~\+|~|\+)/),Qv),n=t.pop();return t.length&&(n.siblings=t),n}).reverse()):[],f=l.length?(l[0].name||(l[0].name=c),c=e.selector,Jv(l,n)):Jv([c],n),d=py.select(c,f)[0]||f.firstChild;return gy(e.styles,function(e,t){var n=a(e);n&&py.setStyle(d,t,n)}),gy(e.attributes,function(e,t){var n=a(e);n&&py.setAttrib(d,t,n)}),gy(e.classes,function(e){var t=a(e);py.hasClass(d,t)||py.addClass(d,t)}),n.fire("PreviewFormats"),py.setStyles(f,{position:"absolute",left:-65535}),n.getBody().appendChild(f),r=py.getStyle(n.getBody(),"fontSize",!0),r=/px$/.test(r)?parseInt(r,10):0,gy(i.split(" "),function(e){var t=py.getStyle(d,e,!0);if(!("background-color"===e&&/transparent|rgba\s*\([^)]+,\s*0\)/.test(t)&&(t=py.getStyle(n.getBody(),e,!0),"#ffffff"===py.toHex(t).toLowerCase())||"color"===e&&"#000000"===py.toHex(t).toLowerCase())){if("font-size"===e&&/em|%$/.test(t)){if(0===r)return;t=parseFloat(t)/(/%$/.test(t)?100:1)*r+"px"}"border"===e&&t&&(o+="padding:0 2px;"),o+=e+":"+t+";"}}),n.fire("AfterPreviewFormats"),py.remove(f),o}function eb(c){var e,r,t,n,o,i,a=(n={},(o=function(e,t){e&&(X(e)?(Y(t=!S(t)?[t]:t,function(e){b(e.deep)&&(e.deep=!ml(e)),b(e.split)&&(e.split=!ml(e)||gl(e)),b(e.remove)&&ml(e)&&!gl(e)&&(e.remove="none"),ml(e)&&gl(e)&&(e.mixed=!0,e.block_expand=!0),X(e.classes)&&(e.classes=e.classes.split(/\s+/))}),n[e]=t):ne(e,function(e,t){o(t,e)}))})((r=(e=c).dom,t={valigntop:[{selector:"td,th",styles:{verticalAlign:"top"}}],valignmiddle:[{selector:"td,th",styles:{verticalAlign:"middle"}}],valignbottom:[{selector:"td,th",styles:{verticalAlign:"bottom"}}],alignleft:[{selector:"figure.image",collapsed:!1,classes:"align-left",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"left"},inherit:!1,preview:!1,defaultBlock:"div"},{selector:"img,table,audio,video",collapsed:!1,styles:{float:"left"},preview:"font-family font-size"}],aligncenter:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"center"},inherit:!1,preview:"font-family font-size",defaultBlock:"div"},{selector:"figure.image",collapsed:!1,classes:"align-center",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"img,audio,video",collapsed:!1,styles:{display:"block",marginLeft:"auto",marginRight:"auto"},preview:!1},{selector:"table",collapsed:!1,styles:{marginLeft:"auto",marginRight:"auto"},preview:"font-family font-size"}],alignright:[{selector:"figure.image",collapsed:!1,classes:"align-right",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"right"},inherit:!1,preview:"font-family font-size",defaultBlock:"div"},{selector:"img,table,audio,video",collapsed:!1,styles:{float:"right"},preview:"font-family font-size"}],alignjustify:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"justify"},inherit:!1,defaultBlock:"div",preview:"font-family font-size"}],bold:[{inline:"strong",remove:"all",preserve_attributes:["class","style"]},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all",preserve_attributes:["class","style"]}],italic:[{inline:"em",remove:"all",preserve_attributes:["class","style"]},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all",preserve_attributes:["class","style"]}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:!0},{inline:"u",remove:"all",preserve_attributes:["class","style"]}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:!0},{inline:"strike",remove:"all",preserve_attributes:["class","style"]},{inline:"s",remove:"all",preserve_attributes:["class","style"]}],forecolor:{inline:"span",styles:{color:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0},fontname:{inline:"span",toggle:!1,styles:{fontFamily:"%value"},clear_child_styles:!0},fontsize:{inline:"span",toggle:!1,styles:{fontSize:"%value"},clear_child_styles:!0},lineheight:{selector:"h1,h2,h3,h4,h5,h6,p,li,td,th,div",defaultBlock:"p",styles:{lineHeight:"%value"}},fontsize_class:{inline:"span",attributes:{class:"%value"}},blockquote:{block:"blockquote",wrapper:!0,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},code:{inline:"code"},link:{inline:"a",selector:"a",remove:"all",split:!0,deep:!0,onmatch:function(e,t,n){return zn(e)&&e.hasAttribute("href")},onformat:function(n,e,t){Et.each(t,function(e,t){r.setAttrib(n,t,e)})}},lang:{inline:"span",clear_child_styles:!0,remove_similar:!0,attributes:{lang:"%value","data-mce-lang":function(e){var t;return null!==(t=null==e?void 0:e.customValue)&&void 0!==t?t:null}}},removeformat:[{selector:"b,strong,em,i,font,u,strike,s,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins,small",remove:"all",split:!0,expand:!1,block_expand:!0,deep:!0},{selector:"span",attributes:["style","class"],remove:"empty",split:!0,expand:!1,deep:!0},{selector:"*",attributes:["style","class"],split:!1,expand:!1,deep:!0}]},Et.each("p h1 h2 h3 h4 h5 h6 div address pre dt dd samp".split(/\s/),function(e){t[e]={block:e,remove:"all"}}),t)),o(e.getParam("formats")),{get:function(e){return V(e)?n[e]:n},has:function(e){return ke(n,e)},register:o,unregister:function(e){return e&&n[e]&&delete n[e],n}}),l=iu(null);return function(e){e.addShortcut("meta+b","","Bold"),e.addShortcut("meta+i","","Italic"),e.addShortcut("meta+u","","Underline");for(var t=1;t<=6;t++)e.addShortcut("access+"+t,"",["FormatBlock",!1,"h"+t]);e.addShortcut("access+7","",["FormatBlock",!1,"p"]),e.addShortcut("access+8","",["FormatBlock",!1,"div"]),e.addShortcut("access+9","",["FormatBlock",!1,"address"])}(c),(i=c).on("mouseup keydown",function(e){var t=i,n=e.keyCode,r=t.selection,o=t.getBody();Hg(t,null,!1),8!==n&&46!==n||!r.isCollapsed()||r.getStart().innerHTML!==Cp||Hg(t,Vc(o,r.getStart())),37!==n&&39!==n||Hg(t,Vc(o,r.getStart()))}),{get:a.get,has:a.has,register:a.register,unregister:a.unregister,apply:function(e,t,n){var r=e,o=t,i=n;yh(c).formatter.apply(r,o,i)},remove:function(e,t,n,r){var o=e,i=t,a=n,u=r;yh(c).formatter.remove(o,i,a,u)},toggle:function(e,t,n){var r=e,o=t,i=n;yh(c).formatter.toggle(r,o,i)},match:function(e,t,n,r){return o=e,i=t,a=n,u=r,yh(c).formatter.match(o,i,a,u);var o,i,a,u},closest:function(e){return t=e,yh(c).formatter.closest(t);var t},matchAll:function(e,t){return n=e,r=t,yh(c).formatter.matchAll(n,r);var n,r},matchNode:function(e,t,n,r){return o=e,i=t,a=n,u=r,yh(c).formatter.matchNode(o,i,a,u);var o,i,a,u},canApply:function(e){return t=e,yh(c).formatter.canApply(t);var t},formatChanged:function(e,t,n,r){return o=l,i=e,a=t,u=n,s=r,yh(c).formatter.formatChanged(o,i,a,u,s);var o,i,a,u,s},getCssText:R(Zv,c)}}function tb(e){switch(e.toLowerCase()){case"undo":case"redo":case"mcerepaint":case"mcefocus":return 1;default:return}}function nb(s){var e,n,r,o,i,c=fu(),l=iu(0),f=iu(0),d={data:[],typing:!1,beforeChange:function(){var e=l,t=c;yh(s).undoManager.beforeChange(e,t)},add:function(e,t){return n=d,r=f,o=l,i=c,a=e,u=t,yh(s).undoManager.add(n,r,o,i,a,u);var n,r,o,i,a,u},undo:function(){return e=d,t=l,n=f,yh(s).undoManager.undo(e,t,n);var e,t,n},redo:function(){return e=f,t=d.data,yh(s).undoManager.redo(e,t);var e,t},clear:function(){var e=d,t=f;yh(s).undoManager.clear(e,t)},reset:function(){var e=d;yh(s).undoManager.reset(e)},hasUndo:function(){return e=d,t=f,yh(s).undoManager.hasUndo(e,t);var e,t},hasRedo:function(){return e=d,t=f,yh(s).undoManager.hasRedo(e,t);var e,t},transact:function(e){return t=d,n=l,r=e,yh(s).undoManager.transact(t,n,r);var t,n,r},ignore:function(e){var t=l,n=e;yh(s).undoManager.ignore(t,n)},extra:function(e,t){var n=d,r=f,o=e,i=t;yh(s).undoManager.extra(n,r,o,i)}};return hh(s)||(r=d,o=l,i=iu(!1),(n=s).on("init",function(){r.add()}),n.on("BeforeExecCommand",function(e){tb(e.command)||(gh(r,o),r.beforeChange())}),n.on("ExecCommand",function(e){tb(e.command)||a(e)}),n.on("ObjectResizeStart cut",function(){r.beforeChange()}),n.on("SaveContent ObjectResized blur",a),n.on("dragend",a),n.on("keyup",function(e){var t=e.keyCode;e.isDefaultPrevented()||((33<=t&&t<=36||37<=t&&t<=40||45===t||e.ctrlKey)&&(a(),n.nodeChanged()),46!==t&&8!==t||n.nodeChanged(),i.get()&&r.typing&&!1===fh(uh(n),r.data[0])&&(!1===n.isDirty()&&(n.setDirty(!0),n.fire("change",{level:r.data[0],lastLevel:null})),n.fire("TypingUndo"),i.set(!1),n.nodeChanged()))}),n.on("keydown",function(e){var t,n=e.keyCode;e.isDefaultPrevented()||(33<=n&&n<=36||37<=n&&n<=40||45===n?r.typing&&a(e):(t=e.ctrlKey&&!e.altKey||e.metaKey,!(n<16||20t}}function $y(t){return function(e){return e.line===t}}function Wy(e,t){return Math.abs(e.left-t)}function Ky(e,t){return Math.abs(e.right-t)}function Xy(e,t){return e>=t.left&&e<=t.right}function Yy(e,t){return e>=t.top&&e<=t.bottom}function Gy(e,o,i){return void 0===i&&(i=w),me(e,function(e,t){if(Xy(o,t))return i(t)?t:e;if(Xy(o,e))return i(e)?e:t;var n=Math.min(Wy(e,o),Ky(e,o)),r=Math.min(Wy(t,o),Ky(t,o));return r===n&&se(t,"node")&&zC(t.node)||r'),o=i,1===t?e.$(r).after(o):e.$(r).before(o),e.selection.select(o,!0),e.selection.collapse()))}function O0(t,e){return n=t,r=e?uc.Forwards:uc.Backwards,o=n.selection.getRng(),t0(n,r,o,rp,op,WC).orThunk(function(){return T0(n,r,o),ve.none()}).exists(function(e){return Zy(t,e),!0});var n,r,o}function B0(t,e){return r=e?1:-1,o=(n=t).selection.getRng(),n0(n,r,o,function(e){return rp(e)||tp(e)},function(e){return op(e)||np(e)},WC).orThunk(function(){return T0(n,r,o),ve.none()}).exists(function(e){return Zy(t,e),!0});var n,r,o}function P0(e,t){return r0(e,t,t?op:rp)}function L0(e){return T(["figcaption"],Nt(e))}function I0(e){var t=document.createRange();return t.setStartBefore(e.dom),t.setEndBefore(e.dom),t}function M0(e,t,n){(n?Pn:Wt)(e,t)}function F0(h,v){var b=kt.fromDom(h.getBody()),y=ss.fromRangeStart(h.selection.getRng()),C=ks(h),x=Ns(h),e=y,t=R(je,b);return pr(kt.fromDom(e.container()),mo,t).filter(L0).exists(function(){if(d=b,m=y,v?(p=d.dom,zy(p,m).breakAt.isNone()):(g=d.dom,Uy(g,m).breakAt.isNone())){var e=(t=b,r=x,o=v,""===(n=C)?(l=o,M0(t,f=kt.fromTag("br"),l),I0(f)):(i=t,a=o,u=r,s=kt.fromTag(n),c=kt.fromTag("br"),hn(s,u),Pn(s,c),M0(i,s,a),I0(c)));return h.selection.setRng(e),!0}var t,n,r,o,i,a,u,s,c,l,f,d,m,g,p;return!1})}function U0(e,t){return!!e.selection.isCollapsed()&&F0(e,t)}function z0(e){for(var t=[],n=1;nm.childNodes.length-1,m=m.childNodes[Math.min(g,m.childNodes.length-1)]||m,g=s&&jn(m)?m.nodeValue.length:0);var b,y,C,x,w,S,p,E,k,N,_,A,R,D,T,O,B,P,L,I,M,F=cC(c,m);F&&((p&&!h||!p&&h)&&(m=function(e,t,n,r){var o,i,a,u,s,c,l=p||"P",f=e.dom,d=cC(f,n),m=f.getParent(n,f.isBlock);if(!m||!uC(f,m)){if(s=((m=m||d)===e.getBody()||(c=m)&&/^(TD|TH|CAPTION)$/.test(c.nodeName)?m:m.parentNode).nodeName.toLowerCase(),!m.hasChildNodes())return lC(e,o=f.create(l)),m.appendChild(o),t.setStart(o,0),t.setEnd(o,0),o;for(a=n;a.parentNode!==m;)a=a.parentNode;for(;a&&!f.isBlock(a);)a=(i=a).previousSibling;if(i&&e.schema.isValidChild(s,l.toLowerCase())){for(lC(e,o=f.create(l)),i.parentNode.insertBefore(o,i),a=i;a&&!f.isBlock(a);)u=a.nextSibling,o.appendChild(a),a=u;t.setStart(n,r),t.setEnd(n,r)}}return n}(a,d,m,g)),y=(b=c.getParent(m,c.isBlock))?c.getParent(b.parentNode,c.isBlock):null,C=b?b.nodeName.toUpperCase():"","LI"!==(x=y?y.nodeName.toUpperCase():"")||v||(y=(b=y).parentNode,C=x),/^(LI|DT|DD)$/.test(C)&&c.isEmpty(b)?(k=t,N=y,_=b,A=p,I=(E=a).dom,M=E.selection.getRng(),N!==E.getBody()&&(D=(A=nC(R=N)&&nC(R.parentNode)?"LI":A)?k(A):I.create("BR"),oC(N,_,!0)&&oC(N,_,!1)?tC(N,"LI")?(T=rC(N),I.insertAfter(D,T),(null===(L=(P=N).parentNode)||void 0===L?void 0:L.firstChild)===P?I.remove(T):I.remove(N)):I.replace(D,N):(oC(N,_,!0)?tC(N,"LI")?(I.insertAfter(D,rC(N)),D.appendChild(I.doc.createTextNode(" ")),D.appendChild(N)):N.parentNode.insertBefore(D,N):oC(N,_,!1)?I.insertAfter(D,rC(N)):(N=rC(N),(O=M.cloneRange()).setStartAfter(_),O.setEndAfter(N),B=O.extractContents(),"LI"===A&&(B.firstChild&&"LI"===B.firstChild.nodeName)?(D=B.firstChild,I.insertAfter(B,N)):(I.insertAfter(B,N),I.insertAfter(D,N))),I.remove(_)),Z0(E,D))):p&&b===a.getBody()||(p=p||"P",Pr(b)?(u=zr(b),c.isEmpty(b)&&iC(b),lC(a,u),Z0(a,u)):n()?r():n(!0)?(u=b.parentNode.insertBefore(t(),b),Z0(a,aC(b,"HR")?u:b)):((S=(w=d).cloneRange()).setStart(w.startContainer,sC(!0,w.startContainer,w.startOffset)),S.setEnd(w.endContainer,sC(!1,w.endContainer,w.endOffset)),(o=S.cloneRange()).setEndAfter(b),i=o.extractContents(),Y(Vu(kt.fromDom(i),_n),function(e){var t=e.dom;t.nodeValue=Eo(t.nodeValue)}),function(e){for(;jn(e)&&(e.nodeValue=e.nodeValue.replace(/^[\r\n]+/,"")),e=e.firstChild;);}(i),u=i.firstChild,c.insertAfter(i,b),function(e,t){var n,r,o=u,i=[];if(o){for(;o=o.firstChild;){if(e.isBlock(o))return;zn(o)&&!t[o.nodeName.toLowerCase()]&&i.push(o)}for(n=i.length;n--;)!(o=i[n]).hasChildNodes()||o.firstChild===o.lastChild&&""===o.firstChild.nodeValue?e.remove(o):(r=o)&&"A"===r.nodeName&&e.isEmpty(r)&&e.remove(o)}}(c,f),function(e,t){t.normalize();var n=t.lastChild;n&&!/^(left|right)$/gi.test(e.getStyle(n,"float",!0))||e.add(t,"br")}(c,b),c.isEmpty(b)&&iC(b),u.normalize(),c.isEmpty(u)?(c.remove(u),r()):(lC(a,u),Z0(a,u))),c.setAttrib(u,"id",""),a.fire("NewBlock",{newBlock:u})))}function dC(e,t,n){var r=e.dom.createRng();n?(r.setStartBefore(t),r.setEndBefore(t)):(r.setStartAfter(t),r.setEndAfter(t)),e.selection.setRng(r),td(e,r)}function mC(e,t){var n=kt.fromTag("br");qt(kt.fromDom(t),n),e.undoManager.add()}function gC(e,t){JC(e.getBody(),t)||$t(kt.fromDom(t),kt.fromTag("br"));var n=kt.fromTag("br");$t(kt.fromDom(t),n),dC(e,n.dom,!1),e.undoManager.add()}function pC(e){return e&&"A"===e.nodeName&&"href"in e}function hC(e){return e.fold(D,pC,pC,D)}function vC(e,t){t.fold(te,R(mC,e),R(gC,e),te)}function bC(e,t){var n,r,o,i=(r=R(ib,n=e),o=ss.fromRangeStart(n.selection.getRng()),ty(r,n.getBody(),o).filter(hC));i.isSome()?i.each(R(vC,e)):function(e,t){var n,r,o=e.selection,i=e.dom,a=o.getRng();Tf(i,a).each(function(e){a.setStart(e.startContainer,e.startOffset),a.setEnd(e.endContainer,e.endOffset)});var u,s=a.startOffset,c=a.startContainer;1===c.nodeType&&c.hasChildNodes()&&(u=s>c.childNodes.length-1,c=c.childNodes[Math.min(s,c.childNodes.length-1)]||c,s=u&&3===c.nodeType?c.nodeValue.length:0);var l=i.getParent(c,i.isBlock),f=l?i.getParent(l.parentNode,i.isBlock):null,d=f?f.nodeName.toUpperCase():"",m=!(!t||!t.ctrlKey);"LI"!==d||m||(l=f),c&&3===c.nodeType&&s>=c.nodeValue.length&&!function(e){for(var t,n=new Rr(c,l),r=e.getNonEmptyElements();t=n.next();)if(r[t.nodeName.toLowerCase()]||0t}),YC=R(W0,Uy),GC=R(W0,zy),JC=function(e,t){return n=ss.after(t),!!Wn(n.getNode())||ef(e,ss.after(t)).map(function(e){return Wn(e.getNode())}).getOr(!1);var n},QC=or([{br:[]},{block:[]},{none:[]}]),ZC=dt().browser,e1=dt(),t1=R(PC,xo),n1=R(PC," "),r1=(o1.prototype.nodeChanged=function(e){var t,n,r,o=this.editor.selection;this.editor.initialized&&o&&!this.editor.getParam("disable_nodechange")&&!this.editor.mode.isReadOnly()&&(r=this.editor.getBody(),(t=o.getStart(!0)||r).ownerDocument===this.editor.getDoc()&&this.editor.dom.isChildOf(t,r)||(t=r),n=[],this.editor.dom.getParent(t,function(e){return e===r||void n.push(e)}),(e=e||{}).element=t,e.parents=n,this.editor.fire("NodeChange",e))},o1.prototype.isSameElementPath=function(e){var t,n=this.editor.$(e).parentsUntil(this.editor.getBody()).add(e);if(n.length===this.lastPath.length){for(t=n.length;0<=t&&n[t]===this.lastPath[t];t--);if(-1===t)return this.lastPath=n,!0}return this.lastPath=n,!1},o1);function o1(r){var o;this.lastPath=[],this.editor=r;var t=this;"onselectionchange"in r.getDoc()||r.on("NodeChange click mouseup keyup focus",function(e){var t=r.selection.getRng(),n={startContainer:t.startContainer,startOffset:t.startOffset,endContainer:t.endContainer,endOffset:t.endOffset};"nodechange"!==e.type&&kf(n,o)||r.fire("SelectionChange"),o=n}),r.on("contextmenu",function(){r.fire("SelectionChange")}),r.on("SelectionChange",function(){var e=r.selection.getStart(!0);!e||!xt.range&&r.selection.isCollapsed()||Bl(r)&&!t.isSameElementPath(e)&&r.dom.isChildOf(e,r.getBody())&&r.nodeChanged({selectionChange:!0})}),r.on("mouseup",function(e){!e.isDefaultPrevented()&&Bl(r)&&("IMG"===r.selection.getNode().nodeName?_r.setEditorTimeout(r,function(){r.nodeChanged()}):r.nodeChanged())})}function i1(e){return zn(e)&&go(kt.fromDom(e))}function a1(e){var t=e.getBoundingClientRect(),n=e.ownerDocument,r=n.documentElement,o=n.defaultView;return{top:t.top+o.pageYOffset-r.clientTop,left:t.left+o.pageXOffset-r.clientLeft}}function u1(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function s1(e,S){var E=_r.throttle(function(e,t){S._selectionOverrides.hideFakeCaret(),S.selection.placeCaretAt(e,t)},0);return S.on("remove",E.stop),function(w){return e.on(function(e){var t,n,r,o,i,a,u,s,c,l,f,d,m,g,p,h,v,b,y,C,x=Math.max(Math.abs(w.screenX-e.screenX),Math.abs(w.screenY-e.screenY));if(!e.dragging&&10').attr("id",w)).appendTo(l.getBody());var i=y.createRng();t===n&&xt.ie?(o.empty().append('

\xa0

').append(t),i.setStartAfter(o[0].firstChild.firstChild),i.setEndAfter(t)):(o.empty().append(xo).append(t).append(xo),i.setStart(o[0].firstChild,1),i.setEnd(o[0].lastChild,0)),o.css({top:y.getPos(e,l.getBody()).y}),o[0].focus();var a=b.getSel();return a.removeAllRanges(),a.addRange(i),i}(e,n.targetClone,t),o=kt.fromDom(e);return Y(bu(kt.fromDom(l.getBody()),"*[data-mce-selected]"),function(e){je(o,e)||yn(e,S)}),y.getAttrib(e,S)||e.setAttribute(S,"1"),v=e,E(),r}(c)}return null}function h(){v&&v.removeAttribute(S),vr(kt.fromDom(l.getBody()),"#"+w).each(Ln),v=null}var v,n,e,o,b=l.selection,y=l.dom,C=y.isBlock,x=l.getBody(),i=$s(l,x,C,function(){return yd(l)}),w="sel-"+y.uniqueId(),S="data-mce-selected",r=b.getRng,E=function(){i.hide()};return xt.ceFalse&&!hh(l)&&(l.on("mouseup",function(e){var t=r();t.collapsed&&cv(l,e.clientX,e.clientY)&&Nb(l,t,!1).each(d)}),l.on("click",function(e){var t=f1(l,e.target);t&&(F1(t)&&(e.preventDefault(),l.focus()),M1(t)&&y.isChildOf(t,b.getNode())&&h())}),l.on("blur NewBlock",h),l.on("ResizeWindow FullscreenStateChanged",i.reposition),l.on("tap",function(e){var t=e.target,n=f1(l,t);F1(n)?(e.preventDefault(),kb(l,n).each(p)):f(t)&&kb(l,t).each(p)},!0),l.on("mousedown",function(e){var t,n,r,o,i,a,u,s=e.target;s!==x&&"HTML"!==s.nodeName&&!y.isChildOf(s,x)||!1===cv(l,e.clientX,e.clientY)||((t=f1(l,s))?F1(t)?(e.preventDefault(),kb(l,t).each(p)):(h(),M1(t)&&e.shiftKey||bf(e.clientX,e.clientY,b.getRng())||(E(),b.placeCaretAt(e.clientX,e.clientY))):f(s)?kb(l,s).each(p):!1===Ks(s)&&(h(),E(),(n=Qy(x,e.clientX,e.clientY))&&(r=s,o=n.node,a=y.getParent(r,C),u=y.getParent(o,C),!K(a)&&(r!==u&&y.isChildOf(a,u)&&!1===F1(f1(l,a))||!y.isChildOf(u,a)&&(i=u,y.getParent(a,C)!==y.getParent(i,C))&&function(e){var t=e.firstChild;if(!K(t)){var n=ss.before(t);if(Wn(n.getNode())&&1===e.childNodes.length)return!c(n);var r=Ic(e).next(n);return r&&!c(r)}}(a))||(e.preventDefault(),d(m(1,n.node,n.before,!1)),l.getBody().focus()))))}),l.on("keypress",function(e){Lf.modifierPressed(e)||F1(b.getNode())&&e.preventDefault()}),l.on("GetSelectionRange",function(e){var t=e.range;v&&(v.parentNode?((t=t.cloneRange()).selectNode(v),e.range=t):v=null)}),l.on("SetSelectionRange",function(e){var t,n,r,o,i,a,u;e.range=(t=e.range,n=l.schema.getShortEndedElements(),r=y.createRng(),o=t.startContainer,i=t.startOffset,a=t.endContainer,u=t.endOffset,ke(n,o.nodeName.toLowerCase())?0===i?r.setStartBefore(o):r.setStartAfter(o):r.setStart(o,i),ke(n,a.nodeName.toLowerCase())?0===u?r.setEndBefore(a):r.setEndAfter(a):r.setEnd(a,u),r);var s=p(e.range,e.forward);s&&(e.range=s)}),l.on("AfterSetSelectionRange",function(e){var t=e.range,n=t.startContainer.parentNode;g(t)||"mcepastebin"===n.id||E(),y.hasClass(n,"mce-offscreen-selection")||h()}),l.on("copy",function(e){var t,n,r=e.clipboardData;e.isDefaultPrevented()||!e.clipboardData||xt.ie||(t=(n=y.get(w))&&n.getElementsByTagName("*")[0])&&(e.preventDefault(),r.clearData(),r.setData("text/html",t.outerHTML),r.setData("text/plain",t.outerText||t.innerText))}),l1(l),e=du(function(){var e,t;n.removed||!n.getBody().contains(document.activeElement)||(e=n.selection.getRng()).collapsed&&(t=_b(n,e,!1),n.selection.setRng(t))},0),(n=l).on("focus",function(){e.throttle()}),n.on("blur",function(){e.cancel()}),(o=l).on("init",function(){o.on("focusin",function(e){var t,n,r=e.target;Jn(r)&&(t=vf(o.getBody(),r),n=Yn(t)?t:r,o.selection.getNode()!==n&&kb(o,n).each(function(e){return o.selection.setRng(e)}))})})),{showCaret:m,showBlockCaretContainer:function(e){e.hasAttribute("data-mce-caret")&&(zr(e),d(r()),b.scrollIntoView(e))},hideFakeCaret:E,destroy:function(){i.destroy(),v=null}}}function m1(a){function e(e,t){try{a.getDoc().execCommand(e,!1,t)}catch(e){}}function u(e){return e.isDefaultPrevented()}function t(){a.shortcuts.add("meta+a",null,"SelectAll")}function n(){a.inline||b.bind(a.getDoc(),"mousedown mouseup",function(e){var t;e.target===a.getDoc().documentElement&&(t=y.getRng(),a.getBody().focus(),"mousedown"===e.type?Ir(t.startContainer)||y.placeCaretAt(e.clientX,e.clientY):y.setRng(t))})}function r(){Range.prototype.getClientRects||a.on("mousedown",function(e){var t;u(e)||"HTML"!==e.target.nodeName||((t=a.getBody()).blur(),_r.setEditorTimeout(a,function(){t.focus()}))})}function o(){a.on("click",function(e){var t=e.target;/^(IMG|HR)$/.test(t.nodeName)&&"false"!==b.getContentEditableParent(t)&&(e.preventDefault(),a.selection.select(t),a.nodeChanged()),"A"===t.nodeName&&b.hasClass(t,"mce-item-anchor")&&(e.preventDefault(),y.select(t))})}function i(){a.on("keydown",function(e){if(!u(e)&&e.keyCode===h&&y.isCollapsed()&&0===y.getRng().startOffset){var t=y.getNode().previousSibling;if(t&&t.nodeName&&"table"===t.nodeName.toLowerCase())return e.preventDefault(),!1}})}function s(){a.getParam("readonly")||a.on("BeforeExecCommand mousedown",function(){e("StyleWithCSS",!1),e("enableInlineTableEditing",!1),Bs(a)||e("enableObjectResizing",!1)})}function c(){a.contentStyles.push("img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}")}function l(){a.inline||a.on("keydown",function(){document.activeElement===document.body&&a.getWin().focus()})}function f(){a.inline||(a.contentStyles.push("body {min-height: 150px}"),a.on("click",function(e){var t;"HTML"===e.target.nodeName&&(11")+"";e.getParam("document_base_url","")!==e.documentBaseUrl&&(t+=''),t+='';var n=Ss(e,"body_id","tinymce"),r=Ss(e,"body_class",""),o=e.translate(e.getParam("iframe_aria_text","Rich Text Area. Press ALT-0 for help.","string"));return Es(e)&&(t+=''),t+('
'}(e),z1.add(t.iframeContainer,u),s}function S1(e){return e.replace(/^\-/,"")}function E1(e){return{editorContainer:e,iframeContainer:e,api:{}}}function k1(e){var t,n,r,o,i,a,u,s=e.getElement();return e.orgDisplay=s.style.display,X(Ls(e))?e.theme.renderUI():y(Ls(e))?(n=(t=e).getElement(),(r=Ls(t)(t,n)).editorContainer.nodeType&&(r.editorContainer.id=r.editorContainer.id||t.id+"_parent"),r.iframeContainer&&r.iframeContainer.nodeType&&(r.iframeContainer.id=r.iframeContainer.id||t.id+"_iframecontainer"),r.height=r.iframeHeight||n.offsetHeight,r):(u=(o=e).getElement(),o.inline?E1(null):(i=u,a=H1.create("div"),H1.insertAfter(a,i),E1(a)))}function N1(e){var n,t,r,o,i,a,u,s;e.fire("ScriptsLoaded"),n=e,t=Et.trim(As(n)),r=n.ui.registry.getAll().icons,ne(_e(_e({},Dv.get("default").icons),Dv.get(t).icons),function(e,t){ke(r,t)||n.ui.registry.addIcon(t,e)}),a=Ls(o=e),X(a)?(o.settings.theme=S1(a),i=Iv.get(a),o.theme=new i(o,Iv.urls[a]),o.theme.init&&o.theme.init(o,Iv.urls[a]||o.documentBaseUrl.replace(/\/$/,""),o.$)):o.theme={},s=[],Et.each(Ms(u=e).split(/[ ,]/),function(e){j1(u,s,S1(e))});var c=k1(e),l=e,f=ve.from(c.api).getOr({}),d={show:ve.from(f.show).getOr(te),hide:ve.from(f.hide).getOr(te),disable:ve.from(f.disable).getOr(te),isDisabled:ve.from(f.isDisabled).getOr(D),enable:function(){l.mode.isReadOnly()||ve.from(f.enable).map(x)}};l.ui=_e(_e({},l.ui),d);var m,g,p,h={editorContainer:c.editorContainer,iframeContainer:c.iframeContainer};return e.editorContainer=h.editorContainer||null,Vv(e),e.inline?x1(e):(p=w1(m=e,g=h),g.editorContainer&&(z1.get(g.editorContainer).style.display=m.orgDisplay,m.hidden=z1.isHidden(g.editorContainer)),m.getElement().style.display="none",z1.setAttrib(m.id,"aria-hidden","true"),void(p||x1(m)))}function _1(e){return"-"===e.charAt(0)}function A1(t,e,n){return ve.from(e).filter(function(e){return 0")},mceToggleVisualAid:function(){u.hasVisual=!u.hasVisual,u.addVisual()},mceReplaceContent:function(e,t,n){u.execCommand("mceInsertContent",!1,n.replace(/\{\$selection\}/g,u.selection.getContent({format:"text"})))},mceInsertLink:function(e,t,n){"string"==typeof n&&(n={href:n});var r=u.dom.getParent(u.selection.getNode(),"a");n.href=n.href.replace(/ /g,"%20"),r&&n.href||u.formatter.remove("link"),n.href&&u.formatter.apply("link",n,r)},selectAll:function(){var e,t=u.dom.getParent(u.selection.getStart(),Xn);t&&((e=u.dom.createRng()).selectNodeContents(t),u.selection.setRng(e))},mceNewDocument:function(){u.setContent("")},InsertLineBreak:function(e,t,n){return bC(u,n),!0}}),o.addCommands({JustifyLeft:e("alignleft"),JustifyCenter:e("aligncenter"),JustifyRight:e("alignright"),JustifyFull:e("alignjustify"),"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){return o.isFormatMatch(e)},mceBlockQuote:function(){return o.isFormatMatch("blockquote")},Outdent:function(){return x0(u)},"InsertUnorderedList,InsertOrderedList":function(e){var t=u.dom.getParent(u.selection.getNode(),"ul,ol");return t&&("insertunorderedlist"===e&&"UL"===t.tagName||"insertorderedlist"===e&&"OL"===t.tagName)}},"state"),o.addCommands({Undo:function(){u.undoManager.undo()},Redo:function(){u.undoManager.redo()}}),o.addQueryValueHandler("FontName",function(){return O1(t=u,function(e){return W1(t.getBody(),e.dom)}).getOr("");var t},this),o.addQueryValueHandler("FontSize",function(){return O1(t=u,function(e){return $1(t.getBody(),e.dom)}).getOr("");var t},this),o.addQueryValueHandler("LineHeight",function(){return O1(t=u,function(n){var e=kt.fromDom(t.getBody());return Tg(n,function(e){return wn(e,"line-height")},R(je,e)).getOrThunk(function(){var e=parseFloat(xn(n,"line-height")),t=parseFloat(xn(n,"font-size"));return String(e/t)})}).getOr("");var t},this)},J1);function J1(e){this.commands={state:{},exec:{},value:{}},this.editor=e,this.setupCommands(e)}function Q1(e,t,n){var r,o,i,a,u,s;vu(e,t)&&!1===n?(o=t,pu(r=e)?r.dom.classList.remove(o):(u=o,0<(s=U(gu(a=r,"class"),function(e){return e!==u})).length?pn(a,"class",s.join(" ")):yn(a,"class")),0===(pu(i=r)?i.dom.classList:gu(i,"class")).length&&yn(i,"class")):n&&hu(e,t)}function Z1(e,t,n){try{e.getDoc().execCommand(t,!1,String(n))}catch(e){}}function ex(e,t){e.dom.contentEditable=t?"true":"false"}function tx(e,t){var n,r,o=kt.fromDom(e.getBody());Q1(o,"mce-content-readonly",t),t?(e.selection.controlSelection.hideResizeRect(),e._selectionOverrides.hideFakeCaret(),ve.from(e.selection.getNode()).each(function(e){e.removeAttribute("data-mce-selected")}),ex(o,!(e.readonly=!0)),Y(bu(o,'*[contenteditable="true"]'),function(e){pn(e,ox,"true"),ex(e,!1)})):(ex(o,!(e.readonly=!1)),Y(bu(o,"*["+ox+'="true"]'),function(e){yn(e,ox),ex(e,!0)}),Z1(e,"StyleWithCSS",!1),Z1(e,"enableInlineTableEditing",!1),Z1(e,"enableObjectResizing",!1),(yd(n=e)||(r=n,rd(Bn(kt.fromDom(r.getElement()))).filter(function(e){return!(void 0!==(t=e.dom.classList)&&(t.contains("tox-edit-area")||t.contains("tox-edit-area__iframe")||t.contains("mce-content-body")))&&gd(r,e.dom);var t}).isSome()))&&e.focus(),e.selection.setRng(e.selection.getRng()),e.nodeChanged())}function nx(e){return e.readonly}function rx(t){t.parser.addAttributeFilter("contenteditable",function(e){nx(t)&&Y(e,function(e){e.attr(ox,e.attr("contenteditable")),e.attr("contenteditable","false")})}),t.serializer.addAttributeFilter(ox,function(e){nx(t)&&Y(e,function(e){e.attr("contenteditable",e.attr(ox))})}),t.serializer.addTempAttr(ox)}var ox="data-mce-contenteditable",ix=Et.makeMap("focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange mouseout mouseenter mouseleave wheel keydown keypress keyup input beforeinput contextmenu dragstart dragend dragover draggesture dragdrop drop drag submit compositionstart compositionend compositionupdate touchstart touchmove touchend touchcancel"," "),ax=(ux.isNative=function(e){return!!ix[e.toLowerCase()]},ux.prototype.fire=function(e,t){var n=e.toLowerCase(),r=uo(n,t||{},this.scope);this.settings.beforeFire&&this.settings.beforeFire(r);var o=this.bindings[n];if(o)for(var i=0,a=o.length;i"),mx);return o[o.length-1]=Et.extend(o[o.length-1],{func:n,scope:r||this.editor}),Et.extend(o[0],{desc:this.editor.translate(t),subpatterns:o.slice(1)})},Ex.prototype.hasModifier=function(e){return e.altKey||e.ctrlKey||e.metaKey},Ex.prototype.isFunctionKey=function(e){return"keydown"===e.type&&112<=e.keyCode&&e.keyCode<=123},Ex.prototype.matchShortcut=function(e,t){return!!t&&t.ctrl===e.ctrlKey&&t.meta===e.metaKey&&t.alt===e.altKey&&t.shift===e.shiftKey&&!!(e.keyCode===t.keyCode||e.charCode&&e.charCode===t.charCode)&&(e.preventDefault(),!0)},Ex.prototype.executeShortcutAction=function(e){return e.func?e.func.call(e.scope):null},Ex);function Ex(e){this.shortcuts={},this.pendingPatterns=[],this.editor=e;var n=this;e.on("keyup keypress keydown",function(t){!n.hasModifier(t)&&!n.isFunctionKey(t)||t.isDefaultPrevented()||(yx(n.shortcuts,function(e){if(n.matchShortcut(t,e))return n.pendingPatterns=e.subpatterns.slice(0),"keydown"===t.type&&n.executeShortcutAction(e),!0}),n.matchShortcut(t,n.pendingPatterns[0])&&(1===n.pendingPatterns.length&&"keydown"===t.type&&n.executeShortcutAction(n.pendingPatterns[0]),n.pendingPatterns.shift()))})}var kx=Za.DOM,Nx=Et.extend,_x=Et.each,Ax=Et.resolve,Rx=xt.ie,Dx=(Tx.prototype.render=function(){!function(t){var e=t.id;cu.setCode(Ds(t));var n,r,o,i,a=function(){V1.unbind(window,"ready",a),t.render()};si.Event.domLoaded?t.getElement()&&xt.contentEditable&&(n=kt.fromDom(t.getElement()),r=L(n.dom.attributes,function(e,t){return e[t.name]=t.value,e},{}),t.on("remove",function(){O(n.dom.attributes,function(e){return yn(n,e.name),0}),hn(n,r)}),t.ui.styleSheetLoader=Ar.forElement(n,{contentCssCors:(o=t).getParam("content_css_cors"),referrerPolicy:Rs(o)}),t.getParam("inline")?t.inline=!0:(t.orgVisibility=t.getElement().style.visibility,t.getElement().style.visibility="hidden"),(i=t.getElement().form||V1.getParent(e,"form"))&&(t.formElement=i,t.getParam("hidden_input")&&!Hn(t.getElement())&&(V1.insertAfter(V1.create("input",{type:"hidden",name:e}),e),t.hasHiddenInput=!0),t.formEventDelegate=function(e){t.fire(e.type,e)},V1.bind(i,"submit reset",t.formEventDelegate),t.on("reset",function(){t.resetContent()}),!t.getParam("submit_patch")||i.submit.nodeType||i.submit.length||i._mceOldSubmit||(i._mceOldSubmit=i.submit,i.submit=function(){return t.editorManager.triggerSave(),t.setDirty(!1),i._mceOldSubmit(i)})),t.windowManager=Mv(t),t.notificationManager=lv(t),"xml"===t.getParam("encoding")&&t.on("GetContent",function(e){e.save&&(e.content=V1.encode(e.content))}),t.getParam("add_form_submit_trigger")&&t.on("submit",function(){t.initialized&&t.save()}),t.getParam("add_unload_trigger")&&(t._beforeUnload=function(){!t.initialized||t.destroyed||t.isHidden()||t.save({format:"raw",no_events:!0,set_dirty:!1})},t.editorManager.on("BeforeUnload",t._beforeUnload)),t.editorManager.add(t),R1(t,t.suffix)):V1.bind(window,"ready",a)}(this)},Tx.prototype.focus=function(e){this.execCommand("mceFocus",!1,e)},Tx.prototype.hasFocus=function(){return yd(this)},Tx.prototype.execCallback=function(e){for(var t=[],n=1;n",visual:!0,font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",forced_root_block:"p",hidden_input:!0,inline_styles:!0,convert_fonts_to_spans:!0,indent:!0,indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",entity_encoding:"named",url_converter:v.convertURL,url_converter_scope:v},y=_e(_e({},b),h?Rv:{}),!1!==(C=iv(Nv||_v,Nv,y,m,g)).deprecation_warnings&&ev(g,C),C),this.settings.suffix&&(n.suffix=this.settings.suffix),this.suffix=n.suffix,this.settings.base_url&&n._setBaseUrl(this.settings.base_url),this.baseUri=n.baseURI,this.settings.referrer_policy&&(ru.ScriptLoader._setReferrerPolicy(this.settings.referrer_policy),Za.DOM.styleSheetLoader._setReferrerPolicy(this.settings.referrer_policy)),lu.languageLoad=this.settings.language_load,lu.baseURL=n.baseURL,this.id=e,this.setDirty(!1),this.documentBaseURI=new Yd(this.settings.document_base_url,{base_uri:this.baseUri}),this.baseURI=this.baseUri,this.inline=!!this.settings.inline,this.shortcuts=new Sx(this),this.editorCommands=new G1(this),this.settings.cache_suffix&&(xt.cacheSuffix=this.settings.cache_suffix.replace(/^[\?\&]+/,"")),this.ui={registry:{addAutocompleter:(u={},(r={addButton:w(o={},"button"),addGroupToolbarButton:w(o,"grouptoolbarbutton"),addToggleButton:w(o,"togglebutton"),addMenuButton:w(o,"menubutton"),addSplitButton:w(o,"splitbutton"),addMenuItem:w(i={},"menuitem"),addNestedMenuItem:w(i,"nestedmenuitem"),addToggleMenuItem:w(i,"togglemenuitem"),addAutocompleter:w(a={},"autocompleter"),addContextMenu:w(s={},"contextmenu"),addContextToolbar:w(c={},"contexttoolbar"),addContextForm:w(c,"contextform"),addSidebar:w(l={},"sidebar"),addIcon:function(e,t){return u[e.toLowerCase()]=t},getAll:function(){return{buttons:o,menuItems:i,icons:u,popups:a,contextMenus:s,contextToolbars:c,sidebars:l}}}).addAutocompleter),addButton:r.addButton,addContextForm:r.addContextForm,addContextMenu:r.addContextMenu,addContextToolbar:r.addContextToolbar,addIcon:r.addIcon,addMenuButton:r.addMenuButton,addMenuItem:r.addMenuItem,addNestedMenuItem:r.addNestedMenuItem,addSidebar:r.addSidebar,addSplitButton:r.addSplitButton,addToggleButton:r.addToggleButton,addGroupToolbarButton:r.addGroupToolbarButton,addToggleMenuItem:r.addToggleMenuItem,getAll:r.getAll},styleSheetLoader:void 0,show:te,hide:te,enable:te,disable:te,isDisabled:D};var S,E,k,N,_,A=(N=iu("design"),_=iu({design:{activate:te,deactivate:te,editorReadOnly:!1},readonly:{activate:te,deactivate:te,editorReadOnly:!0}}),(E=S=this).serializer?rx(E):E.on("PreInit",function(){rx(E)}),(k=S).on("ShowCaret",function(e){nx(k)&&e.preventDefault()}),k.on("ObjectSelected",function(e){nx(k)&&e.preventDefault()}),{isReadOnly:function(){return nx(S)},set:function(e){return function(e,t,n,r){if(r!==n.get()){if(!ke(t,r))throw new Error("Editor mode '"+r+"' is invalid");e.initialized?dx(e,n,t,r):e.on("init",function(){return dx(e,n,t,r)})}}(S,_.get(),N,e)},get:function(){return N.get()},register:function(e,t){_.set(function(e,t,n){var r;if(T(bx,t))throw new Error("Cannot override default mode "+t);return _e(_e({},e),((r={})[t]=_e(_e({},n),{deactivate:function(){try{n.deactivate()}catch(e){console.error("problem while deactivating editor mode "+t+":",e)}}}),r))}(_.get(),e,t))}});this.mode=A,this.setMode=A.set,n.fire("SetupEditor",{editor:this}),this.execCallback("setup",this),this.$=Xa.overrideDefaults(function(){return{context:x.inline?x.getBody():x.getDoc(),element:x.getBody()}})}function Ox(t){var n=t.type;Fx($x.get(),function(e){switch(n){case"scroll":e.fire("ScrollWindow",t);break;case"resize":e.fire("ResizeWindow",t)}})}function Bx(e){e!==Hx&&(e?Xa(window).on("resize scroll",Ox):Xa(window).off("resize scroll",Ox),Hx=e)}function Px(t){var e=Vx;delete jx[t.id];for(var n=0;n=n.x&&o.x+o.w<=n.w+n.x&&o.y>=n.y&&o.y+o.h<=n.h+n.y)return r[i];return null},intersect:function(e,t){var n=ew(e.x,t.x),r=ew(e.y,t.y),o=Zx(e.x+e.w,t.x+t.w),i=Zx(e.y+e.h,t.y+t.h);return o-n<0||i-r<0?null:Xx(n,r,o-n,i-r)},clamp:function(e,t,n){var r=e.x,o=e.y,i=e.x+e.w,a=e.y+e.h,u=t.x+t.w,s=t.y+t.h,c=ew(0,t.x-r),l=ew(0,t.y-o),f=ew(0,i-u),d=ew(0,a-s);return r+=c,o+=l,n&&(i+=c,a+=l,r-=f,o-=d),Xx(r,o,(i-=f)-r,(a-=d)-o)},create:Xx,fromClientRect:function(e){return Xx(e.left,e.top,e.width,e.height)}},rw=(Yx={},Gx={},{load:function(r,o){var i='Script at URL "'+o+'" failed to load',a='Script at URL "'+o+"\" did not call `tinymce.Resource.add('"+r+"', data)` within 1 second";if(void 0!==Yx[r])return Yx[r];var e=new Nr(function(e,t){var n=function(e,t,n){function r(n){return function(){for(var e=[],t=0;t -1; + } + function invokeWithArgsOrReturn(value, args) { + return typeof value === 'function' ? value.apply(void 0, args) : value; + } + function debounce(fn, ms) { + // Avoid wrapping in `setTimeout` if ms is 0 anyway + if (ms === 0) { + return fn; + } + + var timeout; + return function (arg) { + clearTimeout(timeout); + timeout = setTimeout(function () { + fn(arg); + }, ms); + }; + } + function removeProperties(obj, keys) { + var clone = Object.assign({}, obj); + keys.forEach(function (key) { + delete clone[key]; + }); + return clone; + } + function splitBySpaces(value) { + return value.split(/\s+/).filter(Boolean); + } + function normalizeToArray(value) { + return [].concat(value); + } + function pushIfUnique(arr, value) { + if (arr.indexOf(value) === -1) { + arr.push(value); + } + } + function unique(arr) { + return arr.filter(function (item, index) { + return arr.indexOf(item) === index; + }); + } + function getBasePlacement(placement) { + return placement.split('-')[0]; + } + function arrayFrom(value) { + return [].slice.call(value); + } + function removeUndefinedProps(obj) { + return Object.keys(obj).reduce(function (acc, key) { + if (obj[key] !== undefined) { + acc[key] = obj[key]; + } + + return acc; + }, {}); + } + + function div() { + return document.createElement('div'); + } + function isElement(value) { + return ['Element', 'Fragment'].some(function (type) { + return isType(value, type); + }); + } + function isNodeList(value) { + return isType(value, 'NodeList'); + } + function isMouseEvent(value) { + return isType(value, 'MouseEvent'); + } + function isReferenceElement(value) { + return !!(value && value._tippy && value._tippy.reference === value); + } + function getArrayOfElements(value) { + if (isElement(value)) { + return [value]; + } + + if (isNodeList(value)) { + return arrayFrom(value); + } + + if (Array.isArray(value)) { + return value; + } + + return arrayFrom(document.querySelectorAll(value)); + } + function setTransitionDuration(els, value) { + els.forEach(function (el) { + if (el) { + el.style.transitionDuration = value + "ms"; + } + }); + } + function setVisibilityState(els, state) { + els.forEach(function (el) { + if (el) { + el.setAttribute('data-state', state); + } + }); + } + function getOwnerDocument(elementOrElements) { + var _element$ownerDocumen; + + var _normalizeToArray = normalizeToArray(elementOrElements), + element = _normalizeToArray[0]; // Elements created via a