Achetez! Caractéristiques Téléchargements
Page 2 sur 2 PremierPremier 12
Résultats 11 à 20 sur 20

Discussion: FAQ

  1. N ° 11
    Michał Podbielski (vBET Personnel) vBET Avatar
    Date d'inscription
    Octobre 2009
    Messages
    2 720
    Entrées dans le blog
    1

    Par défaut Comment support multi-langue est efficace?

    Tout d'abord mod supporte la langue par défaut de l'utilisateur. Il est situé dans le formulaire d'inscription et peut être changé en CP de l'utilisateur. Donc, si l'utilisateur a mis sa langue par défaut, alors il ne fait rien ... Juste messages écrit dans sa langue, et vBET prend soin de tout. Dans un tel cas - lorsque l'utilisateur a mis la langue par défaut il est supposé que message entier (y compris le titre) est écrit dans sa langue par défaut. Il sera configurable bientôt, mais à son moment, il est simple hypothèse: si l'utilisateur a mis en langue par défaut et il est différent de la langue par défaut du forum, alors chacun son message est dans la langue dont il choisir comme son défaut.

    Vous pouvez également créer des messages en plusieurs langues, où seules certaines parties du message sont dans des langues différentes. C'est très facile - tout ce que vous devez faire c'est mettre du texte écrit en différentes langues à l'intérieur du lang BBCode. Elle prend un paramètre qui est le code langue. Autrement dit, si vous voulez écrire quelque chose en polonais, puis BBCode ressemble à ceci lang = pl.
    Voir par exemple l'ensemble (des espaces dans BBCode ajoutée pour éviter d'évaluation):
    [ lang=pl]Przykład tekstu po polsku[ /lang]

    Cet exemple (sans les espaces dans BBCode) vous donnera un tel résultat:
    Texte traduit automatiquement à partir de: polonais: Français
    Le texte traduit
    Exemple de texte en polonais
    Texte original


    Il ya aussi un autre BBCode qui fonctionne exactement comme lang BBCode, mais il est réservé aux titres messages seulement. Il est langtitle BBCode - il est utilisé par vBET pour marquer automatiquement un message d'utilisateur qui définissent leur langue par défaut autre que la langue par défaut du forum. Il ne doit pas être utilisé manuellement, et si vous voulez l'utiliser de telle manière, alors n'oubliez pas de mettre ensemble du message de l'intérieur lang BBCode en utilisant le code même langue que paramètre dans BBCodes stand (sinon certaines parties de canaux RSS peuvent être traduits ne se traduit pas de façon appropriée, mais les messages seront affichés correctement).

    Il est vraiment plus un BBCode, mais ce n'est pas pour la traduction - en fait c'est de garder le texte non traduit. Si vous voulez un peu de texte, je poste pour ne pas être traduit, de simples à l'intérieur de notranslate BBCode. Il peut être utile dans le cas de certains termes, ou une citation de quelques poèmes etc

    For example this text will never be translated. You can check it by clicking some translation flag - you will see this part will stay in original

  2. # 12
    Michał Podbielski (vBET Personnel) vBET Avatar
    Date d'inscription
    Octobre 2009
    Messages
    2 720
    Entrées dans le blog
    1

    Par défaut Comment traduire les pages en dehors répertoire du forum?

    Si votre forum est en sous-répertoire et vous avez des pages à l'extérieur, qui sont manipulés par vBulletin, alors vBET soutiendra la traduction pour les pages

    Tout ce que vous avez à faire est définir des règles appropriées dans Htaccess. de fichiers dans le répertoire parent forum:
    Code:
    RewriteRule ^/?(af|sq|ar|be|bg|ca|zh-CN|hr|cs|da|nl|en|et|tl|fi|fr|gl|de|el|iw|hi|hu|is|id|ga|it|ja|ko|lv|lt|mk|ms|mt|no|fa|pl|pt|ro|ru|sr|sk|sl|es|sw|sv|zh-TW|th|tr|uk|vi|cy|yi)/$ index.php?language=$1&vbet_outside=true [L,QSA]
    RewriteRule ^/?(af|sq|ar|be|bg|ca|zh-CN|hr|cs|da|nl|en|et|tl|fi|fr|gl|de|el|iw|hi|hu|is|id|ga|it|ja|ko|lv|lt|mk|ms|mt|no|fa|pl|pt|ro|ru|sr|sk|sl|es|sw|sv|zh-TW|th|tr|uk|vi|cy|yi)/(.*)?$ $2?language=$1&vbet_outside=true [L,QSA]
    Et pour chaque sous-répertoire dans votre domaine qui devrait être pris en charge par vBET (Sans répertoire forum lui-même) d'ajouter cette règle dans l'intérieur du sous-répertoire htaccess en charge.:
    Code:
    RewriteCond %{QUERY_STRING} !vbet_outside=true
    RewriteRule ^(.*)$ $1?vbet_outside=true [L,QSA]
    Donc, si le répertoire parent du forum doivent également être soutenu, il faut toutes ces règles.

    Si vous aussi vous souhaitez conserver le suivi de traduction pour ceux que vous avez à:
    1. Allumez URL de suivi en dehors du forum répertoire dans les options dans le CP admin
    2. Assurez-vous que les liens vers ces pages sont ABSOLU (Commence donc à partir de http)

    Assurez-vous aussi qu'il ya de base balise dans la sortie HTML généré pour les pages hors répertoire forum. Si ce n'est pas ensuite modifier modèle qui génère ces pages et ajouter le code ci-dessous en tout lieu entre les <head> et </ Head>:
    Code:
    <vb:if condition="!$_REQUEST['language']"><base href="{vb:raw vboptions.bburl}/" /></vb:if>
    Dernière édition par vBET; 08/10/10 au 11:14.

  3. N ° 13
    Michał Podbielski (vBET Personnel) vBET Avatar
    Date d'inscription
    Octobre 2009
    Messages
    2 720
    Entrées dans le blog
    1

    Par défaut Comment vérifier que je suis bloqué par mon fournisseur de traduction?

    Si tout fonctionnait bien et soudain il pas une possibilité est que vous avez problème avec votre fournisseur de traduction (les autres sont: une certaine configuration a été modifié, nouveau mod ajouté, certains logiciels mis à jour).


    Il est très facile de vérifier que vous avez à faire problème avec API Google v1 ou il est ailleurs. Pour vérifier s'il vous plaît juste qu'elle créer un nouveau fichier php avec ce contenu:
    Ce fichier vous pouvez trouver dans vBET emballer dans do-not-upload/tools/googletest.php
    PHP Code:
    <?php
    echo "Starting translation test for Google API v1<br/>\n";
    $connection curl_init();
    curl_setopt($connectionCURLOPT_URL'http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&format=html&langpair=pl|en&q=witaj');
    curl_setopt($connectionCURLOPT_USERAGENT'Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)');
    //curl_setopt($connection, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($connectionCURLOPT_RETURNTRANSFER1);
    $time microtime(true) * 1000;
    $result curl_exec($connection);
    $time microtime(true) * 1000 $time;
    echo 
    'Test result: '.$result."<br/>\n";
    echo 
    'Test error: '.curl_error($connection)."<br/>\n";
    curl_close($connection);
    echo 
    'Connection time (ms): '.$time;
    ?>
    Dans le cas où vous utilisez Google API v2 utiliser ce code - également ce fichier sera inclus dans notre prochaine version:
    PHP Code:
    <?php
    require_once('./global.php');
    echo 
    "Starting translation test for Google API v2<br/>\n";
    $connection curl_init();
    curl_setopt($connectionCURLOPT_URL'https://www.googleapis.com/language/translate/v2?key='.$vbulletin->options['vbenterprisetranslator_googleapikeyv2'].'&format=html&q=witaj&target=en');
    curl_setopt($connectionCURLOPT_USERAGENT'Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)');
    //curl_setopt($connection, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($connectionCURLOPT_RETURNTRANSFER1);
    $time microtime(true) * 1000;
    $result curl_exec($connection);
    $time microtime(true) * 1000 $time;
    echo 
    'Test result: '.$result."<br/>\n";
    echo 
    'Test error: '.curl_error($connection)."<br/>\n";
    curl_close($connection);
    echo 
    'Connection time (ms): '.$time;
    ?>
    Transférez-le sur votre serveur (la racine de votre forum) et de mettre à l'URL dans votre navigateur. Si tout est ok, vous obtiendrez réponse:
    Code:
    Starting transaltion test
    Test result: {"responseData": {"translatedText":"Welcome"}, "responseDetails": null, "responseStatus": 200}
    Test error:
    Comme vous le voyez d'erreur n'ont aucune valeur et le résultat ont un statut 200. Cela signifie: tout est ok.

    Si vous où bloqués réponse de Google ressemble à cela:
    Code:
    {"responseData": null, "responseDetails": "Suspected Terms of Service Abuse, please contact ajaxapis-support@google.com.", "responseStatus": 403}
    Si vous où bloqué - il suffit d'écrire à Google que le message dit. Il permettra de trouver notre la raison, c'est peut-être une erreur, peut être aurez vous changer quelque chose de s'intégrer au mieux à TOS de Google. Quoi qu'il en soit Google donne accès facilement en arrière quand le problème est résolu

    Si vous avez des problèmes de réseau, puis résultat sera vide et d'erreur vous dira ce qui se passe (à savoir: Impossible de résoudre l'hôte 'ajax.googleapis.com'). Notez dans ce cas, il peut être un peu avant, vous verrez de sortie (jusqu'à ce raccordement est chronométré le haut).
    Réseau exemple de problème:
    Code:
    Starting translation test
    Test result:
    Test error: Failed to connect to 74.125.95.95: Network is unreachable
    Connection time (ms): 70.96484375
    Que devez-vous faire?
    Premièrement: vérifier que le firewall ne bloque pas l'accès à Google.
    Deuxièmement: vous devez contacter votre hébergeur et lui demander à propos problème de connexion

    Si vous ne voyez que "Démarrage du test de traduction» ou rien du tout, puis très probablement que vous n'avez pas installé CURL module dans votre PHP.


    Si vous utilisez Microsoft API, créer de nouveaux fichier php et de mettre ce code à l'intérieur.:
    PHP Code:
    <?php
    require_once('./global.php');
    echo 
    "Starting translation test MS<br/>\n";
    $connection curl_init();
    curl_setopt($connectionCURLOPT_URL'http://api.microsofttranslator.com/V2/Ajax.svc/Translate?appId='.$vbulletin->options['vbenterprisetranslator_microsoftappid'].'&from=pl&to=en&options={%22ContentType%22:%22text/html%22}&text=witaj');
    curl_setopt($connectionCURLOPT_USERAGENT'Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)');
    //curl_setopt($connection, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($connectionCURLOPT_RETURNTRANSFER1);
    $time microtime(true) * 1000;
    $result curl_exec($connection);
    $time microtime(true) * 1000 $time;
    echo 
    'Test result: '.$result."<br/>\n";
    echo 
    'Test error: '.curl_error($connection)."<br/>\n";
    curl_close($connection);
    echo 
    'Connection time (ms): '.$time;
    ?>
    Que de télécharger sur votre serveur, dans votre dossier Forum racine, et mettre ce lien dans votre navigateur.
    Vous devriez voir quelque chose comme ceci:
    PHP Code:
    Starting translation test
    Test result
    "Hello"
    Test error:
    Connection time (ms): 272.083984375 
    Si quelque chose ne va pas vous obtiendrez une erreur, c'est-à-dire si vous mettez mauvais Microsoft ID:
    PHP Code:
    Starting translation test
    Test result
    "ArgumentException: Invalid appId Parameter name: appId xxx"
    Test error:
    Connection time (ms): 416.24194335938 
    Que vous devez coller votre identifiant Microsoft attentivement une fois de plus

    Vous pouvez également obtenir ce message d'erreur (avec une valeur d'ID différent), ce qui signifie que vous êtes bloqué par microsoft:
    PHP Code:
    Starting translation test MS
    Test result
    "InvalidOperationException: : ID=3641.V2_Json.Translate.365033CA"
    Test error
    Connection time (ms): 237.756103516 

    Dans ce cas, vous devrez envoyer un mail au support microsoft : mtcont@microsoft.com
    ce contenu, y compris :
    -votre id de traducteur API de microsoft
    -complète le code d'erreur, c'est-à-dire : InvalidOperationException:: ID=3641.V2_Json.Translate.365033CA
    -décrire le problème, - lorsqu'il apparaît, etc..
    Dernière édition par r.dziadusz ; 14/10/11 à 11:37.

  4. N ° 14
    vBulletin Enterprise Translator (vBET) Personnel
    Date d'inscription
    Mai 2010
    Messages
    1000

    Par défaut Je reçois le message e-mail au sujet de MySQL server disparu question. Quel est le problème?

    Est-ce que le serveur a expiré et a fermé la connexion.
    Réglez la variable wait_timeout pour le serveur mysql pour une valeur supérieure.

    Ici vous pouvez trouver une solution complète:
    Serveur MySQL disparu d'erreur expliqué

  5. N ° 15
    vBulletin Enterprise Translator (vBET) Personnel
    Date d'inscription
    Mai 2010
    Messages
    1000

    Par défaut J'ai dans mon url langtitle et il n'est pas traduit, est-il un problème?

    Vous avez besoin d'intégrer et de changement vBSEO fichiers fonctions:

    l'instruction complète que vous avez dans le faire-pas-télécharger le dossier (readme.html) - Une partie de la vBSEO l'intégration (intégration avec d'autres mods)

  6. # 16
    vBulletin Enterprise Translator (vBET) Personnel
    Date d'inscription
    Mai 2010
    Messages
    1000

    Par défaut L'URL comprend le accentués. Est-il indexé par Google?

    Si vous avez dans votre URL:
    Code:
    caracter%C3%ADstica
    Probablement que vous utilisez le navigateur IE. IE mauvais navigateur affiche url avec les accents.
    Essayez de vérifier ce lien dans un autre navigateur (Opera, Firefox),
    devraient être traduites correctement.
    C'est un problème de navigateur. Google explore ce lien correctement (avec les accents).

  7. N ° 17
    Michał Podbielski (vBET Personnel) vBET Avatar
    Date d'inscription
    Octobre 2009
    Messages
    2 720
    Entrées dans le blog
    1

    Par défaut Comment configurer le support pour les API de traduction d'autres?

    Depuis la version 4.4.0 vBET supporte de nombreux fournisseurs de traduction. Par défaut, seuls Google va être utilisé, mais il est facile à changer.

    Donc, pour soutenir d'autres API de traduction jut aller à Admin CP -> vBET - Fournisseurs de traduction> et de désactiver l'option Utilisez Google uniquement. Ce n'est pas ce qui est nécessaire pour soutenir les API de traduction d'autres

    Après que les vBET va utiliser l'API de traduction d'autres toujours quand c'est possible. Donc, si une certaine traduction est uniquement prise en charge par Google, Google sera utilisée, mais si d'autres API pris en charge est capable de faire la traduction, puis par défaut sera toujours choisi un autre fournisseur que Google.

    Vous êtes également en mesure de déterminer exactement ce qui prestataire devrait être utilisé pour la paire spécifique du langage (de-à). Et vous êtes capable de faire cela pour chaque paire de langues possibles. Donc, si vous voulez avoir un contrôle complet et vous-même de déterminer quel moteur de traduction doit être utilisée pour paire de langues, alors vous pouvez le faire par des fichiers de configuration à partir du répertoire vbet_translation_options. Chaque fichier comprend le code de langue à la fin du nom et ce qui détermine «De». Pour déterminer 'To' vous devez ouvrir le fichier et changer la ligne appropriée dans le tableau PHP.

    Par exemple. Si vous souhaitez définir la traduction de l'anglais au polonais à être fait par Microsoft API de traduction. Puis:
    1. Ouvrir le fichier / Vbet_translation_options / vbenterprisetranslator_from_fr. Php
    2. Trouver Conformément à la cartographie code de langue polonaise et nom de l'ensemble du traducteur choisi:
    Code:
    'pl'=>'Microsoft',
    Donc, ce jeux Microsoft API de traduction en tant que fournisseur de traduction pour des traductions faites 'De' anglais (fr), «À» polonais (pl). Piece of cake
    Bien sûr, cela ne fonctionnera que lorsque l'option Utilisez Google uniquement est désactivé. C'est juste par exemple - s'il vous plaît n'oubliez pas que vous ne devez pas faire cela. Par défaut il est déjà configuré pour ne pas utiliser Google à chaque fois que c'est possible.

    Aussi s'il vous plaît garder à l'esprit que certaines API de traduction peut exiger de fixer des paramètres d'identification. Tous ces paramètres, avec une description détaillée, vous trouverez dans le groupe d'options Admin CP -> vBET - Fournisseurs de traduction>

    REMARQUE: depuis vBET 3.5.1 et vBET 4.4.3 vBET prend en charge la file d'attente de fournisseurs. Partout où la paire de langue est soutenue par plus d'un fournisseur, vous verrez les valeurs séparées par des virgules avec des noms de fournisseurs. Par exemple :
    Code:
    'pl'=>'Microsoft,Google',
    Cela signifie que tant que Microsoft est disponible vBET utilisera Microsoft et si elle n'est pas disponible alors vBET fera passer automatiquement à Google. Dans un tel cas vBET marque fournisseur comme indisponible et vérifie chaque heure (par tâche planifiée) est elle disponible maintenant. Si oui, alors vBET basculera vers le fournisseur préféré.
    Vous êtes capable de modifier l'ordre dans la file d'attente de fournisseurs ou de supprimer certains fournisseur tout à partir de là. Veuillez noter que vous ne pouvez pas utiliser les espaces entre les valeurs.

    De cette façon vBET seront en mesure de fournir des traductions même après que les limites dans un seul fournisseur sont portée.

    Également dans le cas lorsque tous les prestataires ne sont pas disponibles vBET utilisera le traducteur factice qui affiche simplement le texte original. Dans un tel cas, vous puissiez voir pas traduit dans les pages traduites. C'est la meilleure stratégie que l'affichage des textes vides et quelque chose doit être affichée. Veuillez noter que ces résultats ne soit pas mise en cache, ce test basculera vers traduit dès que n'importe quel fournisseur de traduction sera à nouveau disponible.
    Dernière édition par r.dziadusz; 10/05/11 au 16:36.

  8. # 18
    vBulletin Enterprise Translator (vBET) Personnel
    Date d'inscription
    Août 2011
    Messages
    429

    Par défaut Comment atteindre vos limites de traduction plus lents et limiter vos dépenses avec les traductions rémunérées

    1. Ajouter à vBET pages ignorées comme contenu que vous pensez n'est pas important pour les traductions
    Exemple de quelques pages qui peuvent être considérées comme sans importance pour la traduction par certains propriétaires forum: pages de membres, calendrier, galeries de photos.

    2. Utiliser les services de traduction libre d'abord
    Première version gratuite d'utilisation de traductions API: Microsoft, Apertium-que de tourner sur rémunéré Google API v2

    3. Limite langues prises en charge à ceux qui vous semblent les plus importants pour votre forum. Et même alors, il limite plus - après le temps que vous pouvez ajouter d'autres langues si vous trouvez que les coûts sont OK pour vous. Ajouter de nouvelles de temps en temps lorsque votre cache est plein
    Nous fournissons le soutien pour les 53 langues mais pour certains plus petite quantité de forum est meilleure, aussi vous pouvez mettre en cache vos données aussi longtemps que vous le souhaitez, afin que vous pouvez ajouter de nouvelles langues un après l'autre, sans atteindre vos limites !

    4. Ne pas effacer votre cache de base de données et désactiver le nettoyage automatique
    N'oubliez pas d'améliorer la valeur ttl cache ou même désactiver it(0) - vous pouvez le trouver ici : admincp - > vBET Cache - Cache> Base de données - Temps Cache> To Live (TTL)

    5. Évitez traduction de SPAM, en vérifiant les messages jusqu'à ce qu'elles soient publiées.
    Ne se traduit pas, de l'information non désirée permettra de réduire votre nombre de traductions!

    6. Cherchez d'autres services de traduction dont les modalités de service permet de l'ajouter dans vBET et laissez-le nous savoir au sujet de ces - se fera un plaisir de soutien que les API de traduction que possible
    Nous sommes à la recherche de nouveaux fournisseurs de traduction libre, nous aider et t'aider, nous faire connaître de nouveaux fournisseurs de traduction ! Maintenant vBET est créée de façon à soutenir de nombreux fournisseurs, donc si les conditions d'utilisation nous mettre en œuvre, nous le ferons!

    7. Réduire le montant de votre demande par seconde (seulement pour les traductions de Google API v2)
    Vous devez changer et d'augmenter, mais n'oubliez pas de grande valeur va ralentir votre forum dramticaly: admincp -> vBET -> options de traduction - > retarder entre

    8. Si vous utilisez Google API v2, définissez vos propres limites.
    Vous pouvez définir vos propres limites et contrôler vos frais de traduction ! Just go : https://code.google.com/APIs/console/b/0/ -> quotas
    Dernière édition par r.dziadusz ; 25/11/11 à 10:34.

  9. N ° 19
    vBulletin Enterprise Translator (vBET) Personnel
    Date d'inscription
    Août 2011
    Messages
    429

    Par défaut Texte non traduite

    Si vous voyez le texte non traduite, qu'il n'est pas vBET bug ou une erreur. Il apparaît lorsque vous avez atteint vos limites dans tous les tranlation API - vous pouvez facilement vérifier ici :
    AdminCP -> vBET -> disponibilité de fournisseurs de traduction
    REMARQUE:
    Il est fortement unrecommended de modifier ces valeurs manuellement, becouse vBET Il fera lui-même !

    Dans cette situation (il n'y a aucune traduction disponible API) vBET utilisera traducteur factice. Cela signifie que traductions déjà mises en cache seront affichées et pour le texte original de traductions non existant sera montré (non vide comme avant - cela peut se produire uniquement lorsque le fournisseur refuse translation).

    Les fournisseurs de traduction fixer des limites (v1 Microsft Api traduction et Google Api traduction ont leurs propres limites, en cas de traduction de Google Api v2 vous pouvez lui affecter votre propre) et depuis les versions 4.4.3 et 3.3.8 vBET Lorsque plus d'un fournisseur prend en charge la traduction puis vBET utilisera un préférée d'abord.

    Et dans l'affaire si une traduction API n'est pas disponible - qui signifie que vous avez atteint votre limite- vBET fera passer à un autre et dans toutes les 10 minutes vBET vérifiera est la traduction API disponible à nouveau.

    S'il vous plaît noter que vous devez désactiver l'option Utilisez Google uniquement et clés de API approprié d'utiliser la file d'attente de fournisseurs. Pour plus de détails, veuillez consulter :
    Admin CP -> vBET - Fournisseurs de traduction>
    Vous pouvez également vérifier si vous atteignez votre limite par exécuter ces tests TESTS
    Dernière édition par r.dziadusz ; 26/10/11 à 15:05.

  10. # 20
    vBulletin Enterprise Translator (vBET) Personnel
    Date d'inscription
    Août 2011
    Messages
    429

    Par défaut Traduction partielle

    Traduction de la partie est causée par atteindre vos limites, mais elle pas une erreur !

    Simplement c'est-à-dire :
    1. Quelqu'un a écrit le message et il a été traduit parce que vous n'atteignez pas vos limites - limites sont définies par les fournisseurs de traduction (dans Google Api traduction v2, que vous pouvez le définir par votre propre).

    2. Lorsque le message suivant a été écrit, a été atteint les limites et les fournisseurs de traduction indisponibles donc vous verrez sur votre page déjà mise en cache de texte de traductions du cache et contenu original, pour le prochain message, parce que les services de traduction n'étaient pas disponibles.

    3. Après que n'importe quel fournisseur de traduction est de nouveau disponible, non traduite, original message sera traduit. vBET vérifie la traduction disponibilité API dans toutes les 10 minutes
    Dernière édition par r.dziadusz ; 11/08/11 à 19:06.

Page 2 sur 2 PremierPremier 12

Tags pour ce sujet

Règles des messages

  • Vous ne peut pas créer de nouvelles discussions
  • Vous ne peut pas réponses après
  • Vous ne peut pas pièces jointes après
  • Vous ne peut pas modifier vos messages
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27