Compare commits
40 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f03b03a9ce | ||
|
|
da35e6ed8a | ||
|
|
6cddd7cbfe | ||
|
|
1e6d79af3c | ||
|
|
e731ee38a4 | ||
|
|
bee572f031 | ||
|
|
1a1d7709e6 | ||
|
|
64b91b9185 | ||
|
|
895280fed7 | ||
|
|
5546bacae8 | ||
|
|
172f4d80fe | ||
|
|
3204af9ad6 | ||
|
|
4bc6b7ba48 | ||
|
|
3173fd4b21 | ||
|
|
6deb8a3b95 | ||
|
|
aaa4d1db4d | ||
|
|
32f9b5582b | ||
|
|
00700c1a43 | ||
|
|
02907ca24c | ||
|
|
85424a2527 | ||
|
|
676c7ef3d7 | ||
|
|
9613cf1495 | ||
|
|
f51a02c4d7 | ||
|
|
46b6e2c640 | ||
|
|
450de0ebf4 | ||
|
|
fa5bd1b253 | ||
|
|
87fda22462 | ||
|
|
1f7ae5122e | ||
|
|
94fa2a3285 | ||
|
|
d6e0a6548d | ||
|
|
859a7da47b | ||
|
|
0b6635eaba | ||
|
|
acaa4175f0 | ||
|
|
223cad80a2 | ||
|
|
b0d3001712 | ||
|
|
dd43de1246 | ||
|
|
ad89f9ff71 | ||
|
|
1121e81a1d | ||
|
|
ef4cf86ebe | ||
|
|
ff668004dd |
17
.gitignore
vendored
17
.gitignore
vendored
@@ -13,23 +13,8 @@
|
|||||||
!LICENSE.md
|
!LICENSE.md
|
||||||
!CHANGELOG.md
|
!CHANGELOG.md
|
||||||
|
|
||||||
# And it's plugin
|
|
||||||
!user/
|
|
||||||
user/*
|
|
||||||
!user/plugins/
|
|
||||||
user/plugins/*
|
|
||||||
!user/plugins/infinity-squared-settings/
|
|
||||||
|
|
||||||
# But specifically ignore these things
|
# But specifically ignore these things
|
||||||
public/config.php
|
public/config.php
|
||||||
|
public/.DS_Store
|
||||||
public/custom.css
|
public/custom.css
|
||||||
public/phpqrcode/cache/*
|
public/phpqrcode/cache/*
|
||||||
|
|
||||||
# Various OS generated files
|
|
||||||
.DS_Store
|
|
||||||
.DS_Store?
|
|
||||||
._*
|
|
||||||
.Spotlight-V100
|
|
||||||
.Trashes
|
|
||||||
ehthumbs.db
|
|
||||||
Thumbs.db
|
|
||||||
|
|||||||
20
README.md
20
README.md
@@ -1,7 +1,11 @@
|
|||||||
Infinity Squared
|
Infinity Squared
|
||||||
================
|
================
|
||||||
|
|
||||||
A beautiful public page theme for YOURLS, carefully crafted by [Tom Slominski](http://tomslominski.net/). It can be used to give the public access to your short domain, not just registered users.
|
[](https://www.paypal.me/tomslominski)
|
||||||
|
|
||||||
|
[Download](https://github.com/tomslominski/infinity-squared/releases)
|
||||||
|
|
||||||
|
A beautiful public page theme for YOURLS, carefully crafted by [Tom Slominski](https://slomin.ski/). It can be used to give the public access to your short domain, not just registered users.
|
||||||
|
|
||||||

|

|
||||||
###### Front page of Infinity Squared 2.0
|
###### Front page of Infinity Squared 2.0
|
||||||
@@ -19,13 +23,13 @@ Features
|
|||||||
|
|
||||||
Installation
|
Installation
|
||||||
------------
|
------------
|
||||||
1. Download the latest [release](https://github.com/tomslominski/infinity-squared/releases) from GitHub and enter the folder which houses `index.php`.
|
1. Download the [latest release](https://github.com/tomslominski/infinity-squared/releases/latest) from GitHub and enter the folder which houses `index.php`.
|
||||||
2. Upload all of the files into the directory where you've installed YOURLS. It doesn't have any additional requirements. If you can run YOURLS, you can run ∞²! Some of the files might collide with the files YOURLS also provides, like `README.md`. You can choose to replace them or not, it doesn't matter.
|
2. Upload all of the files into the directory where you've installed YOURLS. It doesn't have any additional requirements. If you can run YOURLS, you can run ∞²! Some of the files might collide with the files YOURLS also provides, like `README.md`. You can choose to replace them or not, it doesn't matter.
|
||||||
3. Rename `public/config-sample.php` to `public/config.php` and make ∞² suit you.
|
3. Rename `public/config-sample.php` to `public/config.php` and make ∞² suit you.
|
||||||
|
|
||||||
Upgrade
|
Upgrade
|
||||||
-------
|
-------
|
||||||
1. Download the latest [release](https://github.com/tomslominski/infinity-squared/releases) from GitHub and enter the folder which houses `index.php`.
|
1. Download the [latest release](https://github.com/tomslominski/infinity-squared/releases/latest) from GitHub and enter the folder which houses `index.php`.
|
||||||
2. Remember to do a backup before you make any changes on your server.
|
2. Remember to do a backup before you make any changes on your server.
|
||||||
3. Replace all of the files from the downloaded release with the release on your server. **Remember that if you've made any changes to the core theme files, they will be overwritten, so be careful!** A `config.php` is not provided with the release, so you don't need to worry about loosing your settings.
|
3. Replace all of the files from the downloaded release with the release on your server. **Remember that if you've made any changes to the core theme files, they will be overwritten, so be careful!** A `config.php` is not provided with the release, so you don't need to worry about loosing your settings.
|
||||||
4. Copy over any new settings from `config-sample.php` into your own `config.php`.
|
4. Copy over any new settings from `config-sample.php` into your own `config.php`.
|
||||||
@@ -38,7 +42,7 @@ You can also create a `public/custom.css` style and change the appropriate setti
|
|||||||
|
|
||||||
Translating
|
Translating
|
||||||
-----------
|
-----------
|
||||||
By default, Infinity Squared comes with Polish and Russian translations, as well as it's default English language. To enable any of those languages, you need to edit YOURLS' `config.php`, as described [here](https://github.com/YOURLS/YOURLS/wiki/YOURLS-in-your-language#install-yourls-in-your-language).
|
By default, Infinity Squared comes with Polish, Russian and Spanish translations, as well as it's default English language. To enable any of those languages, you need to edit YOURLS' `config.php`, as described [here](https://github.com/YOURLS/YOURLS/wiki/YOURLS-in-your-language#install-yourls-in-your-language).
|
||||||
|
|
||||||
If you want to translate Infinity Squared into your own language, [this blog post](http://blog.yourls.org/2013/02/workshop-how-to-create-your-own-translation-file-for-yourls/) from YOURLS describes how to do it. You can find the latest .pot file in `public/languages/isq_translation-source.pot`. Please follow the contributing guidelines below to add your translation to Infinity Squared.
|
If you want to translate Infinity Squared into your own language, [this blog post](http://blog.yourls.org/2013/02/workshop-how-to-create-your-own-translation-file-for-yourls/) from YOURLS describes how to do it. You can find the latest .pot file in `public/languages/isq_translation-source.pot`. Please follow the contributing guidelines below to add your translation to Infinity Squared.
|
||||||
|
|
||||||
@@ -53,3 +57,11 @@ Licensing
|
|||||||
Just like YOURLS, Infinity Squared is licensed under the MIT license. Basically, you can do whatever you want with it as long as you give attribution wherever you use it. There is no guarantee that this software will work.
|
Just like YOURLS, Infinity Squared is licensed under the MIT license. Basically, you can do whatever you want with it as long as you give attribution wherever you use it. There is no guarantee that this software will work.
|
||||||
|
|
||||||
You can find the full license in the root directory of Infinity Squared, under LICENSE.md.
|
You can find the full license in the root directory of Infinity Squared, under LICENSE.md.
|
||||||
|
|
||||||
|
Clipboard.js is also licensed under the MIT license.
|
||||||
|
|
||||||
|
Donations
|
||||||
|
---------
|
||||||
|
[](https://www.paypal.me/tomslominski)
|
||||||
|
|
||||||
|
Even though Infinity Squared is free, it takes time to build, so I'm more than happy to accept donations at the above link. Thanks!
|
||||||
|
|||||||
45
footer.php
45
footer.php
@@ -10,43 +10,30 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<footer class="content site-footer">
|
<footer class="content site-footer">
|
||||||
<p><?php yourls_e( 'Powered by <a href="http://yourls.org/">YOURLS</a>. Designed by <a href="http://tomslominski.net/">Tom Slominski</a>.', 'isq_translation') ?> <a class="icon-github" href="https://github.com/tomslominski/infinity-squared"><?php include('public/images/github.svg'); ?></a></p>
|
<p><?php yourls_e( 'Powered by <a href="http://yourls.org/">YOURLS</a>. Designed by <a href="https://slomin.ski/">Tom Slominski</a>.', 'isq_translation') ?> <a class="icon-github" href="https://github.com/tomslominski/infinity-squared"><?php include('public/images/github.svg'); ?></a></p>
|
||||||
<?php if ( !empty(ISQ::$recaptcha['sitekey']) && !empty(ISQ::$recaptcha['secret']) ) { ?>
|
<?php if( 'recaptcha' == is_get_antispam_method() || 'recaptcha_v3' == is_get_antispam_method() ) : ?>
|
||||||
<p class="recaptcha-cookie">This site uses cookies for Google reCAPTCHA.<p>
|
<p class="recaptcha-cookie"><?php yourls_e('This site uses cookies for Google reCAPTCHA','isq_translation'); ?>.<p>
|
||||||
<?php }; ?>
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?php if ( in_array( 'ZeroClipboard', $dependencies ) ) { ?>
|
<?php global $dependencies; ?>
|
||||||
<!-- ZeroClipboard is MIT licensed -->
|
|
||||||
<script type="text/javascript" src="public/ZeroClipboard/ZeroClipboard.min.js"></script>
|
|
||||||
<script>
|
|
||||||
ZeroClipboard.config({
|
|
||||||
swfPath: "public/ZeroClipboard/ZeroClipboard.swf"
|
|
||||||
});
|
|
||||||
|
|
||||||
var clipboardClient = new ZeroClipboard( document.getElementsByClassName("copy-button") );
|
<?php if( in_array( 'recaptcha_v3', $dependencies ) ) : ?>
|
||||||
|
<script type="text/template" id="recaptcha-sitekey"><?php echo ISQ::$recaptcha_v3['sitekey']; ?></script>
|
||||||
|
<script src="https://www.google.com/recaptcha/api.js?render=<?php echo ISQ::$recaptcha_v3['sitekey']; ?>"></script>
|
||||||
|
<?php elseif( in_array( 'recaptcha', $dependencies ) ) : ?>
|
||||||
|
<script src="https://www.google.com/recaptcha/api.js"></script>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
var copied = "<?php yourls_e( 'Copied!', 'isq_translation'); ?>";
|
<?php if( in_array( 'clipboard.js', $dependencies ) ) { ?>
|
||||||
|
<script src="public/js/clipboard.min.js"></script>
|
||||||
clipboardClient.on( 'aftercopy', function(event) {
|
|
||||||
event.target.innerHTML = copied;
|
|
||||||
} );
|
|
||||||
</script>
|
|
||||||
<?php }
|
|
||||||
|
|
||||||
if ( in_array( 'reCAPTCHA', $dependencies ) ) { ?>
|
|
||||||
<script src='https://www.google.com/recaptcha/api.js'></script>
|
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
|
|
||||||
<!-- Delay loading of transitions until page is fully loaded -->
|
<?php if( in_array( 'recaptcha_v3', $dependencies ) || in_array( 'clipboard.js', $dependencies ) ) : ?>
|
||||||
<script>
|
<script src="public/js/app.js"></script>
|
||||||
window.addEventListener('load',function load() {
|
<?php endif; ?>
|
||||||
window.removeEventListener('load', load, false);
|
|
||||||
document.body.classList.remove('load');
|
|
||||||
},false);
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
10
header.php
10
header.php
@@ -10,10 +10,16 @@ if( @include dirname(__FILE__) . '/public/config.php' ) {
|
|||||||
include( dirname(__FILE__) . '/public/config-sample.php' );
|
include( dirname(__FILE__) . '/public/config-sample.php' );
|
||||||
}
|
}
|
||||||
|
|
||||||
class ISQ { public static $general = array(), $links = array(), $social = array(), $recaptcha = array(); }
|
class ISQ { public static $general = array(), $links = array(), $social = array(), $recaptcha = array(), $recaptcha_v3 = array(); }
|
||||||
|
|
||||||
|
// Load functions
|
||||||
|
require_once( dirname(__FILE__) . '/public/functions.php' );
|
||||||
|
|
||||||
|
// Default dependencies
|
||||||
|
$dependencies = array();
|
||||||
|
|
||||||
// Load translations
|
// Load translations
|
||||||
yourls_load_custom_textdomain( 'isq_translation', '/public/languages' );
|
yourls_load_custom_textdomain( 'isq_translation', 'public/languages' );
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<html>
|
<html>
|
||||||
|
|||||||
68
index.php
68
index.php
@@ -6,9 +6,9 @@ $title = isset( $_REQUEST['title'] ) ? yourls_sanitize_title( $_REQUEST['title
|
|||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<div class="content">
|
<div class="content index">
|
||||||
<h2><?php yourls_e( 'Enter a new URL to shorten', 'isq_translation'); ?></h2>
|
<h2><?php yourls_e( 'Enter a new URL to shorten', 'isq_translation'); ?></h2>
|
||||||
<form method="post" action="result.php" class="newurl">
|
<form method="post" action="result.php" class="newurl" novalidate>
|
||||||
<div class="form-item full-width">
|
<div class="form-item full-width">
|
||||||
<p><label for="url" class="primary"><?php yourls_e( 'Long URL', 'isq_translation'); ?></label></p>
|
<p><label for="url" class="primary"><?php yourls_e( 'Long URL', 'isq_translation'); ?></label></p>
|
||||||
<p><label for="url" class="secondary"><?php yourls_e( 'Paste the long URL here. This is required.', 'isq_translation'); ?></label></p>
|
<p><label for="url" class="secondary"><?php yourls_e( 'Paste the long URL here. This is required.', 'isq_translation'); ?></label></p>
|
||||||
@@ -16,44 +16,48 @@ $title = isset( $_REQUEST['title'] ) ? yourls_sanitize_title( $_REQUEST['title
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="halves">
|
<div class="halves">
|
||||||
|
<div class="form-item half-width left">
|
||||||
|
<p><label for="keyword" class="primary"><?php yourls_e( 'Custom keyword', 'isq_translation'); ?></label></p>
|
||||||
|
<p><label for="keyword" class="secondary"><?php yourls_e( 'A keyword replaces the default short string.', 'isq_translation'); ?></label></p>
|
||||||
|
<input type="text" id="keyword" name="keyword" autocorrect="off" autocapitalize="none" value="<?php echo($keyword); ?>">
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="form-item half-width left">
|
<div class="form-item half-width right">
|
||||||
<p><label for="keyword" class="primary"><?php yourls_e( 'Custom keyword', 'isq_translation'); ?></label></p>
|
<p><label for="title" class="primary"><?php yourls_e( 'Custom title', 'isq_translation'); ?></label></p>
|
||||||
<p><label for="keyword" class="secondary"><?php yourls_e( 'A keyword replaces the default short string.', 'isq_translation'); ?></label></p>
|
<p><label for="title" class="secondary"><?php yourls_e( 'Optional title used when sharing a link from YOURLS using social sharers.', 'isq_translation'); ?></label></p>
|
||||||
<input type="text" id="keyword" name="keyword" value="<?php echo($keyword); ?>">
|
<input type="text" id="title" name="title" value="<?php echo($title); ?>">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-item half-width right">
|
|
||||||
<p><label for="title" class="primary"><?php yourls_e( 'Custom title', 'isq_translation'); ?></label></p>
|
|
||||||
<p><label for="title" class="secondary"><?php yourls_e( 'Optional title used when sharing a link from YOURLS using social sharers.', 'isq_translation'); ?></label></p>
|
|
||||||
<input type="text" id="title" name="title" value="<?php echo($title); ?>">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
if ( yourls_is_valid_user() == 1 ) {
|
switch( is_get_antispam_method() ) {
|
||||||
|
case 'login': ?>
|
||||||
|
<input type="hidden" name="antispam_method" value="user_login" class="hidden">
|
||||||
|
<?php break;
|
||||||
|
|
||||||
echo '<input type="hidden" name="antispam_method" value="user_login" class="hidden">';
|
case 'recaptcha_v3':
|
||||||
|
$dependencies[] = 'recaptcha_v3';
|
||||||
|
?>
|
||||||
|
<input type="hidden" name="antispam_method" value="recaptcha_v3" class="hidden">
|
||||||
|
<input type="hidden" name="recaptcha_token" id="recaptcha_token" class="hidden">
|
||||||
|
<?php break;
|
||||||
|
|
||||||
} else if ( !empty(ISQ::$recaptcha['sitekey']) && !empty(ISQ::$recaptcha['secret']) ) {
|
case 'recaptcha':
|
||||||
|
$dependencies[] = 'recaptcha';
|
||||||
|
?>
|
||||||
|
<input type="hidden" name="antispam_method" value="recaptcha" class="hidden">
|
||||||
|
|
||||||
$dependencies[] = 'reCAPTCHA';
|
<div class="form-item recaptcha-container">
|
||||||
|
<p><label class="primary" title=""><?php yourls_e( 'Verification', 'isq_translation'); ?></label></p>
|
||||||
echo '<input type="hidden" name="antispam_method" value="recaptcha" class="hidden">';
|
<p><label class="secondary"><?php yourls_e( 'reCAPTCHA verification used to ensure you are not a bot.', 'isq_translation'); ?></label></p>
|
||||||
?>
|
<div class="g-recaptcha" data-sitekey="<?php echo ISQ::$recaptcha['sitekey']; ?>"></div>
|
||||||
<div class="form-item recaptcha-container">
|
</div>
|
||||||
<p><label class="primary" title=""><?php yourls_e( 'Verification', 'isq_translation'); ?></label></p>
|
<?php break;
|
||||||
<p><label class="secondary"><?php yourls_e( 'reCAPTCHA verification used to ensure you are not a bot.', 'isq_translation'); ?></label></p>
|
|
||||||
<div class="g-recaptcha" data-sitekey="<?php echo ISQ::$recaptcha['sitekey']; ?>"></div>
|
|
||||||
</div>
|
|
||||||
<?php
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
echo '<input type="hidden" name="antispam_method" value="basic" class="hidden">';
|
|
||||||
echo '<input type="hidden" name="basic_antispam" class="hidden">';
|
|
||||||
|
|
||||||
|
default: ?>
|
||||||
|
<input type="hidden" name="antispam_method" value="basic" class="hidden">
|
||||||
|
<input type="hidden" name="basic_antispam" class="hidden">
|
||||||
|
<?php break;
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
||||||
|
|||||||
10
public/ZeroClipboard/ZeroClipboard.min.js
vendored
10
public/ZeroClipboard/ZeroClipboard.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
@@ -8,7 +8,6 @@
|
|||||||
ISQ::$general = array(
|
ISQ::$general = array(
|
||||||
'name' => 'URL shortener', // The name of your URL shortener
|
'name' => 'URL shortener', // The name of your URL shortener
|
||||||
'qr' => TRUE, // Do you want to display a QR code?
|
'qr' => TRUE, // Do you want to display a QR code?
|
||||||
'clipboard' => 1, // Do you want to enable zeroClipboard? (uses flash)
|
|
||||||
'customstyle' => TRUE // Do you want to enable the custom stylesheet, found in public/custom.css?
|
'customstyle' => TRUE // Do you want to enable the custom stylesheet, found in public/custom.css?
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -21,11 +20,15 @@ ISQ::$links = array(
|
|||||||
),
|
),
|
||||||
array(
|
array(
|
||||||
'name' => 'Tom Slominski',
|
'name' => 'Tom Slominski',
|
||||||
'link' => 'http://tomslominski.net/'
|
'link' => 'https://slomin.ski/'
|
||||||
),
|
),
|
||||||
array(
|
array(
|
||||||
'name' => 'Get ∞²!',
|
'name' => yourls__( 'Get ∞²!', 'isq_translation' ),
|
||||||
'link' => 'https://github.com/tomslominski/infinity-squared/'
|
'link' => 'https://github.com/tomslominski/infinity-squared/'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'name' => yourls__( 'Admin area', 'isq_translation' ),
|
||||||
|
'link' => YOURLS_SITE . '/admin/'
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -36,7 +39,8 @@ ISQ::$social = array(
|
|||||||
'facebook' => TRUE,
|
'facebook' => TRUE,
|
||||||
'linkedin' => TRUE,
|
'linkedin' => TRUE,
|
||||||
'tumblr' => TRUE,
|
'tumblr' => TRUE,
|
||||||
'googleplus' => TRUE
|
'googleplus' => TRUE,
|
||||||
|
'vk' => TRUE,
|
||||||
);
|
);
|
||||||
|
|
||||||
// reCAPTCHA API KEYS
|
// reCAPTCHA API KEYS
|
||||||
@@ -48,4 +52,11 @@ ISQ::$recaptcha = array(
|
|||||||
'secret' => ''
|
'secret' => ''
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Separate API keys for reCAPTCHA v3
|
||||||
|
ISQ::$recaptcha_v3 = array(
|
||||||
|
'sitekey' => '',
|
||||||
|
'secret' => '',
|
||||||
|
'threshold' => '0.5',
|
||||||
|
);
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
67
public/functions.php
Normal file
67
public/functions.php
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return which method is being used for preventing spam,
|
||||||
|
* based on the site config.
|
||||||
|
*
|
||||||
|
* @return string login/recaptcha_v3/recaptcha/basic
|
||||||
|
*/
|
||||||
|
function is_get_antispam_method() {
|
||||||
|
if( 1 == yourls_is_valid_user() ) {
|
||||||
|
return 'login';
|
||||||
|
} elseif( isset( ISQ::$recaptcha_v3['sitekey'] ) && ISQ::$recaptcha_v3['sitekey'] && isset( ISQ::$recaptcha_v3['secret'] ) && ISQ::$recaptcha_v3['secret'] ) {
|
||||||
|
return 'recaptcha_v3';
|
||||||
|
} elseif( isset( ISQ::$recaptcha['sitekey'] ) && ISQ::$recaptcha['sitekey'] && isset( ISQ::$recaptcha['secret'] ) && ISQ::$recaptcha['secret'] ) {
|
||||||
|
return 'recaptcha';
|
||||||
|
} else {
|
||||||
|
return 'basic';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Terminate the request without shortening the URL and
|
||||||
|
* display an error.
|
||||||
|
*
|
||||||
|
* @param string $message Error message.
|
||||||
|
* @param string $action Action message, defaults to "Go home".
|
||||||
|
*/
|
||||||
|
function display_error( $message, $action = null ) {
|
||||||
|
echo '<div class="content error">';
|
||||||
|
echo '<p class="message">' . $message . '</p>';
|
||||||
|
|
||||||
|
echo '<p class="action">';
|
||||||
|
if( !empty( $action ) ) {
|
||||||
|
echo $action;
|
||||||
|
} else {
|
||||||
|
echo '<a href="' . YOURLS_SITE . '" class="button">' . yourls__( '← Go home and try again', 'isq_translation' ) . '</a>';
|
||||||
|
}
|
||||||
|
echo '</p>';
|
||||||
|
echo '</div>';
|
||||||
|
|
||||||
|
include('footer.php');
|
||||||
|
die();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get remote file, either using CURL or file_get_contents
|
||||||
|
* depending on server configuration.
|
||||||
|
*
|
||||||
|
* @param string $url Remote file URL.
|
||||||
|
* @return string Remote file contents.
|
||||||
|
*/
|
||||||
|
function get_remote_file( $url ) {
|
||||||
|
if( function_exists( 'curl_init' ) ) {
|
||||||
|
$curl = curl_init();
|
||||||
|
curl_setopt( $curl, CURLOPT_URL, $url );
|
||||||
|
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );
|
||||||
|
$output = curl_exec( $curl );
|
||||||
|
curl_close( $curl );
|
||||||
|
return $output;
|
||||||
|
} elseif( ini_get( 'allow_url_fopen' ) ) {
|
||||||
|
return file_get_contents( $url );
|
||||||
|
} else {
|
||||||
|
display_error( yourls__( 'Your server doesn\'t support reCAPTCHA. Ask your host to install cURL or turn on allow_url_fopen.', 'isq_translation' ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
12
public/images/clippy.svg
Executable file
12
public/images/clippy.svg
Executable file
@@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg width="14px" height="16px" viewBox="0 0 14 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<!-- Generator: Sketch 3.8.3 (29802) - http://www.bohemiancoding.com/sketch -->
|
||||||
|
<title>clippy</title>
|
||||||
|
<desc>Created with Sketch.</desc>
|
||||||
|
<defs></defs>
|
||||||
|
<g id="Octicons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||||
|
<g id="clippy" fill="#000000">
|
||||||
|
<path d="M2,13 L6,13 L6,14 L2,14 L2,13 L2,13 Z M7,7 L2,7 L2,8 L7,8 L7,7 L7,7 Z M9,10 L9,8 L6,11 L9,14 L9,12 L14,12 L14,10 L9,10 L9,10 Z M4.5,9 L2,9 L2,10 L4.5,10 L4.5,9 L4.5,9 Z M2,12 L4.5,12 L4.5,11 L2,11 L2,12 L2,12 Z M11,13 L12,13 L12,15 C11.98,15.28 11.89,15.52 11.7,15.7 C11.51,15.88 11.28,15.98 11,16 L1,16 C0.45,16 0,15.55 0,15 L0,4 C0,3.45 0.45,3 1,3 L4,3 C4,1.89 4.89,1 6,1 C7.11,1 8,1.89 8,3 L11,3 C11.55,3 12,3.45 12,4 L12,9 L11,9 L11,6 L1,6 L1,15 L11,15 L11,13 L11,13 Z M2,5 L10,5 C10,4.45 9.55,4 9,4 L8,4 C7.45,4 7,3.55 7,3 C7,2.45 6.55,2 6,2 C5.45,2 5,2.45 5,3 C5,3.55 4.55,4 4,4 L3,4 C2.45,4 2,4.45 2,5 L2,5 Z" id="Shape"></path>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.1 KiB |
BIN
public/images/logo.sketch
Normal file
BIN
public/images/logo.sketch
Normal file
Binary file not shown.
@@ -1,24 +1 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<svg width="868" height="330" viewBox="0 0 868 330" xmlns="http://www.w3.org/2000/svg"><title>logo 2</title><g stroke="#000" fill="none" fill-rule="evenodd"><path d="M395 243c4.1.5 12.9 1.6 17.2 1.6 55.1 0 96-34.5 111.8-79.6-13.6-11.5-22.7-20-39-25-5.6 32-36.7 57-72 57-7.9 0-15.3-1.2-22.5-3.4" stroke-width="17.01"/><path d="M343.9 166.5c-14.6-12.4-27.9-26.7-41-38.8-.8-.7-.8-1.9-.1-2.7 29.9-30.7 65.9-68.4 110.4-68.4 24.9 0 45.6 12.1 57.2 31.4 21.7 2.5 41.3 11.3 59.3 23.3C523.4 51.1 478.8 9 416.5 9 353 9 311.2 52.5 271.2 92.5c-.7.7-1.9.7-2.7 0-37.7-37.8-81-83.5-139-83.5C59.8 9 9 63.7 9 126.4c0 68.2 47.6 117.3 114.1 117.3 63.5 0 105.3-43.4 145.3-83.5.7-.7 1.9-.7 2.7 0 20.3 20.3 42.2 42.9 67.1 59.5m-101.4-92c-29.9 30.7-65.9 68.4-110.4 68.4-38.8 0-67.4-29.3-67.4-69.8 0-37.3 30.1-69.8 69.8-69.8 45.3 0 77.5 40 108 68.4.7.9.7 2.1 0 2.8z" stroke-width="16.075"/><path d="M473 87.3c-4.1-.5-10.8 0-15.1 0-55.1 0-99.2 32.6-114.9 77.7 13 13 29 23 45.4 27.8 5.6-32 33.4-57.9 68.7-57.9 7.9 0 15.3 1.2 22.5 3.4" stroke-width="17.01"/><path d="M524.1 164.4c14.6 12.4 27.9 26.7 41 38.8.8.7.8 1.9.1 2.7-29.9 30.7-65.9 68.4-110.4 68.4-24.9 0-45.6-12.1-57.2-31.4-21.7-2.5-41.3-11.3-59.3-23.3 6.5 60.2 51.8 102.2 113.3 102.2 63.5 0 105.3-43.4 145.3-83.5.7-.7 1.9-.7 2.7 0 37.7 37.8 81 83.5 139 83.5 69.8 0 120.5-54.7 120.5-117.3 0-68.2-46.8-117.3-114.1-117.3-63.5 0-105.3 43.4-145.3 83.5-.7.7-1.9.7-2.7 0-20.3-20.3-42.2-42.9-67.1-59.5m209.4 163.2c-45.3 0-77.5-40-108-68.4-.8-.7-.8-1.9-.1-2.7 29.9-30.7 65.9-68.4 110.4-68.4 38.8 0 67.4 29.3 67.4 69.8.1 37.2-30 69.7-69.7 69.7z" stroke-width="16.075"/></g></svg>
|
||||||
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
||||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
||||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
|
||||||
viewBox="0 0 866.1 328.9" enable-background="new 0 0 866.1 328.9" xml:space="preserve">
|
|
||||||
<g>
|
|
||||||
<path fill="none" stroke="#000000" stroke-width="17.0104" stroke-miterlimit="10" d="M396.6,241.9c4.1,0.5,8.3,0.7,12.6,0.7
|
|
||||||
c55.1,0,98.2-34.1,114-79.2c-13.6-11.5-28.2-21.3-44.5-26.3c-5.6,32-33.4,57.9-68.7,57.9c-7.9,0-15.3-1.2-22.5-3.4"/>
|
|
||||||
<path fill="none" stroke="#000000" stroke-width="16.0752" stroke-miterlimit="10" d="M342.9,165.5c-14.6-12.4-27.9-26.7-41-38.8
|
|
||||||
c-0.8-0.7-0.8-1.9-0.1-2.7c29.9-30.7,65.9-68.4,110.4-68.4c24.9,0,45.6,12.1,57.2,31.4c21.7,2.5,41.3,11.3,59.3,23.3
|
|
||||||
C522.4,50.1,477.8,8,415.5,8C352,8,310.2,51.5,270.2,91.5c-0.7,0.7-1.9,0.7-2.7,0C229.8,53.7,186.5,8,128.5,8
|
|
||||||
C58.8,8,8,62.7,8,125.4c0,68.2,47.6,117.3,114.1,117.3c63.5,0,105.3-43.4,145.3-83.5c0.7-0.7,1.9-0.7,2.7,0
|
|
||||||
c20.3,20.3,42.2,42.9,67.1,59.5 M235.8,126.7c-29.9,30.7-65.9,68.4-110.4,68.4c-38.8,0-67.4-29.3-67.4-69.8
|
|
||||||
c0-37.3,30.1-69.8,69.8-69.8c45.3,0,77.5,40,108,68.4C236.5,124.8,236.5,126,235.8,126.7z"/>
|
|
||||||
<path fill="none" stroke="#000000" stroke-width="17.0104" stroke-miterlimit="10" d="M469.5,87c-4.1-0.5-8.3-0.7-12.6-0.7
|
|
||||||
c-55.1,0-98.3,34.1-114,79.2c13.6,11.5,28.2,21.3,44.5,26.3c5.6-32,33.4-57.9,68.7-57.9c7.9,0,15.3,1.2,22.5,3.4"/>
|
|
||||||
<path fill="none" stroke="#000000" stroke-width="16.0752" stroke-miterlimit="10" d="M523.1,163.4c14.6,12.4,27.9,26.7,41,38.8
|
|
||||||
c0.8,0.7,0.8,1.9,0.1,2.7c-29.9,30.7-65.9,68.4-110.4,68.4c-24.9,0-45.6-12.1-57.2-31.4c-21.7-2.5-41.3-11.3-59.3-23.3
|
|
||||||
c6.5,60.2,51.8,102.2,113.3,102.2c63.5,0,105.3-43.4,145.3-83.5c0.7-0.7,1.9-0.7,2.7,0c37.7,37.8,81,83.5,139,83.5
|
|
||||||
c69.8,0,120.5-54.7,120.5-117.3c0-68.2-46.8-117.3-114.1-117.3c-63.5,0-105.3,43.4-145.3,83.5c-0.7,0.7-1.9,0.7-2.7,0
|
|
||||||
c-20.3-20.3-42.2-42.9-67.1-59.5 M738.3,273.4c-45.3,0-77.5-40-108-68.4c-0.8-0.7-0.8-1.9-0.1-2.7c29.9-30.7,65.9-68.4,110.4-68.4
|
|
||||||
c38.8,0,67.4,29.3,67.4,69.8C808.1,240.9,778,273.4,738.3,273.4z"/>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 1.6 KiB |
1
public/images/vk.svg
Normal file
1
public/images/vk.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="548.358" height="548.358" viewBox="0 0 548.358 548.358"><path d="M545.45 400.298c-.663-1.43-1.282-2.618-1.857-3.57-9.514-17.134-27.695-38.166-54.532-63.1l-.566-.572-.284-.28-.287-.287h-.288c-12.18-11.612-19.893-19.42-23.123-23.416-5.91-7.614-7.234-15.32-4.004-23.13 2.282-5.9 10.854-18.36 25.696-37.397 7.807-10.09 13.99-18.175 18.556-24.267 32.93-43.78 47.208-71.756 42.828-83.94l-1.7-2.846c-1.144-1.714-4.094-3.282-8.847-4.712-4.763-1.427-10.852-1.663-18.277-.712l-82.224.568c-1.333-.472-3.235-.428-5.713.144-2.475.572-3.713.86-3.713.86l-1.43.714-1.137.86c-.952.567-2 1.566-3.142 2.994-1.137 1.423-2.088 3.093-2.848 4.996-8.952 23.03-19.13 44.444-30.553 64.238-7.043 11.803-13.51 22.032-19.418 30.693-5.9 8.658-10.848 15.037-14.842 19.126-4 4.093-7.61 7.372-10.852 9.85-3.237 2.477-5.708 3.524-7.42 3.14-1.714-.382-3.33-.762-4.858-1.142-2.663-1.713-4.805-4.044-6.42-6.994-1.622-2.95-2.714-6.663-3.285-11.136-.57-4.476-.905-8.326-1-11.563-.09-3.233-.05-7.806.144-13.706.198-5.902.287-9.896.287-11.99 0-7.234.142-15.085.425-23.555.288-8.47.52-15.18.716-20.125.195-4.95.285-10.185.285-15.705s-.336-9.85-1-12.99c-.656-3.14-1.663-6.185-2.99-9.138-1.335-2.95-3.29-5.232-5.853-6.852-2.57-1.618-5.763-2.902-9.564-3.856-10.09-2.284-22.936-3.52-38.547-3.71-35.4-.38-58.147 1.905-68.235 6.854-3.997 2.09-7.614 4.948-10.848 8.562-3.427 4.19-3.905 6.475-1.43 6.85 11.42 1.712 19.507 5.805 24.266 12.276l1.715 3.43c1.334 2.473 2.666 6.853 4 13.133 1.33 6.28 2.19 13.227 2.567 20.837.95 13.897.95 25.793 0 35.69-.953 9.9-1.853 17.606-2.712 23.126-.86 5.52-2.143 9.993-3.855 13.418-1.715 3.426-2.856 5.52-3.428 6.28-.57.76-1.047 1.24-1.425 1.427-2.474.948-5.047 1.43-7.71 1.43-2.667 0-5.9-1.333-9.707-4-3.805-2.665-7.754-6.327-11.847-10.99-4.092-4.666-8.708-11.185-13.85-19.56-5.136-8.373-10.466-18.27-15.986-29.69l-4.567-8.282c-2.855-5.327-6.755-13.085-11.704-23.266-4.952-10.185-9.33-20.037-13.134-29.554-1.522-3.997-3.807-7.04-6.852-9.134l-1.43-.86c-.95-.76-2.474-1.566-4.566-2.426-2.095-.86-4.28-1.475-6.567-1.854l-78.23.568c-7.993 0-13.417 1.81-16.273 5.428l-1.143 1.71c-.572.954-.86 2.476-.86 4.57 0 2.095.57 4.665 1.714 7.708 11.42 26.84 23.84 52.725 37.257 77.66 13.42 24.933 25.08 45.018 34.974 60.236 9.897 15.23 19.985 29.602 30.264 43.112 10.28 13.515 17.083 22.176 20.412 25.98 3.333 3.813 5.95 6.663 7.854 8.566l7.14 6.85c4.567 4.57 11.275 10.042 20.126 16.417 8.853 6.38 18.654 12.66 29.408 18.85 10.756 6.182 23.27 11.226 37.546 15.127 14.275 3.905 28.17 5.472 41.684 4.716h32.834c6.66-.575 11.704-2.67 15.133-6.283l1.136-1.43c.765-1.137 1.48-2.902 2.14-5.277.668-2.38 1-5 1-7.85-.195-8.184.428-15.56 1.852-22.125 1.423-6.564 3.045-11.513 4.86-14.846 1.812-3.33 3.858-6.14 6.135-8.418 2.282-2.283 3.908-3.666 4.862-4.142.947-.48 1.704-.804 2.275-1 4.568-1.52 9.944-.047 16.136 4.43 6.188 4.473 11.99 9.996 17.42 16.56 5.424 6.57 11.942 13.94 19.554 22.124 7.617 8.186 14.277 14.27 19.985 18.274l5.707 3.426c3.812 2.286 8.76 4.38 14.853 6.283 6.08 1.9 11.41 2.377 15.984 1.426l73.087-1.14c7.23 0 12.855-1.197 16.845-3.572 3.998-2.38 6.373-5 7.14-7.85.763-2.855.804-6.093.144-9.713-.678-3.61-1.345-6.135-2.01-7.562z"/></svg>
|
||||||
|
After Width: | Height: | Size: 3.1 KiB |
61
public/js/app.js
Normal file
61
public/js/app.js
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
function filterNodeListById( nodeList, id ) {
|
||||||
|
|
||||||
|
var elements = Array.prototype.slice.call( nodeList );
|
||||||
|
|
||||||
|
for (var i = elements.length - 1; i >= 0; i--) {
|
||||||
|
if( elements[i].id == id ) {
|
||||||
|
return elements[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clipboard.js
|
||||||
|
if( document.querySelectorAll( '.copy-button' ).length > 0 ) {
|
||||||
|
|
||||||
|
var clipboard = new Clipboard( '.copy-button' );
|
||||||
|
var clipboardTimeout = 2000;
|
||||||
|
|
||||||
|
clipboard.on( 'success', function( event ) {
|
||||||
|
var errorElement = filterNodeListById( event.trigger.parentNode.childNodes, 'copy-success' );
|
||||||
|
|
||||||
|
errorElement.className += " visible";
|
||||||
|
|
||||||
|
window.setTimeout( function() {
|
||||||
|
errorElement.className = errorElement.className.replace(/\bvisible\b/,'');
|
||||||
|
}, clipboardTimeout );
|
||||||
|
} );
|
||||||
|
|
||||||
|
clipboard.on( 'error', function( event ) {
|
||||||
|
var errorElement = filterNodeListById( event.trigger.parentNode.childNodes, 'copy-error' );
|
||||||
|
var osClass;
|
||||||
|
|
||||||
|
if( /iPhone|iPad/i.test(navigator.userAgent) ) {
|
||||||
|
osClass = 'mobile';
|
||||||
|
} else if ( /Mac/i.test(navigator.userAgent) ) {
|
||||||
|
osClass = 'macos';
|
||||||
|
} else if ( /Windows/i.test(navigator.userAgent) || /X11/i.test(navigator.userAgent) ) {
|
||||||
|
osClass = 'pc';
|
||||||
|
} else {
|
||||||
|
osClass = 'other';
|
||||||
|
}
|
||||||
|
|
||||||
|
errorElement.className += " visible " + osClass;
|
||||||
|
|
||||||
|
window.setTimeout( function() {
|
||||||
|
errorElement.className = errorElement.className.replace(/\bvisible\b/,'');
|
||||||
|
}, clipboardTimeout );
|
||||||
|
} );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// reCAPTCHA
|
||||||
|
if( 'object' === typeof grecaptcha ) {
|
||||||
|
grecaptcha.ready( function() {
|
||||||
|
var sitekey = document.querySelectorAll( '#recaptcha-sitekey' )[0].innerHTML;
|
||||||
|
|
||||||
|
grecaptcha.execute( sitekey, {action: 'homepage'} ).then( function( token ) {
|
||||||
|
document.querySelectorAll( '#recaptcha_token' )[0].value = token;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
7
public/js/clipboard.min.js
vendored
Executable file
7
public/js/clipboard.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
BIN
public/languages/isq_translation-de_DE.mo
Normal file
BIN
public/languages/isq_translation-de_DE.mo
Normal file
Binary file not shown.
173
public/languages/isq_translation-de_DE.po
Normal file
173
public/languages/isq_translation-de_DE.po
Normal file
@@ -0,0 +1,173 @@
|
|||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"X-Generator: POEditor.com\n"
|
||||||
|
"Project-Id-Version: infinitysqaure\n"
|
||||||
|
"Language: de\n"
|
||||||
|
|
||||||
|
#: footer.php:3
|
||||||
|
msgid "The bookmarklet"
|
||||||
|
msgstr "Das Lesezeichen"
|
||||||
|
|
||||||
|
#: footer.php:5
|
||||||
|
msgid "Save this as a bookmark."
|
||||||
|
msgstr "Speichere dies als Lesezeichen."
|
||||||
|
|
||||||
|
#: footer.php:6
|
||||||
|
msgid "Add this to your bookmarks or drag it to your bookmarks bar to quickly access shortening functions."
|
||||||
|
msgstr "Füge dies zu deinen Lesezeichen hinzu oder ziehe es in deine Lesezeichenleiste, um schnell auf die Verkürzungsfunktionen zuzugreifen."
|
||||||
|
|
||||||
|
#: footer.php:7 index.php:59
|
||||||
|
msgid "Shorten"
|
||||||
|
msgstr "Verkürzen"
|
||||||
|
|
||||||
|
#: footer.php:8
|
||||||
|
msgid "This bookmarklet takes the page URL and title and opens a new tab, where you can fill out a CAPTCHA. If you have selected text before using the bookmarklet, that will be used as the keyword."
|
||||||
|
msgstr "Dieses Lesezeichen verwendet die Seiten-URL und den Titel und öffnet eine neue Registerkarte, auf der Sie ein CAPTCHA ausfüllen können. Wenn du vor der Verwendung des Lesezeichens Text ausgewählt hast, wird dieser als Schlüsselwort verwendet."
|
||||||
|
|
||||||
|
#: footer.php:9
|
||||||
|
msgid "Support for bookmarklets on mobile varies. For example, they work on Chrome for Android but you have to add and sync them from your desktop."
|
||||||
|
msgstr "Die Unterstützung für Lesezeichen auf Mobilgeräten ist unterschiedlich. Zum Beispiel funktionieren sie unter Chrome für Android, aber Sie müssen sie von Ihrem Desktop aus hinzufügen und synchronisieren."
|
||||||
|
|
||||||
|
#: footer.php:13
|
||||||
|
msgid "Powered by <a href=\"http://yourls.org/\">YOURLS</a>. Designed by <a href=\"http://tomslominski.net/\">Tom Slominski</a>."
|
||||||
|
msgstr "Unterstützt von <a href=\"http://yourls.org/\"> YOURLS </a>. Entworfen von <a href=\"http://tomslominski.net/\"> Tom Slominski </a>."
|
||||||
|
|
||||||
|
#: footer.php:15
|
||||||
|
msgid "This site uses cookies for Google reCAPTCHA"
|
||||||
|
msgstr "Diese Website verwendet Cookies für Google reCAPTCHA"
|
||||||
|
|
||||||
|
#: index.php:10
|
||||||
|
msgid "Enter a new URL to shorten"
|
||||||
|
msgstr "Gebe eine neue URL zum Kürzen ein"
|
||||||
|
|
||||||
|
#: index.php:13
|
||||||
|
msgid "Long URL"
|
||||||
|
msgstr "Lange URL"
|
||||||
|
|
||||||
|
#: index.php:14
|
||||||
|
msgid "Paste the long URL here. This is required."
|
||||||
|
msgstr "Füge hier die lange URL ein. Dies ist erforderlich."
|
||||||
|
|
||||||
|
#: index.php:20
|
||||||
|
msgid "Custom keyword"
|
||||||
|
msgstr "Benutzerdefiniertes Schlüsselwort"
|
||||||
|
|
||||||
|
#: index.php:21
|
||||||
|
msgid "A keyword replaces the default short string."
|
||||||
|
msgstr "Ein Schlüsselwort ersetzt die Standard-Kurzzeichenfolge."
|
||||||
|
|
||||||
|
#: index.php:26
|
||||||
|
msgid "Custom title"
|
||||||
|
msgstr "Benutzerdefinierter Titel"
|
||||||
|
|
||||||
|
#: index.php:27
|
||||||
|
msgid "Optional title used when sharing a link from YOURLS using social sharers."
|
||||||
|
msgstr "Optionaler Titel, der verwendet wird, wenn ein Link von YOURLS mithilfe von Social Sharern freigegeben wird."
|
||||||
|
|
||||||
|
#: index.php:44
|
||||||
|
msgid "Verification"
|
||||||
|
msgstr "Überprüfung"
|
||||||
|
|
||||||
|
#: index.php:45
|
||||||
|
msgid "reCAPTCHA verification used to ensure you are not a bot."
|
||||||
|
msgstr "Die reCAPTCHA-Überprüfung wird verwendet, um sicherzustellen, dass du kein Bot bist."
|
||||||
|
|
||||||
|
#: public/config-sample.php:26
|
||||||
|
msgid "Get ∞²!"
|
||||||
|
msgstr "Hole dir ∞²!"
|
||||||
|
|
||||||
|
#: public/config-sample.php:30
|
||||||
|
msgid "Admin area"
|
||||||
|
msgstr "Admin-Bereich"
|
||||||
|
|
||||||
|
#: result.php:12
|
||||||
|
msgid "← Go home and try again"
|
||||||
|
msgstr "& larr; Geh nach Hause und versuche es erneut"
|
||||||
|
|
||||||
|
#: result.php:22
|
||||||
|
msgid "You haven't entered a URL to shorten."
|
||||||
|
msgstr "Du hast keine zu verkürzende URL eingegeben."
|
||||||
|
|
||||||
|
#: result.php:27
|
||||||
|
msgid "The keyword %1$s is reserved."
|
||||||
|
msgstr "Das Schlüsselwort% 1 $ s ist reserviert."
|
||||||
|
|
||||||
|
#: result.php:32
|
||||||
|
msgid "The keyword %1$s is taken."
|
||||||
|
msgstr "Das Schlüsselwort% 1 $ s wird verwendet."
|
||||||
|
|
||||||
|
#: result.php:50
|
||||||
|
msgid "Are you a bot? Google certainly thinks you are."
|
||||||
|
msgstr "Bist du ein Bot? Google glaubt sicherlich, dass du einer bist."
|
||||||
|
|
||||||
|
#: result.php:58
|
||||||
|
msgid "Are you a bot? The verification was not completed successfully."
|
||||||
|
msgstr "Bist du ein Bot? Die Überprüfung wurde nicht erfolgreich abgeschlossen."
|
||||||
|
|
||||||
|
#: result.php:64
|
||||||
|
msgid "Are you a bot? No antispam protection was completed successfully."
|
||||||
|
msgstr "Bist du ein Bot? Es wurde kein Antispam-Schutz erfolgreich abgeschlossen."
|
||||||
|
|
||||||
|
#: result.php:84
|
||||||
|
msgid "The URL could not be shortened."
|
||||||
|
msgstr "Die URL konnte nicht gekürzt werden."
|
||||||
|
|
||||||
|
#: result.php:101
|
||||||
|
msgid "Your short URL"
|
||||||
|
msgstr "Deine kurze URL"
|
||||||
|
|
||||||
|
#: result.php:105
|
||||||
|
msgid "Original URL"
|
||||||
|
msgstr "Ursprüngliche URL"
|
||||||
|
|
||||||
|
#: result.php:108 result.php:124 result.php:139
|
||||||
|
msgid "Copy to clipboard"
|
||||||
|
msgstr "In die Zwischenablage kopieren"
|
||||||
|
|
||||||
|
#: result.php:109 result.php:125 result.php:140
|
||||||
|
msgid "Copied to clipboard"
|
||||||
|
msgstr "In die Zwischenablage kopiert"
|
||||||
|
|
||||||
|
#: result.php:111 result.php:127 result.php:142
|
||||||
|
msgid "Press ⌘+C to copy"
|
||||||
|
msgstr "Drücke zum Kopieren ⌘ + C."
|
||||||
|
|
||||||
|
#: result.php:112 result.php:128 result.php:143
|
||||||
|
msgid "Press Ctrl+C to copy"
|
||||||
|
msgstr "Drücke zum Kopieren Strg + C."
|
||||||
|
|
||||||
|
#: result.php:113 result.php:129 result.php:144
|
||||||
|
msgid "Tap copy"
|
||||||
|
msgstr "Tippe auf Kopieren"
|
||||||
|
|
||||||
|
#: result.php:114 result.php:130 result.php:145
|
||||||
|
msgid "Failed to copy"
|
||||||
|
msgstr "Kopieren fehlgeschlagen"
|
||||||
|
|
||||||
|
#: result.php:121
|
||||||
|
msgid "Short URL"
|
||||||
|
msgstr "Kurze URL"
|
||||||
|
|
||||||
|
#: result.php:136
|
||||||
|
msgid "Stats"
|
||||||
|
msgstr "Statistiken"
|
||||||
|
|
||||||
|
#: result.php:153
|
||||||
|
msgid "Share"
|
||||||
|
msgstr "Teilen"
|
||||||
|
|
||||||
|
#: result.php:154
|
||||||
|
msgid "Share your short URL"
|
||||||
|
msgstr "Teile deine kurze URL"
|
||||||
|
|
||||||
|
#: result.php:175
|
||||||
|
msgid "QR code"
|
||||||
|
msgstr "QR-Code"
|
||||||
|
|
||||||
|
#: result.php:176
|
||||||
|
msgid "Share your link with external devices"
|
||||||
|
msgstr "Teile deinen Link mit externen Geräten"
|
||||||
|
|
||||||
BIN
public/languages/isq_translation-es_ES.mo
Normal file
BIN
public/languages/isq_translation-es_ES.mo
Normal file
Binary file not shown.
216
public/languages/isq_translation-es_ES.po
Normal file
216
public/languages/isq_translation-es_ES.po
Normal file
@@ -0,0 +1,216 @@
|
|||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Infinity Squared\n"
|
||||||
|
"POT-Creation-Date: 2016-11-04 12:57+0100\n"
|
||||||
|
"PO-Revision-Date: 2016-11-04 12:58+0100\n"
|
||||||
|
"Last-Translator: \n"
|
||||||
|
"Language-Team: \n"
|
||||||
|
"Language: es_ES\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"X-Generator: Poedit 1.8.11\n"
|
||||||
|
"X-Poedit-KeywordsList: yourls__;yourls_e;yourls_s;yourls_se;"
|
||||||
|
"yourls_esc_attr__;yourls_esc_html__;yourls_x;yourls_ex;yourls_esc_attr_x;"
|
||||||
|
"yourls_esc_html_x;yourls_n:1,2;yourls_nx:1,2;yourls_n_noop:1,2;"
|
||||||
|
"yourls_nx_noop:1,2\n"
|
||||||
|
"X-Poedit-Basepath: ../..\n"
|
||||||
|
"X-Poedit-SourceCharset: UTF-8\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
"X-Poedit-SearchPath-0: public/languages\n"
|
||||||
|
"X-Poedit-SearchPath-1: .\n"
|
||||||
|
|
||||||
|
#: footer.php:3
|
||||||
|
msgid "The bookmarklet"
|
||||||
|
msgstr "El marcador"
|
||||||
|
|
||||||
|
#: footer.php:5
|
||||||
|
msgid "Save this as a bookmark."
|
||||||
|
msgstr "Guardar como marcador"
|
||||||
|
|
||||||
|
#: footer.php:6
|
||||||
|
msgid ""
|
||||||
|
"Add this to your bookmarks or drag it to your bookmarks bar to quickly "
|
||||||
|
"access shortening functions."
|
||||||
|
msgstr ""
|
||||||
|
"Añada esto a sus marcadores, o arrástrelo a su barra de marcadores para "
|
||||||
|
"acceder rápidamente a las funciones de acortado de urls"
|
||||||
|
|
||||||
|
#: footer.php:7 index.php:59
|
||||||
|
msgid "Shorten"
|
||||||
|
msgstr "Acortar"
|
||||||
|
|
||||||
|
#: footer.php:8
|
||||||
|
msgid ""
|
||||||
|
"This bookmarklet takes the page URL and title and opens a new tab, where you "
|
||||||
|
"can fill out a CAPTCHA. If you have selected text before using the "
|
||||||
|
"bookmarklet, that will be used as the keyword."
|
||||||
|
msgstr ""
|
||||||
|
"Este marcador toma la URL de la página y el título y abre una nueva pestaña, "
|
||||||
|
"donde puede llenar una CAPTCHA. Si ha seleccionado texto antes de utilizar "
|
||||||
|
"el marcador, se utilizará como palabra clave."
|
||||||
|
|
||||||
|
#: footer.php:9
|
||||||
|
msgid ""
|
||||||
|
"Support for bookmarklets on mobile varies. For example, they work on Chrome "
|
||||||
|
"for Android but you have to add and sync them from your desktop."
|
||||||
|
msgstr ""
|
||||||
|
"Soporte para marcadores en el móvil. Por ejemplo, trabajan en Chrome para "
|
||||||
|
"Android, pero tienes que añadirlos y sincronizarlos desde tu escritorio."
|
||||||
|
|
||||||
|
#: footer.php:13
|
||||||
|
msgid ""
|
||||||
|
"Powered by <a href=\"http://yourls.org/\">YOURLS</a>. Designed by <a href="
|
||||||
|
"\"http://tomslominski.net/\">Tom Slominski</a>."
|
||||||
|
msgstr ""
|
||||||
|
"Desarrollado por <a href=\"http://yourls.org/\"> YOURLS </a>. Diseñado por "
|
||||||
|
"<a href=\"http://tomslominski.net/\"> Tom Slominski </a>."
|
||||||
|
|
||||||
|
#: footer.php:15
|
||||||
|
msgid "This site uses cookies for Google reCAPTCHA"
|
||||||
|
msgstr "Este sitio usa cookies para Google reCAPTCHA"
|
||||||
|
|
||||||
|
#: index.php:10
|
||||||
|
msgid "Enter a new URL to shorten"
|
||||||
|
msgstr "Introduzca una url para acortarla"
|
||||||
|
|
||||||
|
#: index.php:13
|
||||||
|
msgid "Long URL"
|
||||||
|
msgstr "URL Larga"
|
||||||
|
|
||||||
|
#: index.php:14
|
||||||
|
msgid "Paste the long URL here. This is required."
|
||||||
|
msgstr "Pegue la URL larga aquí (Este campo es obligatorio)"
|
||||||
|
|
||||||
|
#: index.php:20
|
||||||
|
msgid "Custom keyword"
|
||||||
|
msgstr "Personalizar palabra clave"
|
||||||
|
|
||||||
|
#: index.php:21
|
||||||
|
msgid "A keyword replaces the default short string."
|
||||||
|
msgstr "Una palabra clave, reemplaza la cadena de caracteres por defecto"
|
||||||
|
|
||||||
|
#: index.php:26
|
||||||
|
msgid "Custom title"
|
||||||
|
msgstr "Título personalizadon"
|
||||||
|
|
||||||
|
#: index.php:27
|
||||||
|
msgid ""
|
||||||
|
"Optional title used when sharing a link from YOURLS using social sharers."
|
||||||
|
msgstr ""
|
||||||
|
"Título opcional usado cuando compartes en una red social un enlace usando "
|
||||||
|
"los botones de abajo"
|
||||||
|
|
||||||
|
#: index.php:44
|
||||||
|
msgid "Verification"
|
||||||
|
msgstr "Verificación"
|
||||||
|
|
||||||
|
#: index.php:45
|
||||||
|
msgid "reCAPTCHA verification used to ensure you are not a bot."
|
||||||
|
msgstr "Verificación reCAPTCHA para asegurar que no eres un robot"
|
||||||
|
|
||||||
|
#: public/config-sample.php:26
|
||||||
|
msgid "Get ∞²!"
|
||||||
|
msgstr "¡Obtener ∞²!"
|
||||||
|
|
||||||
|
#: public/config-sample.php:30
|
||||||
|
msgid "Admin area"
|
||||||
|
msgstr "Área de administración"
|
||||||
|
|
||||||
|
#: result.php:12
|
||||||
|
msgid "← Go home and try again"
|
||||||
|
msgstr "← Ir a inicio e intentarlo de nuevo"
|
||||||
|
|
||||||
|
#: result.php:22
|
||||||
|
msgid "You haven't entered a URL to shorten."
|
||||||
|
msgstr ""
|
||||||
|
"No has introducido una URL para acortar, por favor vuelva atrás e inténtelo "
|
||||||
|
"de nuevo"
|
||||||
|
|
||||||
|
#: result.php:27
|
||||||
|
#, php-format
|
||||||
|
msgid "The keyword %1$s is reserved."
|
||||||
|
msgstr "La palabra clave %1$s está reservada"
|
||||||
|
|
||||||
|
#: result.php:32
|
||||||
|
#, php-format
|
||||||
|
msgid "The keyword %1$s is taken."
|
||||||
|
msgstr "La palabra clave %1$s ya está en uso"
|
||||||
|
|
||||||
|
#: result.php:50
|
||||||
|
msgid "Are you a bot? Google certainly thinks you are."
|
||||||
|
msgstr ""
|
||||||
|
"¿Eres un robot?. Google piensa que si... Por favor, vuelva atrás e inténtelo "
|
||||||
|
"de nuevo"
|
||||||
|
|
||||||
|
#: result.php:58
|
||||||
|
msgid "Are you a bot? The verification was not completed successfully."
|
||||||
|
msgstr ""
|
||||||
|
"¿Eres un robot? La verificación no se ha completado correctamente. Por "
|
||||||
|
"favor, vuelva atrás e inténtelo de nuevo"
|
||||||
|
|
||||||
|
#: result.php:64
|
||||||
|
msgid "Are you a bot? No antispam protection was completed successfully."
|
||||||
|
msgstr ""
|
||||||
|
"¿Eres un robot?. La protección anti spam no se ha completado correctamente. "
|
||||||
|
"Por favor, vuelva atrás e inténtelo de nuevo"
|
||||||
|
|
||||||
|
#: result.php:84
|
||||||
|
msgid "The URL could not be shortened."
|
||||||
|
msgstr "La URL no se ha podido acortar"
|
||||||
|
|
||||||
|
#: result.php:101
|
||||||
|
msgid "Your short URL"
|
||||||
|
msgstr "Su URL acortada"
|
||||||
|
|
||||||
|
#: result.php:105
|
||||||
|
msgid "Original URL"
|
||||||
|
msgstr "URL Original"
|
||||||
|
|
||||||
|
#: result.php:108 result.php:124 result.php:139
|
||||||
|
msgid "Copy to clipboard"
|
||||||
|
msgstr "Copiar al portapapeles"
|
||||||
|
|
||||||
|
#: result.php:109 result.php:125 result.php:140
|
||||||
|
msgid "Copied to clipboard"
|
||||||
|
msgstr "Copiado al portapapeles"
|
||||||
|
|
||||||
|
#: result.php:111 result.php:127 result.php:142
|
||||||
|
msgid "Press ⌘+C to copy"
|
||||||
|
msgstr "Pulse ⌘+C para copiar"
|
||||||
|
|
||||||
|
#: result.php:112 result.php:128 result.php:143
|
||||||
|
msgid "Press Ctrl+C to copy"
|
||||||
|
msgstr "Haga clic en un enlace y presione CTRL +C para copiarlo."
|
||||||
|
|
||||||
|
#: result.php:113 result.php:129 result.php:144
|
||||||
|
msgid "Tap copy"
|
||||||
|
msgstr "Tocar para copiar"
|
||||||
|
|
||||||
|
#: result.php:114 result.php:130 result.php:145
|
||||||
|
msgid "Failed to copy"
|
||||||
|
msgstr "Falló al copiar"
|
||||||
|
|
||||||
|
#: result.php:121
|
||||||
|
msgid "Short URL"
|
||||||
|
msgstr "Su URL acortada"
|
||||||
|
|
||||||
|
#: result.php:136
|
||||||
|
msgid "Stats"
|
||||||
|
msgstr "Estadísticas"
|
||||||
|
|
||||||
|
#: result.php:153
|
||||||
|
msgid "Share"
|
||||||
|
msgstr "Compartir"
|
||||||
|
|
||||||
|
#: result.php:154
|
||||||
|
msgid "Share your short URL"
|
||||||
|
msgstr "Compartir su URL corta"
|
||||||
|
|
||||||
|
#: result.php:175
|
||||||
|
msgid "QR code"
|
||||||
|
msgstr "Código QR"
|
||||||
|
|
||||||
|
#: result.php:176
|
||||||
|
msgid "Share your link with external devices"
|
||||||
|
msgstr "Comparta su enlace con dispositivos externos"
|
||||||
Binary file not shown.
220
public/languages/isq_translation-ru_RU.po
Normal file
220
public/languages/isq_translation-ru_RU.po
Normal file
@@ -0,0 +1,220 @@
|
|||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: \n"
|
||||||
|
"POT-Creation-Date: 2016-11-27 12:21+0300\n"
|
||||||
|
"PO-Revision-Date: 2016-11-27 20:56+0300\n"
|
||||||
|
"Last-Translator: Pavel Mezhuev <pavel@onlyfriends.info>\n"
|
||||||
|
"Language-Team: \n"
|
||||||
|
"Language: ru_RU\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"X-Generator: Poedit 1.8.11\n"
|
||||||
|
"X-Poedit-Basepath: ../../..\n"
|
||||||
|
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||||
|
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||||
|
"X-Poedit-KeywordsList: yourls_e;yourls__\n"
|
||||||
|
"X-Poedit-SourceCharset: UTF-8\n"
|
||||||
|
"X-Poedit-SearchPath-0: trunk\n"
|
||||||
|
"X-Poedit-SearchPathExcluded-0: trunk/js\n"
|
||||||
|
"X-Poedit-SearchPathExcluded-1: trunk/admin\n"
|
||||||
|
"X-Poedit-SearchPathExcluded-2: trunk/includes\n"
|
||||||
|
"X-Poedit-SearchPathExcluded-3: trunk/yourls-*.php\n"
|
||||||
|
|
||||||
|
#: footer.php:3
|
||||||
|
msgid "The bookmarklet"
|
||||||
|
msgstr "Букмарклет"
|
||||||
|
|
||||||
|
#: footer.php:5
|
||||||
|
msgid "Save this as a bookmark."
|
||||||
|
msgstr "Сохраните это как закладку"
|
||||||
|
|
||||||
|
#: footer.php:6
|
||||||
|
msgid ""
|
||||||
|
"Add this to your bookmarks or drag it to your bookmarks bar to quickly "
|
||||||
|
"access shortening functions."
|
||||||
|
msgstr ""
|
||||||
|
"Перетащите это на панель закладок для быстрого доступа к функции сокращения "
|
||||||
|
"ссылок."
|
||||||
|
|
||||||
|
#: footer.php:7 index.php:59
|
||||||
|
msgid "Shorten"
|
||||||
|
msgstr "Сократить"
|
||||||
|
|
||||||
|
#: footer.php:8
|
||||||
|
msgid ""
|
||||||
|
"This bookmarklet takes the page URL and title and opens a new tab, where you "
|
||||||
|
"can fill out a CAPTCHA. If you have selected text before using the "
|
||||||
|
"bookmarklet, that will be used as the keyword."
|
||||||
|
msgstr ""
|
||||||
|
"Букмарклет позволяет быстро создать короткую ссылку, использую адрес и "
|
||||||
|
"заголовок текущей страницы. Если перед использованием букмарклета выделить "
|
||||||
|
"на странице текст, то он будет использован как ключевое слово."
|
||||||
|
|
||||||
|
#: footer.php:9
|
||||||
|
msgid ""
|
||||||
|
"Support for bookmarklets on mobile varies. For example, they work on Chrome "
|
||||||
|
"for Android but you have to add and sync them from your desktop."
|
||||||
|
msgstr ""
|
||||||
|
"Поддержка букмарклетов на мобильных устройствах не гарантируются. Например, "
|
||||||
|
"они работают в Chrome для Android, но сперва вы должны добавить их на "
|
||||||
|
"стационарном компьютере и провести синхронизацию."
|
||||||
|
|
||||||
|
#: footer.php:13
|
||||||
|
msgid ""
|
||||||
|
"Powered by <a href=\"http://yourls.org/\">YOURLS</a>. Designed by <a href="
|
||||||
|
"\"http://tomslominski.net/\">Tom Slominski</a>."
|
||||||
|
msgstr ""
|
||||||
|
"Работает на <a href=\"http://yourls.org/\">YOURLS</a>. Дизайн <a href="
|
||||||
|
"\"http://tomslominski.net/\">Tom Slominski</a>."
|
||||||
|
|
||||||
|
#: footer.php:15
|
||||||
|
msgid "This site uses cookies for Google reCAPTCHA"
|
||||||
|
msgstr "Этот сайт использует куки-файлы для Google reCAPTCHA"
|
||||||
|
|
||||||
|
#: index.php:10
|
||||||
|
msgid "Enter a new URL to shorten"
|
||||||
|
msgstr "Пожалуйста, введите URL"
|
||||||
|
|
||||||
|
#: index.php:13
|
||||||
|
msgid "Long URL"
|
||||||
|
msgstr "Исходная ссылка"
|
||||||
|
|
||||||
|
#: index.php:14
|
||||||
|
msgid "Paste the long URL here. This is required."
|
||||||
|
msgstr "Укажите ссылку, которую требуется сократить. Обязательно к заполнению."
|
||||||
|
|
||||||
|
#: index.php:20
|
||||||
|
msgid "Custom keyword"
|
||||||
|
msgstr "Ключевое слово"
|
||||||
|
|
||||||
|
#: index.php:21
|
||||||
|
msgid "A keyword replaces the default short string."
|
||||||
|
msgstr "Заменяет короткий адрес по умолчанию."
|
||||||
|
|
||||||
|
#: index.php:26
|
||||||
|
msgid "Custom title"
|
||||||
|
msgstr "Наименование"
|
||||||
|
|
||||||
|
#: index.php:27
|
||||||
|
msgid ""
|
||||||
|
"Optional title used when sharing a link from YOURLS using social sharers."
|
||||||
|
msgstr "При размещении ссылки в социальных сетях."
|
||||||
|
|
||||||
|
#: index.php:44
|
||||||
|
msgid "Verification"
|
||||||
|
msgstr "Проверка"
|
||||||
|
|
||||||
|
#: index.php:45
|
||||||
|
msgid "reCAPTCHA verification used to ensure you are not a bot."
|
||||||
|
msgstr "reCAPTCHA используется для защиты от спама."
|
||||||
|
|
||||||
|
#: public/config-sample.php:26
|
||||||
|
msgid "Get ∞²!"
|
||||||
|
msgstr "Получить ∞²!"
|
||||||
|
|
||||||
|
#: public/config-sample.php:30
|
||||||
|
msgid "Admin area"
|
||||||
|
msgstr "Администратор"
|
||||||
|
|
||||||
|
#: result.php:12
|
||||||
|
msgid "← Go home and try again"
|
||||||
|
msgstr "← Вернуться и попробовать снова"
|
||||||
|
|
||||||
|
#: result.php:22
|
||||||
|
msgid "You haven't entered a URL to shorten."
|
||||||
|
msgstr "Вы не указали ссылку, которую требуется сократить."
|
||||||
|
|
||||||
|
#: result.php:27
|
||||||
|
#, php-format
|
||||||
|
msgid "The keyword %1$s is reserved."
|
||||||
|
msgstr "Ключевое слово %1$s зарезервировано."
|
||||||
|
|
||||||
|
#: result.php:32
|
||||||
|
#, php-format
|
||||||
|
msgid "The keyword %1$s is taken."
|
||||||
|
msgstr "Ключевое слово %1$s уже используется."
|
||||||
|
|
||||||
|
#: result.php:50
|
||||||
|
msgid "Are you a bot? Google certainly thinks you are."
|
||||||
|
msgstr "Вы бот? Пожалуйста вернитесь и попробуйте снова."
|
||||||
|
|
||||||
|
#: result.php:58
|
||||||
|
msgid "Are you a bot? The verification was not completed successfully."
|
||||||
|
msgstr "Вы бот? Проверка не была успешно завершена."
|
||||||
|
|
||||||
|
#: result.php:64
|
||||||
|
msgid "Are you a bot? No antispam protection was completed successfully."
|
||||||
|
msgstr "Вы бот? Проверка не была успешно завершена."
|
||||||
|
|
||||||
|
#: result.php:84
|
||||||
|
msgid "The URL could not be shortened."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: result.php:101
|
||||||
|
msgid "Your short URL"
|
||||||
|
msgstr "Ваша короткая ссылка"
|
||||||
|
|
||||||
|
#: result.php:105
|
||||||
|
msgid "Original URL"
|
||||||
|
msgstr "Исходная ссылка"
|
||||||
|
|
||||||
|
#: result.php:108 result.php:124 result.php:139
|
||||||
|
msgid "Copy to clipboard"
|
||||||
|
msgstr "Скопировать в буфер обмена"
|
||||||
|
|
||||||
|
#: result.php:109 result.php:125 result.php:140
|
||||||
|
msgid "Copied to clipboard"
|
||||||
|
msgstr "Cкопировано в буфер обмена"
|
||||||
|
|
||||||
|
#: result.php:111 result.php:127 result.php:142
|
||||||
|
msgid "Press ⌘+C to copy"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: result.php:112 result.php:128 result.php:143
|
||||||
|
msgid "Press Ctrl+C to copy"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: result.php:113 result.php:129 result.php:144
|
||||||
|
msgid "Tap copy"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: result.php:114 result.php:130 result.php:145
|
||||||
|
msgid "Failed to copy"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: result.php:121
|
||||||
|
msgid "Short URL"
|
||||||
|
msgstr "Короткая ссылка"
|
||||||
|
|
||||||
|
#: result.php:136
|
||||||
|
msgid "Stats"
|
||||||
|
msgstr "Статистика"
|
||||||
|
|
||||||
|
#: result.php:153
|
||||||
|
msgid "Share"
|
||||||
|
msgstr "Поделиться"
|
||||||
|
|
||||||
|
#: result.php:154
|
||||||
|
msgid "Share your short URL"
|
||||||
|
msgstr "Поделиться короткой ссылкой в социальных сетях"
|
||||||
|
|
||||||
|
#: result.php:175
|
||||||
|
msgid "QR code"
|
||||||
|
msgstr "QR-код"
|
||||||
|
|
||||||
|
#: result.php:176
|
||||||
|
msgid "Share your link with external devices"
|
||||||
|
msgstr "Поделиться короткой ссылкой с другим устройством"
|
||||||
|
|
||||||
|
#~ msgid "Copied!"
|
||||||
|
#~ msgstr "Скопировано!"
|
||||||
|
|
||||||
|
#~ msgid "← Go back and try again"
|
||||||
|
#~ msgstr "← Вернуться и попробовать снова"
|
||||||
|
|
||||||
|
#~ msgid "The keyword %1$s is restricted."
|
||||||
|
#~ msgstr "Ключевое слово %1$s запрещено."
|
||||||
|
|
||||||
|
#~ msgid "Click on a link and press Ctrl+C to quickly copy it."
|
||||||
|
#~ msgstr "Для копирования щёлкните по ссылке и нажмите Ctrl+C."
|
||||||
@@ -1,22 +1,24 @@
|
|||||||
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Infinity Squared\n"
|
"Project-Id-Version: Infinity Squared\n"
|
||||||
"POT-Creation-Date: 2015-03-22 19:25-0000\n"
|
"POT-Creation-Date: 2016-11-04 12:50+0100\n"
|
||||||
"PO-Revision-Date: 2015-03-22 19:25-0000\n"
|
"PO-Revision-Date: 2015-03-22 19:25-0000\n"
|
||||||
"Last-Translator: Tom Slominski <me@tomslominski>\n"
|
"Last-Translator: Tom Slominski <me@tomslominski>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: Poedit 1.7.5\n"
|
"X-Generator: Poedit 1.8.11\n"
|
||||||
"X-Poedit-KeywordsList: yourls__;yourls_e;yourls_s;yourls_se;"
|
"X-Poedit-KeywordsList: yourls__;yourls_e;yourls_s;yourls_se;"
|
||||||
"yourls_esc_attr__;yourls_esc_html__;yourls_x;yourls_ex;yourls_esc_attr_x;"
|
"yourls_esc_attr__;yourls_esc_html__;yourls_x;yourls_ex;yourls_esc_attr_x;"
|
||||||
"yourls_esc_html_x;yourls_n:1,2;yourls_nx:1,2;yourls_n_noop:1,2;"
|
"yourls_esc_html_x;yourls_n:1,2;yourls_nx:1,2;yourls_n_noop:1,2;"
|
||||||
"yourls_nx_noop:1,2\n"
|
"yourls_nx_noop:1,2\n"
|
||||||
"X-Poedit-Basepath: .\n"
|
"X-Poedit-Basepath: ../..\n"
|
||||||
"X-Poedit-SourceCharset: UTF-8\n"
|
"X-Poedit-SourceCharset: UTF-8\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Poedit-SearchPath-0: .\n"
|
"X-Poedit-SearchPath-0: public/languages\n"
|
||||||
|
"X-Poedit-SearchPath-1: .\n"
|
||||||
|
|
||||||
#: footer.php:3
|
#: footer.php:3
|
||||||
msgid "The bookmarklet"
|
msgid "The bookmarklet"
|
||||||
@@ -32,7 +34,7 @@ msgid ""
|
|||||||
"access shortening functions."
|
"access shortening functions."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: footer.php:7 index.php:61
|
#: footer.php:7 index.php:59
|
||||||
msgid "Shorten"
|
msgid "Shorten"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -55,8 +57,8 @@ msgid ""
|
|||||||
"\"http://tomslominski.net/\">Tom Slominski</a>."
|
"\"http://tomslominski.net/\">Tom Slominski</a>."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: footer.php:31
|
#: footer.php:15
|
||||||
msgid "Copied!"
|
msgid "This site uses cookies for Google reCAPTCHA"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: index.php:10
|
#: index.php:10
|
||||||
@@ -71,88 +73,125 @@ msgstr ""
|
|||||||
msgid "Paste the long URL here. This is required."
|
msgid "Paste the long URL here. This is required."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: index.php:21
|
#: index.php:20
|
||||||
msgid "Custom keyword"
|
msgid "Custom keyword"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: index.php:22
|
#: index.php:21
|
||||||
msgid "A keyword replaces the default short string."
|
msgid "A keyword replaces the default short string."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: index.php:27
|
#: index.php:26
|
||||||
msgid "Custom title"
|
msgid "Custom title"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: index.php:28
|
#: index.php:27
|
||||||
msgid ""
|
msgid ""
|
||||||
"Optional title used when sharing a link from YOURLS using social sharers."
|
"Optional title used when sharing a link from YOURLS using social sharers."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: index.php:46
|
#: index.php:44
|
||||||
msgid "Verification"
|
msgid "Verification"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: index.php:47
|
#: index.php:45
|
||||||
msgid "reCAPTCHA verification used to ensure you are not a bot."
|
msgid "reCAPTCHA verification used to ensure you are not a bot."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: result.php:17
|
#: public/config-sample.php:26
|
||||||
msgid "You haven't entered a URL to shorten. Please go back and try again."
|
msgid "Get ∞²!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: result.php:35
|
#: public/config-sample.php:30
|
||||||
msgid ""
|
msgid "Admin area"
|
||||||
"Are you a bot? Google certainly thinks you are. Please go back and try again."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: result.php:43
|
#: result.php:12
|
||||||
msgid ""
|
msgid "← Go home and try again"
|
||||||
"Are you a bot? The verification was not completed successfully. Please go "
|
|
||||||
"back and try again."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: result.php:49
|
#: result.php:22
|
||||||
msgid ""
|
msgid "You haven't entered a URL to shorten."
|
||||||
"Are you a bot? No antispam protection was completed successfully. Please go "
|
|
||||||
"back and try again."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: result.php:92
|
#: result.php:27
|
||||||
|
#, php-format
|
||||||
|
msgid "The keyword %1$s is reserved."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: result.php:32
|
||||||
|
#, php-format
|
||||||
|
msgid "The keyword %1$s is taken."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: result.php:50
|
||||||
|
msgid "Are you a bot? Google certainly thinks you are."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: result.php:58
|
||||||
|
msgid "Are you a bot? The verification was not completed successfully."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: result.php:64
|
||||||
|
msgid "Are you a bot? No antispam protection was completed successfully."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: result.php:84
|
||||||
|
msgid "The URL could not be shortened."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: result.php:101
|
||||||
msgid "Your short URL"
|
msgid "Your short URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: result.php:96
|
#: result.php:105
|
||||||
msgid "Original URL"
|
msgid "Original URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: result.php:98 result.php:106 result.php:112
|
#: result.php:108 result.php:124 result.php:139
|
||||||
msgid "Copy to clipboard"
|
msgid "Copy to clipboard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: result.php:104
|
#: result.php:109 result.php:125 result.php:140
|
||||||
msgid "Short URL"
|
msgid "Copied to clipboard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: result.php:110
|
#: result.php:111 result.php:127 result.php:142
|
||||||
msgid "Stats"
|
msgid "Press ⌘+C to copy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: result.php:117
|
#: result.php:112 result.php:128 result.php:143
|
||||||
msgid "Click on a link and press Ctrl+C to quickly copy it."
|
msgid "Press Ctrl+C to copy"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: result.php:113 result.php:129 result.php:144
|
||||||
|
msgid "Tap copy"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: result.php:114 result.php:130 result.php:145
|
||||||
|
msgid "Failed to copy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: result.php:121
|
#: result.php:121
|
||||||
|
msgid "Short URL"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: result.php:136
|
||||||
|
msgid "Stats"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: result.php:153
|
||||||
msgid "Share"
|
msgid "Share"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: result.php:122
|
#: result.php:154
|
||||||
msgid "Share your short URL"
|
msgid "Share your short URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: result.php:140
|
#: result.php:175
|
||||||
msgid "QR code"
|
msgid "QR code"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: result.php:140
|
#: result.php:176
|
||||||
msgid "Share your link with external devices"
|
msgid "Share your link with external devices"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
BIN
public/languages/isq_translation-zh_CN.mo
Normal file
BIN
public/languages/isq_translation-zh_CN.mo
Normal file
Binary file not shown.
204
public/languages/isq_translation-zh_CN.po
Normal file
204
public/languages/isq_translation-zh_CN.po
Normal file
@@ -0,0 +1,204 @@
|
|||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Infinity Squared\n"
|
||||||
|
"POT-Creation-Date: 2019-05-26 04:25+0800\n"
|
||||||
|
"PO-Revision-Date: 2019-05-26 04:55+0800\n"
|
||||||
|
"Language-Team: \n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"X-Generator: Poedit 2.2.3\n"
|
||||||
|
"X-Poedit-KeywordsList: yourls__;yourls_e;yourls_s;yourls_se;"
|
||||||
|
"yourls_esc_attr__;yourls_esc_html__;yourls_x;yourls_ex;yourls_esc_attr_x;"
|
||||||
|
"yourls_esc_html_x;yourls_n:1,2;yourls_nx:1,2;yourls_n_noop:1,2;"
|
||||||
|
"yourls_nx_noop:1,2\n"
|
||||||
|
"X-Poedit-Basepath: ../..\n"
|
||||||
|
"X-Poedit-SourceCharset: UTF-8\n"
|
||||||
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
|
"Last-Translator: wordlesswind <i@qingly.me>\n"
|
||||||
|
"Language: zh_CN\n"
|
||||||
|
"X-Poedit-SearchPath-0: public/languages\n"
|
||||||
|
"X-Poedit-SearchPath-1: .\n"
|
||||||
|
|
||||||
|
#: footer.php:3
|
||||||
|
msgid "The bookmarklet"
|
||||||
|
msgstr "书签"
|
||||||
|
|
||||||
|
#: footer.php:5
|
||||||
|
msgid "Save this as a bookmark."
|
||||||
|
msgstr "将其另存为书签。"
|
||||||
|
|
||||||
|
#: footer.php:6
|
||||||
|
msgid ""
|
||||||
|
"Add this to your bookmarks or drag it to your bookmarks bar to quickly "
|
||||||
|
"access shortening functions."
|
||||||
|
msgstr "将其添加到书签或将其拖拽到书签栏中,以便快速访问缩短功能。"
|
||||||
|
|
||||||
|
#: footer.php:7 index.php:59
|
||||||
|
msgid "Shorten"
|
||||||
|
msgstr "缩短"
|
||||||
|
|
||||||
|
#: footer.php:8
|
||||||
|
msgid ""
|
||||||
|
"This bookmarklet takes the page URL and title and opens a new tab, where you "
|
||||||
|
"can fill out a CAPTCHA. If you have selected text before using the "
|
||||||
|
"bookmarklet, that will be used as the keyword."
|
||||||
|
msgstr ""
|
||||||
|
"此书签会获取页面的URL和标题,并打开一个新标签页,您可以在其中填写验证码。如果"
|
||||||
|
"您在使用书签之前选择了文本,那么它将成为关键字。"
|
||||||
|
|
||||||
|
#: footer.php:9
|
||||||
|
msgid ""
|
||||||
|
"Support for bookmarklets on mobile varies. For example, they work on Chrome "
|
||||||
|
"for Android but you have to add and sync them from your desktop."
|
||||||
|
msgstr ""
|
||||||
|
"对移动设备上的书签的支持各不相同。例如,它们适用于 Android 的 Chrome,但您必"
|
||||||
|
"须从桌面添加并同步它们。"
|
||||||
|
|
||||||
|
#: footer.php:13
|
||||||
|
msgid ""
|
||||||
|
"Powered by <a href=\"http://yourls.org/\">YOURLS</a>. Designed by <a href="
|
||||||
|
"\"http://tomslominski.net/\">Tom Slominski</a>."
|
||||||
|
msgstr ""
|
||||||
|
"由 <a href=\"http://yourls.org/\">YOURLS</a> 驱动。由 <a href=\"http://"
|
||||||
|
"tomslominski.net/\">Tom Slominski </a>设计。"
|
||||||
|
|
||||||
|
#: footer.php:15
|
||||||
|
msgid "This site uses cookies for Google reCAPTCHA"
|
||||||
|
msgstr "本网站需要 cookies 来使用 Google reCAPTCHA"
|
||||||
|
|
||||||
|
#: index.php:10
|
||||||
|
msgid "Enter a new URL to shorten"
|
||||||
|
msgstr "输入要缩短的新网址"
|
||||||
|
|
||||||
|
#: index.php:13
|
||||||
|
msgid "Long URL"
|
||||||
|
msgstr "长网址"
|
||||||
|
|
||||||
|
#: index.php:14
|
||||||
|
msgid "Paste the long URL here. This is required."
|
||||||
|
msgstr "必须在此粘贴长网址。"
|
||||||
|
|
||||||
|
#: index.php:20
|
||||||
|
msgid "Custom keyword"
|
||||||
|
msgstr "自定义关键字"
|
||||||
|
|
||||||
|
#: index.php:21
|
||||||
|
msgid "A keyword replaces the default short string."
|
||||||
|
msgstr "关键字将替换默认的短字符串。"
|
||||||
|
|
||||||
|
#: index.php:26
|
||||||
|
msgid "Custom title"
|
||||||
|
msgstr "自定义标题"
|
||||||
|
|
||||||
|
#: index.php:27
|
||||||
|
msgid ""
|
||||||
|
"Optional title used when sharing a link from YOURLS using social sharers."
|
||||||
|
msgstr "可选标题,在 YOURLS 使用 social sharers 分享链接时采用"
|
||||||
|
|
||||||
|
#: index.php:44
|
||||||
|
msgid "Verification"
|
||||||
|
msgstr "验证"
|
||||||
|
|
||||||
|
#: index.php:45
|
||||||
|
msgid "reCAPTCHA verification used to ensure you are not a bot."
|
||||||
|
msgstr "reCAPTCHA 验证用于确保您不是机器人。"
|
||||||
|
|
||||||
|
#: public/config-sample.php:26
|
||||||
|
msgid "Get ∞²!"
|
||||||
|
msgstr "获取 ∞²!"
|
||||||
|
|
||||||
|
#: public/config-sample.php:30
|
||||||
|
msgid "Admin area"
|
||||||
|
msgstr "管理界面"
|
||||||
|
|
||||||
|
#: result.php:12
|
||||||
|
msgid "← Go home and try again"
|
||||||
|
msgstr "返回首页并再试一次"
|
||||||
|
|
||||||
|
#: result.php:22
|
||||||
|
msgid "You haven't entered a URL to shorten."
|
||||||
|
msgstr "您尚未输入要缩短的网址。"
|
||||||
|
|
||||||
|
#: result.php:27
|
||||||
|
#, php-format
|
||||||
|
msgid "The keyword %1$s is reserved."
|
||||||
|
msgstr "关键字 %1$s 已被保留。"
|
||||||
|
|
||||||
|
#: result.php:32
|
||||||
|
#, php-format
|
||||||
|
msgid "The keyword %1$s is taken."
|
||||||
|
msgstr "关键字 %1$s 已被使用。"
|
||||||
|
|
||||||
|
#: result.php:50
|
||||||
|
msgid "Are you a bot? Google certainly thinks you are."
|
||||||
|
msgstr "您是机器人吗?Google 毫无疑问地认为您是。"
|
||||||
|
|
||||||
|
#: result.php:58
|
||||||
|
msgid "Are you a bot? The verification was not completed successfully."
|
||||||
|
msgstr "您是机器人吗? 验证没有顺利完成。"
|
||||||
|
|
||||||
|
#: result.php:64
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Are you a bot? No antispam protection was completed successfully."
|
||||||
|
msgstr "您是机器人吗?防垃圾邮件保护已成功完成。"
|
||||||
|
|
||||||
|
#: result.php:84
|
||||||
|
msgid "The URL could not be shortened."
|
||||||
|
msgstr "该网址无法被缩短。"
|
||||||
|
|
||||||
|
#: result.php:101
|
||||||
|
msgid "Your short URL"
|
||||||
|
msgstr "您的短网址"
|
||||||
|
|
||||||
|
#: result.php:105
|
||||||
|
msgid "Original URL"
|
||||||
|
msgstr "原始网址"
|
||||||
|
|
||||||
|
#: result.php:108 result.php:124 result.php:139
|
||||||
|
msgid "Copy to clipboard"
|
||||||
|
msgstr "复制到剪贴板"
|
||||||
|
|
||||||
|
#: result.php:109 result.php:125 result.php:140
|
||||||
|
msgid "Copied to clipboard"
|
||||||
|
msgstr "已复制到剪贴板"
|
||||||
|
|
||||||
|
#: result.php:111 result.php:127 result.php:142
|
||||||
|
msgid "Press ⌘+C to copy"
|
||||||
|
msgstr "按 ⌘+ C 进行复制"
|
||||||
|
|
||||||
|
#: result.php:112 result.php:128 result.php:143
|
||||||
|
msgid "Press Ctrl+C to copy"
|
||||||
|
msgstr "按 Ctrl + C 进行复制"
|
||||||
|
|
||||||
|
#: result.php:113 result.php:129 result.php:144
|
||||||
|
msgid "Tap copy"
|
||||||
|
msgstr "点击复制"
|
||||||
|
|
||||||
|
#: result.php:114 result.php:130 result.php:145
|
||||||
|
msgid "Failed to copy"
|
||||||
|
msgstr "无法复制"
|
||||||
|
|
||||||
|
#: result.php:121
|
||||||
|
msgid "Short URL"
|
||||||
|
msgstr "短网址"
|
||||||
|
|
||||||
|
#: result.php:136
|
||||||
|
msgid "Stats"
|
||||||
|
msgstr "统计"
|
||||||
|
|
||||||
|
#: result.php:153
|
||||||
|
msgid "Share"
|
||||||
|
msgstr "分享"
|
||||||
|
|
||||||
|
#: result.php:154
|
||||||
|
msgid "Share your short URL"
|
||||||
|
msgstr "分享您的短网址"
|
||||||
|
|
||||||
|
#: result.php:175
|
||||||
|
msgid "QR code"
|
||||||
|
msgstr "二维码"
|
||||||
|
|
||||||
|
#: result.php:176
|
||||||
|
msgid "Share your link with external devices"
|
||||||
|
msgstr "与外部设备分享您的链接"
|
||||||
114
public/style.css
114
public/style.css
@@ -32,23 +32,6 @@ body, input {
|
|||||||
color: #FFF;
|
color: #FFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
.desktop-only {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (min-width: 1024px) {
|
|
||||||
.desktop-only {
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.load * {
|
|
||||||
-webkit-transition: none !important;
|
|
||||||
-moz-transition: none !important;
|
|
||||||
-ms-transition: none !important;
|
|
||||||
-o-transition: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Structure and global design */
|
/* Structure and global design */
|
||||||
a, a:visited {
|
a, a:visited {
|
||||||
color: #013F6D;
|
color: #013F6D;
|
||||||
@@ -200,6 +183,7 @@ input:not([type=submit]):not([type=file]) {
|
|||||||
transition: box-shadow 0.5s, border 0.5s;
|
transition: box-shadow 0.5s, border 0.5s;
|
||||||
-webkit-appearance: none;
|
-webkit-appearance: none;
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
|
height: 45px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.g-recaptcha {
|
.g-recaptcha {
|
||||||
@@ -232,7 +216,7 @@ input[type=submit] {
|
|||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.button:hover, .zeroclipboard-is-hover {
|
.button:hover {
|
||||||
background: #E2E2E2;
|
background: #E2E2E2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -253,12 +237,62 @@ input[type=submit] {
|
|||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.copy-button {
|
.input-with-copy {
|
||||||
margin-top: 2px;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
.copy-button:focus {
|
.input-with-copy input:not([type=submit]):not([type=file]) {
|
||||||
outline: none;
|
width: calc( 100% - 45px );
|
||||||
|
}
|
||||||
|
|
||||||
|
.input-with-copy .copy-button {
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 5px;
|
||||||
|
height: 45px;
|
||||||
|
width: 45px;
|
||||||
|
border-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.copy-message {
|
||||||
|
position: absolute;
|
||||||
|
top: 6px;
|
||||||
|
left: 1px;
|
||||||
|
height: 43px;
|
||||||
|
line-height: 43px;
|
||||||
|
width: calc( 100% - 47px );
|
||||||
|
text-align: center;
|
||||||
|
background: rgba(0, 0, 0, 0.7);
|
||||||
|
transition: opacity 0.3s, visibility 0.3s;
|
||||||
|
color: white;
|
||||||
|
opacity: 0;
|
||||||
|
visibility: hidden;
|
||||||
|
-webkit-transform: translate3d(0, 0, 0); // WebKit animation fix
|
||||||
|
}
|
||||||
|
|
||||||
|
.copy-message.visible {
|
||||||
|
opacity: 1;
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
.copy-message .os {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.copy-message.error.macos .macos {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.copy-message.error.pc .pc {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.copy-message.error.mobile .mobile {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.copy-message.error.other .other {
|
||||||
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.social-button {
|
.social-button {
|
||||||
@@ -267,6 +301,7 @@ input[type=submit] {
|
|||||||
font-size: 0;
|
font-size: 0;
|
||||||
margin-right: 2px;
|
margin-right: 2px;
|
||||||
transition: opacity 0.5s;
|
transition: opacity 0.5s;
|
||||||
|
-webkit-transform: translate3d(0, 0, 0); // WebKit animation fix
|
||||||
}
|
}
|
||||||
|
|
||||||
.social-button:hover {
|
.social-button:hover {
|
||||||
@@ -304,6 +339,10 @@ input[type=submit] {
|
|||||||
background-color: #DD4B39;
|
background-color: #DD4B39;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.social-button.vk {
|
||||||
|
background-color: #4D7198;
|
||||||
|
}
|
||||||
|
|
||||||
svg#url-qr-code {
|
svg#url-qr-code {
|
||||||
width: 50%;
|
width: 50%;
|
||||||
height: 50%;
|
height: 50%;
|
||||||
@@ -363,33 +402,16 @@ a.icon-github:hover {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Mobile */
|
/* Mobile */
|
||||||
/*@media screen and (max-width: 720px) {
|
@media screen and (max-width: 720px) {
|
||||||
body {
|
.halves {
|
||||||
background:white;
|
display: block;
|
||||||
margin:0;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
#container {
|
.half-width {
|
||||||
min-width:0;
|
width: 100%;
|
||||||
width:100%;
|
}
|
||||||
margin:0;
|
|
||||||
padding:0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
header {
|
|
||||||
width:100%;
|
|
||||||
padding:0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.menu li {
|
|
||||||
margin-top:0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.desktop-only, .zclip {
|
|
||||||
display:none;
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
/* Error page */
|
/* Error page */
|
||||||
#wrap > h1 > a {
|
#wrap > h1 > a {
|
||||||
display: none;
|
display: none;
|
||||||
|
|||||||
182
result.php
182
result.php
@@ -1,73 +1,62 @@
|
|||||||
<?php
|
<?php
|
||||||
$dependencies = array();
|
|
||||||
|
|
||||||
include('header.php');
|
include('header.php');
|
||||||
|
|
||||||
if ( ISQ::$general['clipboard'] ) {
|
|
||||||
$dependencies[] = 'ZeroClipboard';
|
|
||||||
};
|
|
||||||
|
|
||||||
function display_error( $message, $action ) {
|
|
||||||
echo '<div class="content error">';
|
|
||||||
echo '<p class="message">' . $message . '</p>';
|
|
||||||
|
|
||||||
if( !empty( $action ) ) {
|
|
||||||
echo $action;
|
|
||||||
} else {
|
|
||||||
echo '<p class="action"><a href="javascript:history.go(-1)" class="button">' . yourls__( '← Go back and try again', 'isq_translation' ) . '</a></p>';
|
|
||||||
}
|
|
||||||
echo '</div>';
|
|
||||||
|
|
||||||
include('footer.php');
|
|
||||||
die();
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( empty( $_REQUEST['url'] ) ) {
|
if ( empty( $_REQUEST['url'] ) ) {
|
||||||
display_error( yourls__( 'You haven\'t entered a URL to shorten.', 'isq_translation' ) );
|
display_error( yourls__( 'You haven\'t entered a URL to shorten.', 'isq_translation' ) );
|
||||||
};
|
};
|
||||||
|
|
||||||
if ( !yourls_keyword_is_reserved( $_REQUEST['keyword'] ) ) {
|
// Check if the keyword is reserved
|
||||||
|
if ( !empty( $_REQUEST['keyword'] ) && yourls_keyword_is_reserved( $_REQUEST['keyword'] ) ) {
|
||||||
display_error( sprintf( yourls__( 'The keyword %1$s is reserved.'), '<span class="key">' . $_REQUEST['keyword'] . '</span>' ) );
|
display_error( sprintf( yourls__( 'The keyword %1$s is reserved.'), '<span class="key">' . $_REQUEST['keyword'] . '</span>' ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( function_exists( 'advanced_reserved_urls' ) ) {
|
// Check if the keyword is taken
|
||||||
if ( advanced_reserved_urls( $_REQUEST['keyword'] ) ) {
|
if ( !empty( $_REQUEST['keyword'] ) && yourls_keyword_is_taken( $_REQUEST['keyword'] ) ) {
|
||||||
display_error( sprintf( yourls__( 'The keyword %1$s is restricted.'), '<span class="key">' . $_REQUEST['keyword'] . '</span>' ) );
|
display_error( sprintf( yourls__( 'The keyword %1$s is taken.'), '<span class="key">' . $_REQUEST['keyword'] . '</span>' ) );
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Check what CAPTCHA method was used
|
// Check what CAPTCHA method was used
|
||||||
$antispam_method = $_REQUEST['antispam_method'];
|
$antispam_method = $_REQUEST['antispam_method'];
|
||||||
|
|
||||||
if ( $antispam_method == 'user_login' ) {
|
switch( is_get_antispam_method() ) {
|
||||||
|
case 'login':
|
||||||
|
if( !yourls_is_valid_user() ) {
|
||||||
|
display_error( yourls__( 'You are not logged in - please go back and try again.', 'isq_translation' ) );
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
// User is logged into YOURLS
|
case 'recaptcha_v3':
|
||||||
|
$recaptcha_data = get_remote_file( 'https://www.google.com/recaptcha/api/siteverify?secret=' . ISQ::$recaptcha_v3['secret'] . '&response=' . $_POST['recaptcha_token'] );
|
||||||
|
$recaptcha = json_decode( $recaptcha_data );
|
||||||
|
|
||||||
} else if ( $antispam_method == 'recaptcha' ) {
|
if( $recaptcha->success != true || $recaptcha->action != 'homepage' || $recaptcha->score < ISQ::$recaptcha_v3['threshold'] ) {
|
||||||
|
display_error( yourls__( 'Are you a bot? Google certainly thinks you are.', 'isq_translation' ) );
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
// Google reCAPTCHA is enabled
|
case 'recaptcha':
|
||||||
$recaptcha_data = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=' . ISQ::$recaptcha['secret'] . '&response=' . $_REQUEST['g-recaptcha-response']);
|
// Google reCAPTCHA is enabled
|
||||||
$recaptcha_json = json_decode($recaptcha_data, TRUE);
|
$recaptcha_data = get_remote_file( 'https://www.google.com/recaptcha/api/siteverify?secret=' . ISQ::$recaptcha['secret'] . '&response=' . $_POST['g-recaptcha-response'] );
|
||||||
|
$recaptcha_json = json_decode( $recaptcha_data, true );
|
||||||
|
|
||||||
// What happens when the reCAPTCHA was completed incorrectly
|
// What happens when the reCAPTCHA was completed incorrectly
|
||||||
if ( $recaptcha_json['success'] != 'true' ) {
|
if ( $recaptcha_json['success'] != 'true' ) {
|
||||||
display_error( yourls__( 'Are you a bot? Google certainly thinks you are.', 'isq_translation' ) );
|
display_error( yourls__( 'Are you a bot? Google certainly thinks you are.', 'isq_translation' ) );
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
} else if ( $antispam_method == 'basic' ) {
|
case 'basic':
|
||||||
|
// Basic antispam protection fallback
|
||||||
// Basic antispam protection fallback
|
// What happens when it was not completed correctly
|
||||||
// What happens when it was not completed correctly
|
if( !empty( $_POST['basic_antispam'] ) ) {
|
||||||
if ( $_REQUEST['basic_antispam'] != "" ) {
|
display_error( yourls__( 'Are you a bot? The anti-spam check was not completed successfully.', 'isq_translation' ) );
|
||||||
display_error( yourls__( 'Are you a bot? The verification was not completed successfully.', 'isq_translation' ) );
|
}
|
||||||
}
|
break;
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
// No antispam protection was detected
|
|
||||||
display_error( yourls__( 'Are you a bot? No antispam protection was completed successfully.', 'isq_translation' ) );
|
|
||||||
|
|
||||||
|
default:
|
||||||
|
// No anti-spam check was completed at all
|
||||||
|
display_error( yourls__( 'Are you a bot? No anti-spam check was completed successfully.', 'isq_translation' ) );
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get parameters -- they will all be sanitized in yourls_add_new_link()
|
// Get parameters -- they will all be sanitized in yourls_add_new_link()
|
||||||
@@ -84,27 +73,21 @@ $message = isset( $return['message'] ) ? $return['message'] : '';
|
|||||||
$title = isset( $return['title'] ) ? $return['title'] : '';
|
$title = isset( $return['title'] ) ? $return['title'] : '';
|
||||||
$status = isset( $return['status'] ) ? $return['status'] : '';
|
$status = isset( $return['status'] ) ? $return['status'] : '';
|
||||||
|
|
||||||
|
// Check for all other errors
|
||||||
|
if( empty( $shorturl ) ) {
|
||||||
|
display_error( yourls__( 'The URL could not be shortened.', 'isq_translation' ) );
|
||||||
|
}
|
||||||
|
|
||||||
// URL encoded links used in the social sharing buttons
|
// URL encoded links used in the social sharing buttons
|
||||||
$encoded_shorturl = urlencode($shorturl);
|
$encoded_shorturl = urlencode($shorturl);
|
||||||
$encoded_title = urlencode($title);
|
$encoded_title = urlencode($title);
|
||||||
|
|
||||||
// QR code shenanigans
|
// Add dependencies
|
||||||
if ( ISQ::$general['qr'] ) {
|
$dependencies[] = 'clipboard.js';
|
||||||
|
|
||||||
// PHP QR Code is LGPL licensed
|
|
||||||
include('public/phpqrcode/qrlib.php');
|
|
||||||
|
|
||||||
$qrContainerId = 'url-qr-code';
|
|
||||||
$saveToFile = false;
|
|
||||||
$imageWidth = 600; // in pixels
|
|
||||||
|
|
||||||
$qrCode = QRcode::svg($url, $qrContainerId, $saveToFile, QR_ECLEVEL_L, $imageWidth);
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<div class="content">
|
<div class="content result">
|
||||||
<!-- Error reporting -->
|
<!-- Error reporting -->
|
||||||
<?php isset( $error ) ? $error : ''; ?>
|
<?php isset( $error ) ? $error : ''; ?>
|
||||||
|
|
||||||
@@ -114,27 +97,50 @@ if ( ISQ::$general['qr'] ) {
|
|||||||
<div class="output">
|
<div class="output">
|
||||||
<div class="form-item full-width">
|
<div class="form-item full-width">
|
||||||
<label for="longurl" class="primary"><?php yourls_e( 'Original URL', 'isq_translation'); ?></label>
|
<label for="longurl" class="primary"><?php yourls_e( 'Original URL', 'isq_translation'); ?></label>
|
||||||
<input type="text" name="longurl" id="longurl" onclick="this.select();" onload="this.select();" value="<?php echo $url; ?>">
|
<div class="input-with-copy">
|
||||||
<?php if ( ISQ::$general['clipboard'] ) { echo '<button data-clipboard-target="longurl" class="desktop-only copy-button button">' . yourls__( 'Copy to clipboard', 'isq_translation' ) . '</button>'; } ?>
|
<input type="text" name="longurl" id="longurl" onclick="this.select();" onload="this.select();" value="<?php echo $url; ?>">
|
||||||
|
<button data-clipboard-target="#longurl" class="copy-button button" title="<?php yourls_e( 'Copy to clipboard', 'isq_translation' ); ?>"><img src="public/images/clippy.svg"></button>
|
||||||
|
<div class="copy-message success" id="copy-success"><?php yourls_e( 'Copied to clipboard', 'isq_translation' ); ?></div>
|
||||||
|
<div class="copy-message error" id="copy-error">
|
||||||
|
<span class="os macos"><?php yourls_e( 'Press ⌘+C to copy', 'isq_translation' ); ?></span>
|
||||||
|
<span class="os pc"><?php yourls_e( 'Press Ctrl+C to copy', 'isq_translation' ); ?></span>
|
||||||
|
<span class="os mobile"><?php yourls_e( 'Tap copy', 'isq_translation' ); ?></span>
|
||||||
|
<span class="os other"><?php yourls_e( 'Failed to copy', 'isq_translation' ); ?></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="halves">
|
<div class="halves">
|
||||||
|
<div class="form-item half-width left">
|
||||||
|
<label for="shorturl" class="primary"><?php yourls_e( 'Short URL', 'isq_translation'); ?></label>
|
||||||
|
<div class="input-with-copy">
|
||||||
|
<input type="text" name="shorturl" id="shorturl" onclick="this.select();" value="<?php echo $shorturl; ?>">
|
||||||
|
<button data-clipboard-target="#shorturl" class="copy-button button" title="<?php yourls_e( 'Copy to clipboard', 'isq_translation' ); ?>"><img src="public/images/clippy.svg"></button>
|
||||||
|
<div class="copy-message success" id="copy-success"><?php yourls_e( 'Copied to clipboard', 'isq_translation' ); ?></div>
|
||||||
|
<div class="copy-message error" id="copy-error">
|
||||||
|
<span class="os macos"><?php yourls_e( 'Press ⌘+C to copy', 'isq_translation' ); ?></span>
|
||||||
|
<span class="os pc"><?php yourls_e( 'Press Ctrl+C to copy', 'isq_translation' ); ?></span>
|
||||||
|
<span class="os mobile"><?php yourls_e( 'Tap copy', 'isq_translation' ); ?></span>
|
||||||
|
<span class="os other"><?php yourls_e( 'Failed to copy', 'isq_translation' ); ?></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="form-item half-width left">
|
<div class="form-item half-width right">
|
||||||
<label for="shorturl" class="primary"><?php yourls_e( 'Short URL', 'isq_translation'); ?></label>
|
<label for="stats" class="primary"><?php /* translators: This is short for statistics */ yourls_e( 'Stats', 'isq_translation'); ?></label>
|
||||||
<input type="text" name="shorturl" id="shorturl" onclick="this.select();" value="<?php echo $shorturl; ?>">
|
<div class="input-with-copy">
|
||||||
<?php if ( ISQ::$general['clipboard'] ) { echo '<button data-clipboard-target="shorturl" class="desktop-only copy-button button">' . yourls__( 'Copy to clipboard', 'isq_translation' ) . '</button>'; } ?>
|
<input type="text" name="stats" id="stats" onclick="this.select();" value="<?php echo $shorturl . '+'; ?>" id="stats-copy">
|
||||||
|
<button data-clipboard-target="#stats" class="copy-button button" title="<?php yourls_e( 'Copy to clipboard', 'isq_translation' ); ?>"><img src="public/images/clippy.svg"></button>
|
||||||
|
<div class="copy-message success" id="copy-success"><?php yourls_e( 'Copied to clipboard', 'isq_translation' ); ?></div>
|
||||||
|
<div class="copy-message error" id="copy-error">
|
||||||
|
<span class="os macos"><?php yourls_e( 'Press ⌘+C to copy', 'isq_translation' ); ?></span>
|
||||||
|
<span class="os pc"><?php yourls_e( 'Press Ctrl+C to copy', 'isq_translation' ); ?></span>
|
||||||
|
<span class="os mobile"><?php yourls_e( 'Tap copy', 'isq_translation' ); ?></span>
|
||||||
|
<span class="os other"><?php yourls_e( 'Failed to copy', 'isq_translation' ); ?></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-item half-width right">
|
|
||||||
<label for="stats" class="primary"><?php /* translators: This is short for statistics */ yourls_e( 'Stats', 'isq_translation'); ?></label>
|
|
||||||
<input type="text" name="stats" id="stats" onclick="this.select();" value="<?php echo $shorturl . '+'; ?>" id="stats-copy">
|
|
||||||
<?php if ( ISQ::$general['clipboard'] ) { echo '<button data-clipboard-target="stats" class="desktop-only copy-button button">' . yourls__( 'Copy to clipboard', 'isq_translation' ) . '</button>'; } ?>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p class="desktop-only"><?php yourls_e( 'Click on a link and press Ctrl+C to quickly copy it.', 'isq_translation'); ?></p>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Social sharers -->
|
<!-- Social sharers -->
|
||||||
@@ -152,12 +158,24 @@ if ( ISQ::$general['qr'] ) {
|
|||||||
|
|
||||||
if ( ISQ::$social['linkedin'] ) { echo '<span onclick="window.open(\'https://www.linkedin.com/shareArticle?mini=true&url=' . $encoded_shorturl . '&title=' . $encoded_title . '\',\'_blank\',\'width=550,height=380\')" class="button social-button linkedin" title="Share on LinkedIn">' . file_get_contents('public/images/linkedin.svg') . '</span>'; }
|
if ( ISQ::$social['linkedin'] ) { echo '<span onclick="window.open(\'https://www.linkedin.com/shareArticle?mini=true&url=' . $encoded_shorturl . '&title=' . $encoded_title . '\',\'_blank\',\'width=550,height=380\')" class="button social-button linkedin" title="Share on LinkedIn">' . file_get_contents('public/images/linkedin.svg') . '</span>'; }
|
||||||
|
|
||||||
if ( ISQ::$social['googleplus'] ) { echo '<span onclick="window.open(\'https://plus.google.com/share?url=' . $encoded_shorturl . '\',\'_blank\',\'width=550,height=380\')" class="button social-button googleplus" title="Share on LinkedIn">' . file_get_contents('public/images/googleplus.svg') . '</span>'; }
|
if ( ISQ::$social['googleplus'] ) { echo '<span onclick="window.open(\'https://plus.google.com/share?url=' . $encoded_shorturl . '\',\'_blank\',\'width=550,height=380\')" class="button social-button googleplus" title="Share on Google+">' . file_get_contents('public/images/googleplus.svg') . '</span>'; }
|
||||||
|
|
||||||
|
if ( ISQ::$social['vk'] ) { echo '<span onclick="window.open(\'https://vk.com/share.php?url=' . $encoded_shorturl . '\',\'_blank\',\'width=550,height=380\')" class="button social-button vk" title="Share on VK">' . file_get_contents('public/images/vk.svg') . '</span>'; }
|
||||||
?>
|
?>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- QR code -->
|
<?php if ( ISQ::$general['qr'] ) : ?>
|
||||||
<?php if ( ISQ::$general['qr'] ) { echo '<h2>' . yourls__( 'QR code', 'isq_translation' ) . '</h2><p>' . yourls__( 'Share your link with external devices', 'isq_translation' ) . '</p>' . $qrCode; } ?>
|
<!-- QR code -->
|
||||||
|
<h2><?php yourls_e( 'QR code', 'isq_translation' ); ?></h2>
|
||||||
|
<p><?php yourls_e( 'Share your link with external devices', 'isq_translation' ); ?></p>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
// PHP QR Code is LGPL licensed
|
||||||
|
include('public/phpqrcode/qrlib.php');
|
||||||
|
|
||||||
|
echo QRcode::svg( $shorturl, 'url-qr-code', false, QR_ECLEVEL_L, '600' );
|
||||||
|
endif; ?>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?php include('footer.php'); ?>
|
<?php include('footer.php'); ?>
|
||||||
|
|||||||
Reference in New Issue
Block a user